Skip to content

AsyncCache: Adds support for stack trace optimization during exceptions for AsyncCache and AsyncCacheNonblocking#5069

Merged
kirankumarkolli merged 10 commits intomasterfrom
ananth/openai-exception-handling-asynccache
Mar 26, 2025
Merged

AsyncCache: Adds support for stack trace optimization during exceptions for AsyncCache and AsyncCacheNonblocking#5069
kirankumarkolli merged 10 commits intomasterfrom
ananth/openai-exception-handling-asynccache

Conversation

@ananth7592
Copy link
Copy Markdown
Member

@ananth7592 ananth7592 commented Mar 17, 2025

Pull Request Template

Description

This PR addresses the issue of shared exception objects in the AsyncCache class, which was causing significant performance degradation and memory bloat recently for open AI .

The fix involves creating shallow copies of known offenders and rethrowing the rest. This approach ensures that each AsyncCache.GetAsync call receives its own exception instance, preventing the dangerous growth of the exception object's StackTrace and reducing GC overhead.

All ICloneable implemenations of exceptions will benefit from this.

https://learn.microsoft.com/en-us/dotnet/api/system.icloneable?view=net-9.0

Key changes:

  • Added support to post-process the exception in above mentioned two cache classes that creates a shallow copy of specific exception types to prevent stack trace proliferation and rethrows them, while propagating all other exceptions unchanged.
  • Added support for any exception that is ICloneable supported , TimeoutException and TaskCanceledException in this drop
  • Improved exception handling to avoid shared exception objects across threads.

Feature is enabled by default. To turn it off, set EnableAsyncCacheExceptionNoSharing CosmosClientOptions to false

Proof of testing:

Repro Steps
To reproduce the issue, I followed these high-level steps:

  • Create a Cosmos client with the necessary settings to preempt gateway calls for address refresh to fail with a specific exception.

  • Create a TaskCompletionSource that waits until all the threads are created.

  • Initiate calls to createItem that will eventually block, with one of them erroring out with the pre-set exception.

  • Observe the exception storm as the same exception trace is copied over to all the threads.

After the fix

  • Tested with TimeoutException (2K Threads) and TaskCanceledException (10K threads) using TaskCompletionSource with up to 10,000 threads without issues on the devbox.

  • Implemented the fix in AsyncNonBlockingCache by creating shallow copies of known offenders and rethrowing the rest.

  • Re-ran the setup and observed a significant reduction in the number of stack trace frames.

TaskCancelledExcpetion with 10K threads ( Even the file size is giving away how bad the stack trace profileration problem was )

TaskCancExceptionWithFix.log

Filesize: 10 KB
Standard Output: 
With cache fix and 10K threads 4923736 bytes allocated in (Gen0:0 1:0 2:0) Frames=2

TaskCancExceptionWithoutFix.log

Filesize: 1,168KB
Standard Output: 
Without cache fix and 10K threads 5612888 bytes allocated in (Gen0:0 1:0 2:0) Frames=2

TImeoutException with 2K threads

TimeoutExceptionWithFix.log
TimeoutExceptionWithoutFix.log

Type of change

Please delete options that are not relevant.

  • [] Bug fix (non-breaking change which fixes an issue)
  • [] New feature (non-breaking change which adds functionality)
  • [] Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • [] This change requires a documentation update

Closing issues

To automatically close an issue: closes #IssueNumber

@ananth7592 ananth7592 force-pushed the ananth/openai-exception-handling-asynccache branch 2 times, most recently from f96dd1f to 1ef6ec3 Compare March 18, 2025 00:02
Copy link
Copy Markdown
Contributor

@NaluTripician NaluTripician left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any unit testing we can do to verify change?

@ananth7592
Copy link
Copy Markdown
Member Author

Is there any unit testing we can do to verify change?

This is more of a performance optimization and will be materialized as such in high scale scenarios. Hence, I performed a local repro with high concurrency and captured the performance improvements in the log attached.

