Update dependency Microsoft.Azure.Cosmos to 3.63.1 - #98
Open
dependencyupdates[bot] wants to merge 1 commit into
Open
dependencyupdates[bot] wants to merge 1 commit into
dependencyupdates[bot] wants to merge 1 commit into
Conversation
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
March 20, 2026 21:26
ab87a08 to
741cf10
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
March 25, 2026 16:16
741cf10 to
eb75203
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
2 times, most recently
from
April 7, 2026 09:57
0b4d2cd to
768ce24
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
2 times, most recently
from
April 25, 2026 09:35
622fb96 to
c316118
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
2 times, most recently
from
May 2, 2026 16:19
c891ef4 to
552970a
Compare
Contributor
Author
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
May 19, 2026 04:41
552970a to
118c296
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
May 26, 2026 22:11
118c296 to
05d5567
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
2 times, most recently
from
June 5, 2026 21:48
05d5567 to
8855543
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
June 23, 2026 11:04
8855543 to
90991a4
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
2 times, most recently
from
July 17, 2026 04:21
e9d3e62 to
98845a2
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
2 times, most recently
from
July 23, 2026 21:38
98845a2 to
7fcc5b7
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
August 7, 2026 21:28
7fcc5b7 to
e4644b5
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
September 9, 2026 03:30
e4644b5 to
0f64891
Compare
dependencyupdates
Bot
force-pushed
the
renovate/microsoft.azure.cosmos-3.x
branch
from
September 18, 2026 09:29
0f64891 to
67a4b09
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.57.0→3.63.1Release Notes
Azure/azure-cosmos-dotnet-v3 (Microsoft.Azure.Cosmos)
v3.63.1Bugs Fixed
NullReferenceExceptionwhen a lease'sFeedRangewas missing after rehydration (now backfilled on acquire, with a routing-map fallback), and a continuation token being silently discarded when a split happened while the host was offline (the SDK now defers creating a post-split range's lease to its parent's own split handling when the parent lease still exists, instead of racing ahead with a fresh, continuation-less lease).v3.63.0Compare Source
Features Added
CosmosClientOptions.ThroughputBucket,RequestOptions.ThroughputBucket, andCosmosClientBuilder.WithThroughputBucket(int)are now available in the official (GA) package. These APIs let you tag requests with a throughput bucket so the service can partition provisioned throughput across workloads. A bucket set at the request level takes precedence over one set at the client level, and is now also honored byContainer.ReadManyItemsAsyncviaReadManyRequestOptions. When bulk execution is enabled, a request-level throughput bucket is supported for all operation types except item point operations (which are batched into shared requests); setting it on a bulk item point operation now throws anInvalidOperationExceptioninstead of being silently ignored — set the bucket at the client level for those operations.ReadConsistencyStrategyto the official (GA) package. TheReadConsistencyStrategyenum and the corresponding properties onCosmosClientOptions,ItemRequestOptions,QueryRequestOptions,ChangeFeedRequestOptions,ReadManyRequestOptions, andCosmosClientBuilder.WithReadConsistencyStrategyare now available in the public package (previously preview-only). This lets read and query operations request a read consistency strategy (for exampleEventual,Session,LatestCommitted, orGlobalStrong) independent of the account's default consistency level.QuantizerTypeto the official (GA) package.Server_WriteBarrierThrottled) when all replicas return 429 during barrier requests. Direct retries the 429 internally and surfaces a synthetic 408/21013 to the SDK when retries are exhausted. The SDK'sClientRetryPolicyrecognizes this substatus and avoids marking the endpoint unavailable, preventing unnecessary cross-region failover. Adds internal opt-out flag and env-var kill switch (AZURE_COSMOS_BARRIER_EARLY_YIELD_ON_429_ENABLED).Breaking Changes
GenerateEmbeddingsquery plan rewrite (embeddingParameterMap) that was present in Direct 3.43.2 is not included in Direct 3.44.0. Queries usingGenerateEmbeddingsin Direct mode may produce different query plans. This exclusion was intentional for this release branch.Bugs Fixed
ReadConsistencyStrategy.LastCommittedSingleWriteRegionhanging forever on single write region accounts when the client's application region is a read replica instead of the hub. After each403/WriteForbiddenthe SDK recorded a route to the hub region but never used it, so every retry went back to the same replica and the loop never finished. The retry now follows the recorded hub route and the read completes.F4user-agent flag (see PR description for details).TaskScheduler.UnobservedTaskExceptionthat could surface from a background address cache refresh failure.QueryRequestOptions.ExcludeRegions. Previously,ExcludeRegionsset on a query's request options was applied to the actual data query but silently dropped for the preceding gateway query-plan fetch (used whenServiceInteropis unavailable, e.g. non-Windows/.NET). This could route the query-plan call to an excluded region (typically the write region) even though the rest of the query correctly avoided it.ExcludeRegionsis now propagated to the query-plan request as well, consistent with how it is already honored for the data query.InvalidOperationException("A task may only be disposed if it is in a completion state") that could be thrown fromCrossRegionHedgingAvailabilityStrategywhen a hedged request completed at the same moment the application'sCancellationTokenwas cancelled from another thread. The exception could surface instead of the operation's real result or cancellation, and was most visible in query workloads, where the pipeline cancels prefetch operations frequently.TaskScheduler.UnobservedTaskException. When the winning region returns early, the still in-flight losing hedge tasks are now explicitly observed on every exit path, so a losing arm that completes faulted with a non-cancellation exception (for example a pre-dispatch failure on an abandoned arm) is handled internally and never leaks as an unobserved task exception, while the winning region's response is always returned unaffected. Note that a losing arm cancelled by the winning region completes in the Canceled state (which carries no exception) and was never the source of the leak. This is most relevant for accounts where hedging is implicitly enabled by Per-Partition Automatic Failover (PPAF), where the path is exercised with no explicit customer opt-in.NullReferenceExceptionthat could surface on the first request during client startup when the gateway account read completed without returning account properties. The SDK now fails initialization with a descriptive, actionable exception (which hints at aMicrosoft.Azure.Cosmos/Microsoft.Azure.Cosmos.Directpackage version mismatch as the most common cause) instead of a bareNullReferenceException, and continues to retry initialization on the next request so the client still self-heals.TaskScheduler.UnobservedTaskException(Http2StreamException"stream aborted") that could surface when an HTTP/2 thin-client gateway request was retried after an HTTP 408 (common while the emulator is cold and slow). The retriable response is now disposed before the SDK retries, so its underlying HTTP/2 stream is torn down deterministically instead of being left to garbage-collector finalization. The awaited call still surfaces the same cancellation/timeout/503result. Note: the orphaned task that the .NET HTTP/2 stack can leave when an in-flight request is cancelled mid-flight is a runtime behavior (see dotnet/runtime#46961); to avoid it on older runtimes, run a current .NET runtime or pin the emulator client to HTTP/1.1.RemotingExceptionin AppDomain-isolated test hosts by replacingType.GetTypewithAssembly.GetTypeinCosmosHttpClientCore.CreateHttpClientHandlerandCreateSocketsHttpHandlerHelper.Type.GetTypefiresAppDomain.TypeResolvewhen the type is not found on .NET Framework, which crashes if cross-domainMarshalByRefObjectproxies have expired leases.Other Changes
x-ms-client-idheader, carrying a stable per-CosmosClientidentifier, to every HTTP request the SDK issues — gateway data-plane, metadata, and control-plane (including database account reads), thin-client requests, and automatically retried and cross-region hedged requests. This lets the service correlate all requests originating from the same client. Direct-mode (TCP) requests are unaffected, as the RNTBD protocol has no client-id token.ORDER BYqueries that useTOP,LIMIT, orOFFSET/LIMITby lowering the per-partition page size from 5x each partition's proportional share of the requested document count to 2x, which reduces query latency and backend load without changing results. Workloads with a heavily skewed sort key may see additional round trips; the previous behavior can be restored by setting the environment variableAZURE_COSMOS_PAGE_SIZE_FACTOR_FOR_TOP=5.v3.62.1Compare Source
Features Added
AZURE_COSMOS_MAX_OPERATIONS_IN_BATCH_REQUESTenvironment variable to configure the maximum number of operations in a direct mode batch request, up to the service limit.v3.62.0Compare Source
Features Added
AZURE_COSMOS_METADATA_HEDGING_ENABLEDenvironment variable.POST /connectivity-probe) that validates each discovered thin client (proxy) regional endpoint over HTTP/2 before routing traffic to it. Data-plane traffic uses the proxy only for regions whose endpoint has passed its probe; any other region transparently uses the standard gateway, with no client restart required.Thin client mode is now enabled by default (opt-out viaAZURE_COSMOS_THIN_CLIENT_ENABLED=false); the probe verifies HTTP/2 reachability per region at runtime, so no client-side HTTP/2 opt-in is required. When enabled, the SDK additionally issues the probe and routes data-plane traffic to the proxy regional endpoints on port10250over HTTP/2, which is useful to know when diagnosing unexpected requests or egress rules that only allow443.disableCrossRegionalHedgingaccount property that lets operators dynamically disable PPAF cross-region hedging (and any customer-configuredAvailabilityStrategy) without rolling back PPAF entirely. The SDK reconcilesConnectionPolicy.AvailabilityStrategyagainst the Gateway-supplied flag on each account-properties refresh; toggling the flag back tofalserestores the customer-configured strategy or rebuilds the SDK default.Breaking Changes
AZURE_COSMOS_THIN_CLIENT_ENABLED=false.Bugs Fixed
3.61.0) where the SDK attached a non-emptyclaimsparameter (thecp1client capability) on every AAD token acquisition, even when there was no revocation challenge. Because a non-emptyclaimsforces the underlying identity library (Azure.Identity/MSAL) to bypass its token cache and request a fresh token from the authority on each acquisition, this could stall the first token acquisition and surface as a hang on the initial request (for exampleReadAccountAsync) with certificate/managed-identity credentials. The SDK now attachesclaimsonly when responding to an actual CAE/revocation challenge; thecp1capability continues to be advertised viaisCaeEnabled, so continuous access evaluation still works while the token cache is used on the normal path. This change also hardens the token-refresh path against a race where a token refresh already in flight when a revocation challenge arrives could, on late completion, republish its stale (no-claims) result over the newer revocation-aware token and drop the challenge; the refresh now detects that it has been superseded and leaves the newer cached state intact, so the revocation is still honored.ArgumentNullException("Value cannot be null. (Parameter 'request')") that could be thrown to the caller instead of a cancellation when a cross-region hedged request was cancelled before it was dispatched, on accounts where Per-Partition Automatic Failover (PPAF) or the Partition-Level Circuit Breaker (PPCB) is enabled. A losing hedge arm that is cancelled before dispatch never records its internal request state, and the cancellation-handling path previously forwarded that missing state into the partition-failover check, which threw. Because PPAF accounts implicitly enable hedging and PPCB, this could surface on those accounts without any explicit hedging configuration. A cancellation before dispatch is now handled gracefully and surfaces asCosmosOperationCanceledExceptionas intended.EstimatedLag = 1instead of probing from beginning (resolves the synthetic backlog spike from issue #5847). Preserves the non-zero wake signal that Azure Functions Scale Controller / KEDA Cosmos scaler rely on. Note: processors configured withWithStartFromBeginningwill reportEstimatedLag = 1until their first checkpoint rather than the exact pending count, which may affect Scale Controller / KEDA scale-out decisions during the initial catch-up window; once the lease checkpoints, subsequent estimations report the real measured lag.StackOverflowExceptionthat could crash the client process when the binary-JSON reader, navigator, orCosmosElementmaterialized a string value from a malformed reference-string redirect. This is a hardening fix and the reader/navigator counterpart to #5909 (which only hardened the writer): the string-materialization paths now validate reference-string (StrR1/StrR2/StrR3/StrR4) targets before dereferencing them, rejecting self-references, reference-to-reference chains/cycles, and out-of-bounds (including negative) offsets with a catchableJsonInvalidTokenExceptioninstead of terminating the host. Well-formed single-hop reference strings continue to resolve normally.ExcludeRegionsbeing ignored when thin client mode is enabled, so thin client requests now route to the same region the gateway path would have chosen.TimeSpan(which wraps every 60 seconds) instead of the total elapsed time, so once cumulative retries crossed the one-minute mark the policy could keep retrying well beyond its budget. Retries now honor the full elapsed duration.StackOverflowException. The decoder and re-serializer paths now enforce the existing 256-level nesting cap, surface a catchableJsonMaxNestingExceededException/InsufficientExecutionStackException/JsonInvalidTokenExceptioninstead of terminating the host, and reject malformed reference-string redirects up front. Note: the existing 256-deep writer nesting check (JsonObjectState.Push) now throwsJsonMaxNestingExceededExceptioninstead ofInvalidOperationException, so a singlecatchcovers both reader and writer paths..Any()onDictionary/IDictionary/IReadOnlyDictionaryproperties returning no results by wrapping dictionary access withOBJECTTOARRAY()so dictionary entries (and predicates onKeyValuePair.Key/Value) are iterated correctly.MemberInitExpressionnode, so captured variables inside object initializers were not folded, producing invalid translated SQL.Take()silently mutating the caller'sQueryRequestOptions.MaxItemCountproperty (resolves #5225). The query pipeline now shallow-copies the request options before setting the internal page size, so the user's original object is never modified.Microsoft.Azure.Cosmos.Spatialgeometry types (Point,LineString,Polygon, etc.) when usingCosmosClientOptions.UseSystemTextJsonSerializerWithOptions(or a custom System.Text.Json-based serializer). Previously these types threwSystem.NotSupportedExceptionon read/create and produced malformed non-GeoJSON output on patch, because only Newtonsoft.Json converters existed; a full set of System.Text.Json converters now produces GeoJSON-compliant output identical to the Newtonsoft serializers (closes #4744).AZURE_COSMOS_USE_LENGTH_AWARE_RANGE_COMPARATORenvironment variable so it is honored across all length-aware range-comparer code paths (includingPartitionKeyRangeCache.TryCombine) in the GA package, not just preview. Customers can now disable the length-aware range comparer as a mitigation for the hierarchical-partition-key silent empty-result issue (#5859) by settingAZURE_COSMOS_USE_LENGTH_AWARE_RANGE_COMPARATOR=false.Other Changes
6013 AAD Token Revocation: Gates the AAD token revocation / CAE retry feature behind the
AZURE_COSMOS_AAD_TOKEN_REVOCATION_ENABLEDenvironment variable (default OFF). When unset, the SDK preserves the exact pre-feature AAD behavior; setting the variable totrueopts in to the revocation retry andcp1CAE capability.5936 Routing: Hardens dynamic per-partition automatic failover (PPAF) enablement tracking.
GlobalEndpointManagernow keeps its own last-known PPAF-enablement baseline for its change detection instead of reusing the mutableConnectionPolicy.EnablePartitionLevelFailoverfield, so gateway-driven enablement changes are detected reliably even though that field is also written by the subscriber that applies the change. A transient failure while applying a PPAF-enablement change is now retried on the next account refresh (the SDK reverts the partially-applied PPAF state so the change is re-detected and re-applied), matching the recovery behavior already in place for thedisableCrossRegionalHedgingflag.5945 Diagnostics: Fixes internal failure logging on background-refresh, failover, and hedging hot paths (address/endpoint/partition caches,
GlobalEndpointManager,GlobalPartitionEndpointManagerCore, and the cross-region hedging strategy) to gate eachDefaultTracecall behind its trace-level check, so the fullCosmosExceptiondiagnostics tree is no longer eagerly serialized when the trace sink is disabled/no-op, reducing CPU/allocations. When tracing is enabled the log lines are unchanged and still include the full diagnostics.CosmosException.MessageandToString()are also unchanged and continue to include diagnostics for the affected status codes.5956 Routing: Fixes
CollectionRoutingMap.GetRangeByEffectivePartitionKeyto use the configured (length-aware-by-default) comparer instead of a hard-coded ordinal comparer, so it agrees withGetOverlappingRangesfor a short/partial effective partition key on a zero-padded range boundary. This is a defense-in-depth correctness fix; current SDK callers pass full-length effective partition keys, for which the ordinal and length-aware comparers are equivalent, so there is no behavior change for existing workloads.5916 Direct: Moves the
OpenTcpConnectionTimeoutnegative-value warning trace fromCosmosClientOptionstoDocumentClient. The warning is now emitted once per client construction (instead of once per property assignment) and is gated onConnectionMode == Direct, so it no longer false-positives when a negative value is later overwritten with a non-negative one or when running in Gateway mode where the timeout is not consumed.5990 Adds retry logic for 449 across Gateway modes: Changes 449 (
RetryWith) retries on the gateway and thin client paths to be consistently orchestrated client-side. The SDK now retries 449 responses itself with a bounded exponential backoff, for up to 30 seconds total (60 seconds when the account default consistency is Strong) before surfacing the error.#5905 ReadMany: Adds point-read fast path for single-tuple partitions. When the items requested in a single
ReadManyItems[Stream]Asynccall resolve to a physical partition with only one(id, partitionKey)tuple, the SDK now issues a point read for that tuple instead of a parameterized query. This reduces RU and latency for sparse multi-partition lookups (closes #4369) and aligns the .NET SDK with the existing Java and Python SDK behavior.v3.61.0Compare Source
Features Added
CosmosDiagnostics.HedgingStarted,GetRequestedRegions,GetRespondedRegions) along with the newRequestedRegionstruct andRequestedRegionReasonenum so callers can observe per-operation hedging behavior.RequestedRegionReason.Unknown(= 0) is the default sentinel fordefault(RequestedRegion).Reasonand is never emitted by the SDK;RequestedRegionReason.CircuitBreakerProbeandRequestedRegionReason.TransportRetryare reserved for the future and not yet populated by this SDK; see issue #5867.Breaking Changes
Bugs Fixed
ArgumentNullExceptionwhen an inmemory lease container was being used. Update validations so in-memory lease containers work with change feed estimatorDispatcher.OnIdleTimerasynchronous (ports public PR 5817)OpenTcpConnectionTimeout. Sub-second values in [0, 1s) are now explicitly normalized to 0 and fractional values ≥ 1 second are rounded up to the nearest whole second (for example, 2.3s becomes 3s). Negative values emit a warning trace but are left unchanged for backward compatibility.Other Changes
MaxTcpConnectionsPerEndpointaccepts any positive value to allow customer control of the connection pool size; values of 16 or greater remain recommended.v3.60.0Compare Source
Features Added
Bugs Fixed
v3.59.0Compare Source
Features Added
Bugs Fixed
GlobalPartitionEndpointManagerCore. This bug left the circuit breaker failback loop running indefinitely, leakingTask.Delaytimers.v3.58.0Compare Source
Features Added
Bugs Fixed
ArgumentNullExceptionrace condition in hedging cancellationv3.57.1Compare Source
Bugs Fixed
ArgumentNullExceptionrace condition in hedging cancellationConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
Commands to ignore dependencies
You can trigger dependency actions by commenting on this PR:
@particularbot ignore this major version@particularbot ignore this minor version@particularbot ignore this dependency