Skip to content

GatewayStoreClient: Fixes stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync#5291

Merged
kirankumarkolli merged 4 commits intomasterfrom
copilot/fix-5243
Jul 16, 2025
Merged

GatewayStoreClient: Fixes stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync#5291
kirankumarkolli merged 4 commits intomasterfrom
copilot/fix-5243

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Jul 15, 2025

Problem

During write region failover, Gateway returns a 403 response with application/json content type but invalid JSON content. This triggers a bug in GatewayStoreClient.CreateDocumentClientExceptionAsync where the HTTP response stream is consumed twice:

  1. First consumption happens when attempting to deserialize the response as JSON (line 176)
  2. When deserialization fails and the catch block is entered, execution continues to the fallback logic (line 195) which tries to read the same stream again
  3. This results in an unhandled InvalidOperationException: The stream was already consumed. It cannot be read again.

The original DocumentClientException with proper diagnostics is lost, making debugging difficult.

Root Cause

The issue was introduced when an else clause was removed and an empty catch block was added to the JSON deserialization logic, causing the same stream to be processed twice if deserialization fails.

Solution

This PR implements a minimal fix that:

  1. Buffers the HTTP response content once using ReadAsStringAsync() before attempting JSON deserialization
  2. Creates a new MemoryStream from the buffered content for the JSON deserialization attempt
  3. Reuses the buffered content in the fallback logic instead of trying to read from the response stream again
  4. Fixes a typo in the generic type parameter from <e> to <Error>

Changes Made

  • Modified CreateDocumentClientExceptionAsync method to buffer content once and reuse it
  • Added explanatory comments for the stream consumption fix
  • Added test case TestStreamConsumptionBugFixWhenJsonDeserializationFails to verify the fix
  • All changes are surgical and preserve existing functionality

Code Example

Before (buggy):

// First read - consumes the stream
Stream contentAsStream = await responseMessage.Content.ReadAsStreamAsync();
Error error = JsonSerializable.LoadFrom<Error>(stream: contentAsStream);
// ... if this fails and throws, execution continues to:

// Second read - fails with "stream already consumed"
contextBuilder.AppendLine(await responseMessage.Content.ReadAsStringAsync());

After (fixed):

// Buffer content once
contentString = await responseMessage.Content.ReadAsStringAsync();
using (MemoryStream contentStream = new MemoryStream(Encoding.UTF8.GetBytes(contentString)))
{
    Error error = JsonSerializable.LoadFrom<Error>(stream: contentStream);
    // ... 
}
// ... if this fails and throws, execution continues to:

// Reuse buffered content - no stream re-reading
contextBuilder.AppendLine(contentString ?? await responseMessage.Content.ReadAsStringAsync());

This ensures that when Gateway returns invalid JSON during failover scenarios, clients get proper DocumentClientException instances with diagnostics instead of unhandled InvalidOperationException errors.

Fixes #5243.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

…ExceptionAsync

Co-authored-by: kirankumarkolli <6880899+kirankumarkolli@users.noreply.github.com>
Copilot AI changed the title [WIP] GatewayStoreClient.CreateDocumentClientExceptionAsync throws unhandled System.InvalidOperationException: The stream was already consumed. It cannot be read again. Fix stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync Jul 15, 2025
Copilot AI requested a review from kirankumarkolli July 15, 2025 23:10
@kirankumarkolli kirankumarkolli changed the title Fix stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync GatewayStoreClient: Fix stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync Jul 16, 2025
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

All good!

@kirankumarkolli kirankumarkolli changed the title GatewayStoreClient: Fix stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync GatewayStoreClient: Fixes stream consumption bug in GatewayStoreClient.CreateDocumentClientExceptionAsync Jul 16, 2025
Co-authored-by: kirankumarkolli <6880899+kirankumarkolli@users.noreply.github.com>
@kirankumarkolli
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

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

3 participants