Skip to content

[Internal]: Fixes the Observed exception (ObjectDisposedException) in GlobalEndpointManager#5197

Merged
FabianMeiswinkel merged 1 commit intomasterfrom
users/dibahl/objectdispositionexception-fix
May 12, 2025
Merged

[Internal]: Fixes the Observed exception (ObjectDisposedException) in GlobalEndpointManager#5197
FabianMeiswinkel merged 1 commit intomasterfrom
users/dibahl/objectdispositionexception-fix

Conversation

@dibahlfi
Copy link
Copy Markdown
Member

@dibahlfi dibahlfi commented May 12, 2025

Internal: Fixes the race condition where a background tasks fails and try to access a disposed object.

  • [] Bug fix (non-breaking change which fixes an issue)

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!

@dibahlfi dibahlfi changed the title Fixing the Observed exception (ObjectDisposedException) [Internal]: Fixes the Observed exception (ObjectDisposedException) in GlobalEndpointManager May 12, 2025
Copy link
Copy Markdown
Member

@FabianMeiswinkel FabianMeiswinkel left a comment

Choose a reason for hiding this comment

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

LGTM - Thanks

@FabianMeiswinkel FabianMeiswinkel merged commit f07e797 into master May 12, 2025
27 of 29 checks passed
@FabianMeiswinkel FabianMeiswinkel deleted the users/dibahl/objectdispositionexception-fix branch May 12, 2025 21:48
kirankumarkolli added a commit that referenced this pull request Feb 18, 2026
…sposed during request (#5597)

## Description

🤖 **This PR was authored by GitHub Copilot** as part of an automated
issue triage workflow.

Fixes #5596

This PR fixes the confusing `InvalidOperationException: StoreProxy
cannot be null` error that occurs when `CosmosClient.Dispose()` is
called while requests are still in-flight.

---

## Investigation Steps Summary

1. **Reproduced the error path**: Traced `TransportHandler.cs:120` where
error originates
2. **Identified all StoreModel assignments**: Found 3 locations in
DocumentClient.cs
   - Line 1114: `= this.GatewayStoreModel` (Gateway mode init)
   - Line 6821: `= new ServerStoreModel(...)` (Direct mode init)  
   - Line 1362: `= null` (**Dispose() - ONLY place setting to null**)
3. **Verified GatewayStoreModel cannot be null at line 1114**: Assigned
at line 1098, just 16 lines before
4. **Concluded root cause**: Race condition - Dispose() called while
requests in-flight
5. **Analyzed PR #5197 (version 3.51)**: Confirmed it did NOT introduce
the bug, only changed timing

---

## Root Cause

**Location**: `DocumentClient.cs:1362` (Dispose) and
`DocumentClient.cs:6586` (GetStoreProxy)

**Analysis**:
When `CosmosClient.Dispose()` is called while requests are in-flight:
1. `Dispose()` sets `StoreModel = null` (DocumentClient.cs:1362)
2. In-flight request calls `GetStoreProxy()` which returns `null`
3. Caller throws unhelpful `InvalidOperationException("StoreProxy cannot
be null")`

**Evidence**: `StoreModel` is set to `null` only in `Dispose()` - no
other code path sets it to `null`.

---

## Sequence Diagram

### Before Fix (Confusing Error)

```mermaid
sequenceDiagram
    participant App
    participant CosmosClient
    participant TransportHandler
    participant DocumentClient
    
    App->>CosmosClient: ReadItemAsync()
    activate CosmosClient
    
    Note over App: Another thread calls Dispose()
    App->>CosmosClient: Dispose()
    CosmosClient->>DocumentClient: Dispose()
    DocumentClient->>DocumentClient: StoreModel = null
    
    CosmosClient->>TransportHandler: ProcessMessageAsync()
    TransportHandler->>DocumentClient: GetStoreProxy()
    DocumentClient-->>TransportHandler: null (disposed!)
    TransportHandler->>TransportHandler: Retry once
    TransportHandler->>DocumentClient: GetStoreProxy()
    DocumentClient-->>TransportHandler: null
    TransportHandler--xApp: ❌ InvalidOperationException
    deactivate CosmosClient
```

### After Fix (Clear Error)

```mermaid
sequenceDiagram
    participant App
    participant CosmosClient
    participant TransportHandler
    participant DocumentClient
    
    App->>CosmosClient: ReadItemAsync()
    activate CosmosClient
    
    Note over App: Another thread calls Dispose()
    App->>CosmosClient: Dispose()
    CosmosClient->>DocumentClient: Dispose()
    DocumentClient->>DocumentClient: StoreModel = null
    DocumentClient->>DocumentClient: isDisposed = true
    
    CosmosClient->>TransportHandler: ProcessMessageAsync()
    TransportHandler->>DocumentClient: GetStoreProxy()
    DocumentClient->>DocumentClient: Check isDisposed ✓
    DocumentClient--xTransportHandler: ❌ ObjectDisposedException
    TransportHandler--xApp: ❌ ObjectDisposedException
    deactivate CosmosClient
```

---

## Changes Made

### DocumentClient.cs
- Added `isDisposed` check at the beginning of `GetStoreProxy()`
- Throws `ObjectDisposedException` with clear message when client is
disposed

### TransportHandler.cs
- Updated comments to reflect that disposed case is now handled at
source
- Improved error message for unexpected null cases

### ClientTests.cs (Emulator Tests)
- Added `ReadItemAsync_ThrowsObjectDisposedException_WhenClientDisposed`
test
- Validates that disposed client throws proper exception type with clear
message

---

## Generated Output

**Before (confusing)**:
```
System.InvalidOperationException: StoreProxy cannot be null
```

**After (clear)**:
```
System.ObjectDisposedException: Cannot process request because the CosmosClient has been disposed. 
Ensure all in-flight requests complete before disposing the client.
```

---

## Testing

### Local Validation (Before Push)

**Build:**
```
dotnet build Microsoft.Azure.Cosmos.sln -c Release
Build succeeded. 0 Warning(s) 0 Error(s)
```

**Unit Tests:**
```
dotnet test Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests -c Release
Passed: 2427, Failed: 2 (pre-existing failures unrelated to this PR)
```

**New Test:**
```
dotnet test --filter "ReadItemAsync_ThrowsObjectDisposedException_WhenClientDisposed"
Passed! - Failed: 0, Passed: 1
```

---

## Breaking Changes

**Behavior change:** Callers that were catching
`InvalidOperationException` for this scenario will now receive
`ObjectDisposedException`. This is considered a bug fix, not a breaking
change, as:
1. The previous exception was unhelpful and undocumented
2. `ObjectDisposedException` is the correct exception for this scenario
3. Users should not be relying on catching this specific exception

---

## Checklist

- [x] Code follows project conventions
- [x] Self-review completed
- [x] Fix at source of truth (GetStoreProxy, not TransportHandler)
- [x] New emulator test added
- [x] Local build succeeded
- [x] Local unit tests run (2 pre-existing failures)
- [ ] Remote CI gates pass

## Plan Compliance Audit

| Checkpoint | Status | Notes |
|------------|--------|-------|
| Searched existing PRs before branch | ❌ | Missed |
| Searched existing branches | ❌ | Missed |
| Local build succeeded | ✅ | Exit code 0, 0 errors |
| Full unit tests passed | ⚠️ | 2 pre-existing failures |
| Emulator tests passed | ⏳ | Will run via CI |
| Root cause documented | ✅ | Code path traced |
| Investigation steps included | ✅ | In PR body |
| Issue comment posted | ✅ | Posted |

---
*Generated by GitHub Copilot CLI Agent*
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.

3 participants