Pilchie
Pilchie previously approved these changes Mar 18, 2025
Copy link
Copy Markdown
Member

@Pilchie Pilchie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine to me.

Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/Routing/AsyncCache.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
@ananth7592 ananth7592 force-pushed the ananth/openai-exception-handling-asynccache branch from 1ef6ec3 to 235c8f1 Compare March 18, 2025 21:35
@ananth7592 ananth7592 force-pushed the ananth/openai-exception-handling-asynccache branch 2 times, most recently from b927aaf to 6e9fdee Compare March 20, 2025 19:01
@ananth7592 ananth7592 changed the title Enhancement: Adds Async Cache and Async Cache Nonblocking exception handling changes Enhancement: Adds support for stack trace optimization during exceptions for Async Cache and Async Cache Nonblocking Mar 20, 2025
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/ExceptionHandlingUtility.cs Outdated
- Added support to post-process the exception in above mentioned two cache classes that
  creates a shallow copy of specific exception types to prevent stack trace proliferation and
  rethrows them, while propagating all other exceptions unchanged.
 - Added support for TaskCanceledException, TimeoutException and OperationCanceledException in this drop
@ananth7592 ananth7592 force-pushed the ananth/openai-exception-handling-asynccache branch from 867fbf3 to 182c3a0 Compare March 20, 2025 20:29
Comment thread Microsoft.Azure.Cosmos/src/Routing/AsyncCache.cs Outdated
Comment thread Microsoft.Azure.Cosmos/src/Routing/AsyncCacheNonBlocking.cs Outdated
kirankumarkolli added a commit that referenced this pull request Mar 20, 2025
…ing `CosmosClientOptions` (#5073)

# Pull Request Template

## Description

This PR enables `AsyncCache` and `AsyncCacheNonBlocking` Exception
Handling Using `CosmosClientOptions`. This new client option will
eventually used to get exception handling optimization (see PR #5069)
shipped behind this new client option:
`EnableAsyncCacheExceptionSharing`.

By default this option is set to `true`.

## Type of change

Please delete options that are not relevant.

- [x] New feature (non-breaking change which adds functionality)

## Closing issues

To automatically close an issue: closes #IssueNumber

---------

Co-authored-by: Kiran Kumar Kolli <kirankk@microsoft.com>
@ananth7592 ananth7592 requested a review from khdang as a code owner March 20, 2025 22:03
PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 1, 2026
Updated
[Microsoft.Azure.Cosmos](https://github.com/Azure/azure-cosmos-dotnet-v3)
from 3.47.2 to 3.57.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Azure.Cosmos's
releases](https://github.com/Azure/azure-cosmos-dotnet-v3/releases)._

## 3.57.1

### <a name="3.57.1"/>
[3.57.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.57.1) -
2026-2-20

#### Fixed

- [5613](Azure/azure-cosmos-dotnet-v3#5613)
CrossRegionHedgingAvailabilityStrategy: Fixes `ArgumentNullException`
race condition in hedging cancellation


## 3.57.0

### <a name="3.57.0"/>
[3.57.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.57.0) -
2026-1-15

#### Added
- [5511](Azure/azure-cosmos-dotnet-v3#5511)
Tracing: Adds tracing improvements for pkrange refresh calls
- [5515](Azure/azure-cosmos-dotnet-v3#5515)
[FullTextPolicy]: Adds tests for full text policy multi-language
support.
- [5529](Azure/azure-cosmos-dotnet-v3#5529)
[Thin Client Integration]: Adds support for store procedure in
thinclient mode.
- [5535](Azure/azure-cosmos-dotnet-v3#5535)
[Thin Client Integration]: Adds thinclient header for refresh account
data requests.

#### Fixed

- [5512](Azure/azure-cosmos-dotnet-v3#5512)
ChangeFeed: Fixes crts field being nullable
- [5517](Azure/azure-cosmos-dotnet-v3#5517)
SystemTextSerializer: Fixes serialization to preserve polymorphic
serialization when base type is marked [JsonPolymorphic]
- [5498](Azure/azure-cosmos-dotnet-v3#5498)
Query: Fixes hybrid search query plan optimization to be enabled by
default
- [5543](Azure/azure-cosmos-dotnet-v3#5543)
Query: Fixes GetItemQueryIterator to honor the supplied (optional)
FeedRange
- [5541](Azure/azure-cosmos-dotnet-v3#5541)
Upsert/Batch: Fixes bug where RequestOptions are not honored for Upsert
requests in Bulk Mode
- [5544](Azure/azure-cosmos-dotnet-v3#5544)
Query : Fixes LINQ API to support builtin functions - ARRAY_CONTAINS_ALL
and ARRAY_CONTAINS_ANY

## 3.57.0-preview.1

### <a name="3.57.0-preview.1"/>
[3.57.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.57.0-preview.1)
- 2025-12-16
#### Fixed
- [5528](Azure/azure-cosmos-dotnet-v3#5528)
Semantic Reranking: Refactors RerankResult.Document to return string
type


## 3.57.0-preview.0

### <a name="3.57.0-preview.0"/>
[3.57.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.57.0-preview.0)
- 2025-11-25
#### Added
- [5445](Azure/azure-cosmos-dotnet-v3#5445)
Semantic Rerank: Adds Semantic Rerank API


## 3.56.0

### <a name="3.56.0"/>
[3.56.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.56.0) -
2025-11-25

#### Fixed

- [5550](Azure/azure-cosmos-dotnet-v3#5550)
Owner not found: Fixes substatus code 1003 for item operations when
container doesn't exist (Direct mode)


## 3.56.0-preview.0

### <a name="3.56.0-preview.0"/>
[3.56.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.56.0-preview.0)
- 2025-11-14
#### Fixed
- [5260](Azure/azure-cosmos-dotnet-v3#5260) HPK:
Fixes Lengthaware normalized EPK comparators as default (only in
preview)

## 3.55.0

### <a name="3.55.0"/>
[3.55.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.55.0) -
2025-11-14
#### Added
- [5462](Azure/azure-cosmos-dotnet-v3#5462)
[VectorIndexPath]: Adds GA IndexingSearchListSize and
VectorIndexShardKey
- [5470](Azure/azure-cosmos-dotnet-v3#5470)
Change feed: Adds id and pk to ChangeFeedMetadata for delete operations
(Default policy excludes Previous for deletes)
- [5474](Azure/azure-cosmos-dotnet-v3#5474)
Binary Encoding: Adds support to DateTimeOffset type


#### Fixed
- [5469](Azure/azure-cosmos-dotnet-v3#5469)
BarrierRequests: Adds 410/LeaseNotFound(1022) fail-fast to cross-region
retries by retrying on primary (checks last replica response)
- [5475](Azure/azure-cosmos-dotnet-v3#5475)
Query: Fixes query advisor prefix url links to use aka.ms
- [5476](Azure/azure-cosmos-dotnet-v3#5476)
HttpTimeoutPolicy: Fixes QueryPlan retry gaps (Http POST but its Read)
- [5497](Azure/azure-cosmos-dotnet-v3#5497)
HttpTimeoutPolicy: Fixes PPAF and ThinProxy timeout polices to (6s, 6s,
10s) for both PointReads and NonPointReads


## 3.55.0-preview.1



## 3.55.0-preview.0

### <a name="3.55.0-preview.0"/>
[3.55.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.55.0-preview.0)
- 2025-10-2

> Note: FullTextScore query function now expects string value parameters
(e.g., FullTextScore(c.text, 'swim','run')); preview array syntax is no
longer supported.

#### Added

- [5368](Azure/azure-cosmos-dotnet-v3#5368)
VectorDataType: Adds Support for Float16 Data Type
- [5411](Azure/azure-cosmos-dotnet-v3#5411)
Hedging: Adds GA for adding hedging via RequestOptions
- [5412](Azure/azure-cosmos-dotnet-v3#5412)
Hedging: Adds back diagnostics filed Response Region to hedging request
diagnostics
- [5386](Azure/azure-cosmos-dotnet-v3#5386)
Build: Removes System.Net.Http and System.Text.RegularExpressions
package references

#### Fixed

- [5409](Azure/azure-cosmos-dotnet-v3#5409)
Query: Fixes to not use passthrough context for collections with HPK
- [5422](Azure/azure-cosmos-dotnet-v3#5422)
Diagnostics: Fixes race condition that can cause
InvalidOperationException in
CosmosOperationCancelledException.ToString()
- [5427](Azure/azure-cosmos-dotnet-v3#5427)
PPAF: Fixes issue where setting RequestTimeout to 0 second will cause
PPAF dynamic enablement to break

## 3.54.1



## 3.54.0

### <a name="3.54.0"/>
[3.54.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.54.0) -
2025-10-2

> Note: FullTextScore query function now expects string value parameters
(e.g., FullTextScore(c.text, 'swim','run')); preview array syntax is no
longer supported.

#### Added

- [5368](Azure/azure-cosmos-dotnet-v3#5368)
VectorDataType: Adds Support for Float16 Data Type
- [5411](Azure/azure-cosmos-dotnet-v3#5411)
Hedging: Adds GA for adding hedging via RequestOptions
- [5412](Azure/azure-cosmos-dotnet-v3#5412)
Hedging: Adds back diagnostics filed Response Region to hedging request
diagnostics
- [5386](Azure/azure-cosmos-dotnet-v3#5386)
Build: Removes System.Net.Http and System.Text.RegularExpressions
package references

#### Fixed

- [5409](Azure/azure-cosmos-dotnet-v3#5409)
Query: Fixes to not use passthrough context for collections with HPK
- [5422](Azure/azure-cosmos-dotnet-v3#5422)
Diagnostics: Fixes race condition that can cause
InvalidOperationException in
CosmosOperationCancelledException.ToString()
- [5427](Azure/azure-cosmos-dotnet-v3#5427)
PPAF: Fixes issue where setting RequestTimeout to 0 second will cause
PPAF dynamic enablement to break

## 3.54.0-preview.2

## <a name="3.54.0-preview.2"/>
[3.54.0-preview.2](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.54.0-preview.2)
- 2025-10-7

#### Fixed

- [5427](Azure/azure-cosmos-dotnet-v3#5427)
PPAF: Fixes issue where setting RequestTimeout to 0 second will cause
PPAF dynamic enablement to break

## 3.54.0-preview.1

### <a name="3.54.0-preview.1"/>
[3.54.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.54.0-preview.1)
- 2025-8-28
#### Added
- [5364](Azure/azure-cosmos-dotnet-v3#5364)
TokenCredentialCache: Adds a fallback mechanism to AAD scope override.
- [5361](Azure/azure-cosmos-dotnet-v3#5361)
Trace: Fixes thread safety issue in Trace class causing high CPU usage
and InvalidOperationException

## 3.54.0-preview.0

### <a name="3.54.0-preview.0"/>
[3.54.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.54.0-preview.0)
- 2025-8-13

#### Added

- [5253](Azure/azure-cosmos-dotnet-v3#5253)
License: Adds new license expression
- [5252](Azure/azure-cosmos-dotnet-v3#5252)
TokenCredentialCache: Adds an options to override AAD audience scope
- [5308](Azure/azure-cosmos-dotnet-v3#5308)
Query: Adds Weighted RRF capability to LINQ
- [5213](Azure/azure-cosmos-dotnet-v3#5213)
Query: Adds GetIndexMetrics LINQ extension method

#### Fixed

- [5273](Azure/azure-cosmos-dotnet-v3#5273)
Query: Fixes non streaming order by queries to not be tagged as
passthrough queries
- [5291](Azure/azure-cosmos-dotnet-v3#5291)
GatewayStoreClient: Fixes stream consumption bug in
GatewayStoreClient.CreateDocumentClientExceptionAsync
- [5317](Azure/azure-cosmos-dotnet-v3#5317)
Query: Fixes HybridSearchQueryTests to account for backend changes in
phrase search

## 3.53.2

### <a name="3.53.2"/>
[3.53.2](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.53.2) -
2025-10-7

#### Fixed

- [5427](Azure/azure-cosmos-dotnet-v3#5427)
PPAF: Fixes issue where setting RequestTimeout to 0 second will cause
PPAF dynamic enablement to break

## 3.53.1

### <a name="3.53.1"/>
[3.53.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.53.1) -
2025-8-28
#### Added
- [5364](Azure/azure-cosmos-dotnet-v3#5364)
TokenCredentialCache: Adds a fallback mechanism to AAD scope override.
- [5361](Azure/azure-cosmos-dotnet-v3#5361)
Trace: Fixes thread safety issue in Trace class causing high CPU usage
and InvalidOperationException

## 3.53.0

### <a name="3.53.0"/>
[3.53.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.53.0) -
2025-8-13

#### Added

- [5253](Azure/azure-cosmos-dotnet-v3#5253)
License: Adds new license expression
- [5252](Azure/azure-cosmos-dotnet-v3#5252)
TokenCredentialCache: Adds an options to override AAD audience scope
- [5308](Azure/azure-cosmos-dotnet-v3#5308)
Query: Adds Weighted RRF capability to LINQ
- [5213](Azure/azure-cosmos-dotnet-v3#5213)
Query: Adds GetIndexMetrics LINQ extension method

#### Fixed

- [5273](Azure/azure-cosmos-dotnet-v3#5273)
Query: Fixes non streaming order by queries to not be tagged as
passthrough queries
- [5291](Azure/azure-cosmos-dotnet-v3#5291)
GatewayStoreClient: Fixes stream consumption bug in
GatewayStoreClient.CreateDocumentClientExceptionAsync
- [5317](Azure/azure-cosmos-dotnet-v3#5317)
Query: Fixes HybridSearchQueryTests to account for backend changes in
phrase search


## 3.53.0-preview.1

### <a name="3.53.0-preview.1"/>
[3.53.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.53.0-preview.1)
- 2025-7-10

#### Fixed
- [5257](Azure/azure-cosmos-dotnet-v3#5257)
QueryPlan: Fixes 410 Gone exception on query plan calls in Non-X64
windows platforms

## 3.53.0-preview.0

### <a name="3.53.0-preview.0"/>
[3.53.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.53.0-preview.0)
- 2025-6-13

#### Added

- [5180](Azure/azure-cosmos-dotnet-v3#5180)
Query: Adds public PopulateQueryAdvice capability
- [5215](Azure/azure-cosmos-dotnet-v3#5215)
Client Encryption: Adds support for latest Cosmos package and bumps up
Encryption package for nuget release
- [5157](Azure/azure-cosmos-dotnet-v3#5157)
Query: Adds support for LINQ extension method for VectorDistance
> This also includes a Direct Package version update to `3.39.1` in PR
[#​5241](Azure/azure-cosmos-dotnet-v3#5241)
which includes the following:
- Rntbd Health Check Improvements Part 3: Enables Aggressive Timeout
Detection By Default.
 - Introduce East US 3 region in the SDK.

#### Fixed

- [5221](Azure/azure-cosmos-dotnet-v3#5221)
Query : Fixes Skip + Order By Bug
- [5218](Azure/azure-cosmos-dotnet-v3#5218)
Binary Encoding: Fixes DateTime Parsing Issue with Trailing Zeros in the
Milli-Seconds Precision
- [5234](Azure/azure-cosmos-dotnet-v3#5234)
Client Encryption: Fixes Encryption Release Pipeline

## 3.52.1

### <a name="3.52.1"/>
[3.52.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.52.1) -
2025-7-10

#### Fixed
- [5257](Azure/azure-cosmos-dotnet-v3#5257)
QueryPlan: Fixes 410 Gone exception on query plan calls in Non-X64
windows platforms



## 3.52.0

### <a name="3.52.0"/>
[3.52.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.52.0) -
2025-6-13

#### Added

- [5180](Azure/azure-cosmos-dotnet-v3#5180)
Query: Adds public PopulateQueryAdvice capability
- [5215](Azure/azure-cosmos-dotnet-v3#5215)
Client Encryption: Adds support for latest Cosmos package and bumps up
Encryption package for nuget release
- [5157](Azure/azure-cosmos-dotnet-v3#5157)
Query: Adds support for LINQ extension method for VectorDistance
> This also includes a Direct Package version update to `3.39.1` in PR
[#​5241](Azure/azure-cosmos-dotnet-v3#5241)
which includes the following:
- Rntbd Health Check Improvements Part 3: Enables Aggressive Timeout
Detection By Default.
 - Introduce East US 3 region in the SDK.

#### Fixed

- [5221](Azure/azure-cosmos-dotnet-v3#5221)
Query : Fixes Skip + Order By Bug
- [5218](Azure/azure-cosmos-dotnet-v3#5218)
Binary Encoding: Fixes DateTime Parsing Issue with Trailing Zeros in the
Milli-Seconds Precision
- [5234](Azure/azure-cosmos-dotnet-v3#5234)
Client Encryption: Fixes Encryption Release Pipeline

## 3.52.0-preview.0

### <a name="3.52.0-preview.0"/>
[3.52.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.52.0-preview.0)
- 2025-5-16

#### Added

- [5182](Azure/azure-cosmos-dotnet-v3#5182)
InMemoryLeaseContainer: Adds public API to use InMemoryLeaseContainer
with ChangeFeedProcessorBuilder
- [5170](Azure/azure-cosmos-dotnet-v3#5170)
PPAF: Adds Code to Fetch Enablement Flag Through Gateway Database
Account Response

#### Fixed

- [5197](Azure/azure-cosmos-dotnet-v3#5197)
GlobalEndpointManager: Fixes Observed exception
(ObjectDisposedException)

## 3.51.0

### <a name="3.51.0"/>
[3.51.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.51.0) -
2025-5-16

#### Added

- [5182](Azure/azure-cosmos-dotnet-v3#5182)
InMemoryLeaseContainer: Adds public API to use InMemoryLeaseContainer
with ChangeFeedProcessorBuilder
- [5170](Azure/azure-cosmos-dotnet-v3#5170)
PPAF: Adds Code to Fetch Enablement Flag Through Gateway Database
Account Response

#### Fixed

- [5197](Azure/azure-cosmos-dotnet-v3#5197)
GlobalEndpointManager: Fixes Observed exception
(ObjectDisposedException)

## 3.51.0-preview.0

### <a name="3.51.0-preview.0"/>
[3.51.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.51.0-preview.0)
- 2025-5-9

#### Added

- [4993](Azure/azure-cosmos-dotnet-v3#4993)
Query: Adds LINQ extension method for ORDER BY RANK, FullTextScore and
RRF
- [5121](Azure/azure-cosmos-dotnet-v3#5121)
Query: Adds support for the optimized query plan that skips the order by
rewrite
- [5190](Azure/azure-cosmos-dotnet-v3#5190)
Hedging: Adds Hedging for Write requests GA

#### Fixed

- [5145](Azure/azure-cosmos-dotnet-v3#5145)
Query: Fixes handling of undefined projections in hybrid search
- [5150](Azure/azure-cosmos-dotnet-v3#5150)
Query: Fixes Full Text Search APIs by marking them public
- [5162](Azure/azure-cosmos-dotnet-v3#5162) HPK
: Fixes code documentation to reference PartitionKeyPaths for HPK
scenarios
- [5163](Azure/azure-cosmos-dotnet-v3#5163)
Query: Fixes function signature for RRF, OrderByRank and FullTextScore
LINQ extension methods
- [5171](Azure/azure-cosmos-dotnet-v3#5172)
Query: Fixes FullText Policy API by making language optional
- [5189](Azure/azure-cosmos-dotnet-v3#5189)
Hedging: Fixes Concurrency Issue

## 3.50.0

### <a name="3.50.0"/>
[3.50.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.50.0) -
2025-5-9

#### Added

- [4993](Azure/azure-cosmos-dotnet-v3#4993)
Query: Adds LINQ extension method for ORDER BY RANK, FullTextScore and
RRF
- [5121](Azure/azure-cosmos-dotnet-v3#5121)
Query: Adds support for the optimized query plan that skips the order by
rewrite
- [5190](Azure/azure-cosmos-dotnet-v3#5190)
Hedging: Adds Hedging for Write requests GA

#### Fixed

- [5145](Azure/azure-cosmos-dotnet-v3#5145)
Query: Fixes handling of undefined projections in hybrid search
- [5150](Azure/azure-cosmos-dotnet-v3#5150)
Query: Fixes Full Text Search APIs by marking them public
- [5162](Azure/azure-cosmos-dotnet-v3#5162) HPK
: Fixes code documentation to reference PartitionKeyPaths for HPK
scenarios
- [5163](Azure/azure-cosmos-dotnet-v3#5163)
Query: Fixes function signature for RRF, OrderByRank and FullTextScore
LINQ extension methods
- [5171](Azure/azure-cosmos-dotnet-v3#5172)
Query: Fixes FullText Policy API by making language optional
- [5189](Azure/azure-cosmos-dotnet-v3#5189)
Hedging: Fixes Concurrency Issue

## 3.50.0-preview.0

### <a name="3.50.0-preview.0"/>
[3.50.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.50.0-preview.0)
- 2025-4-17

#### Added
- [5136](Azure/azure-cosmos-dotnet-v3#5136)
VectorIndexing: Adds Preview APIs for VectorIndexing Policies

## 3.49.0

### <a name="3.49.0"/>
[3.49.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.49.0) -
2025-4-17

#### Added

- [5077](Azure/azure-cosmos-dotnet-v3#5077)
ThroughputBucketing: Adds changes to make ThroughputBucket public for
preview SDK
- [5069](Azure/azure-cosmos-dotnet-v3#5069)
AsyncCache: Adds support for stack trace optimization during exceptions
for AsyncCache and AsyncCacheNonblocking
- [5120](Azure/azure-cosmos-dotnet-v3#5106)
Query: Adds an environment variable for disabling the hybrid search
query plan optimization
- [5127](Azure/azure-cosmos-dotnet-v3#5127)
UnknownRntbdHeader : Adds a new SDK capability for UnknownRntbdHeaders
- [5128](Azure/azure-cosmos-dotnet-v3#5128)
Session Consistency: Adds SessionTokenMismatchRetryPolicy optimization
through customer supplied region switch hints

### Fixed

- [5089](Azure/azure-cosmos-dotnet-v3#5089)
WebAssembly : Fixes Guard the ServicePointAccessor call in DocumentClass
with IsSupported as well
- [5106](Azure/azure-cosmos-dotnet-v3#5106)
Diagnostics: Fixes bug where some overloaded substatus codes are
displayed incorrectly in diagnostics.
- [5139](Azure/azure-cosmos-dotnet-v3#5139)
Query: Fixes flip of boolean switch for hybridSearchSkipOrderByRewrite

## 3.49.0-preview.1

### <a name="3.49.0-preview.1"/>
[3.49.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.49.0-preview.1)
- 2025-4-11

#### Fixes

- [5108](Azure/azure-cosmos-dotnet-v3#5108)
Metadata requests: Fixes bug where certain metadata requests are not
retried with a client cold start with only query requests

## 3.49.0-preview.0

### <a name="3.49.0-preview.0"/>
[3.49.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.49.0-preview.0)
- 2025-3-21

#### Fixes

- [5024](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5024)
Query: Fixes logic to determine whether to use distributed query by
adding a check for gateway connection mode
- [5049](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5049)
.NET9: Fixes WebAssembly or browser scenarios by conditionally setting
the ConnectionLimit
- [4470](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/4470)
NonBlockingAsyncCache: Fixes lambda func capturing the outer context
(memory optimization)
- [4977](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/4977)
Heiarchical Partition Keys: Fixes bug for ReadMany where None Partition
does not return results

#### Added

- [5057](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5057)
AvailabilityStrategy: Adds WithAvailabilityStrategy method to public GA
SDK.
- [5011](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5011)
Query: Adds query feature and deserialization of component weights for
weighted rank fusion
- [4980](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/4980)
Query: Adds FullTextContains, FullTextContainsAll, FullTextContainsAny
as LINQ extension method

## 3.48.1

### <a name="3.48.1"/>
[3.48.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.48.1) -
2025-4-11

#### Fixes

- [5108](Azure/azure-cosmos-dotnet-v3#5108)
Metadata requests: Fixes bug where certain metadata requests are not
retried with a client cold start with only query requests

## 3.48.0

### <a name="3.47.3"/>
[3.48.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.48.0) -
2025-3-21

#### Fixes

- [5024](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5024)
Query: Fixes logic to determine whether to use distributed query by
adding a check for gateway connection mode
- [5049](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5049)
.NET9: Fixes WebAssembly or browser scenarios by conditionally setting
the ConnectionLimit
- [4470](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/4470)
NonBlockingAsyncCache: Fixes lambda func capturing the outer context
(memory optimization)
- [4977](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/4977)
Heiarchical Partition Keys: Fixes bug for ReadMany where None Partition
does not return results

#### Added

- [5057](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5057)
AvailabilityStrategy: Adds WithAvailabilityStrategy method to public GA
SDK.
- [5011](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/5011)
Query: Adds query feature and deserialization of component weights for
weighted rank fusion
- [4980](http://github.con/Azure/azure-cosmos-dotnet-v3/pull/4980)
Query: Adds FullTextContains, FullTextContainsAll, FullTextContainsAny
as LINQ extension method

## 3.48.0-preview.2

### <a name="3.48.0-preview.2"/>
[3.48.0-preview.2](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.48.0-preview.2)
- 2025-2-28

#### Fixed
- [5030](Azure/azure-cosmos-dotnet-v3#5030)
Binary Encoding: Fixes Serialization Gaps on Newtonsoft Reader/Writer
for Transactional Batch API.

## 3.48.0-preview.1

### <a name="3.48.0-preview.1"/>
[3.48.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.48.0-preview.1)
- 2025-2-14

#### Added
- [5013](Azure/azure-cosmos-dotnet-v3#5013)
Resiliency: Fixes a bug in the feature for "Faster detection of broken
Transport connections".
> Set Environment variable
AZURE_COSMOS_AGGRESSIVE_TIMEOUT_DETECTION_ENABLED to "True" to enable
the above feature. Fixed an issue where connections weren't marked as
"unhealthy" under sustained failures, delaying recovery. Now, unhealthy
connections trigger prompt reconnection, ensuring continuous client
operations.

## 3.48.0-preview.0

### <a name="3.48.0-preview.0"/>
[3.48.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.48.0-preview.0)
- 2025-2-7

#### Added 

- [4706](Azure/azure-cosmos-dotnet-v3#4706)
Hedging: Adds support for writes on multi region accounts

Commits viewable in [compare
view](Azure/azure-cosmos-dotnet-v3@3.47.2...3.57.1).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Microsoft.Azure.Cosmos&package-manager=nuget&previous-version=3.47.2&new-version=3.57.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants