NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #2696 most downloaded on NuGet
This library provides a host for distributing change feed events in partitioned collection across multiple observers. Instances of the host can scale up (by adding) or down (by removing) dynamically, and the load will be automatically distributed among active instances in about-equal way.
Last release 3 years ago
no release in 18 months
Ships unpredictably
gaps range from 9 days to 2.0 years
Nearly every release is documented
notes for 25 of 25 stable releases
2 versions withdrawn
withdrawn after publishing
127 years old
31 releases · first in 1900
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
One column per quarter.
Added support for lease collections that can be partitioned with partition key defined as /partitionKey. Prior to this change lease collection's partition key would have to be defined as /id.
This release allows using lease collections with API for Gremlin, as Gremlin collections cannot have partition key defined as /id.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The nuget package for this release can be downloaded/installed from here: https://www.nuget.org/packages/Microsoft.Azure.DocumentDB.ChangeFeedProcessor/2.3.1.
Corrected a case when FeedProcessing.ChangeFeedObserverCloseReason.Unknown close reason was sent to FeedProcessing.IChangeFeedObserver.CloseAsync if the partition cannot be found or if the target replica is not up to date up with the read session. In these cases FeedProcessing.ChangeFeedObserverCloseReason.ResourceGone and FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable close reasons are now used.
Added a new close reason FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable that is sent to close the change feed observer when the target replica is not up to date up with the read session.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The nuget package for this release can be downloaded/installed from here: https://www.nuget.org/packages/Microsoft.Azure.DocumentDB.ChangeFeedProcessor/2.3.0.
Added a new method ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory and corresponding public interface ICheckpointPartitionProcessorFactory . This allows an implementation of the IPartitionProcessor interface to use built-in checkpointing mechanism. The new factory is similar to the existing IPartitionProcessorFactory , except that its Create method also takes the ILeaseCheckpointer parameter.
Only one of the two methods, either ChangeFeedProcessorBuilder.WithPartitionProcessorFactory or ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory , can be used for the same ChangeFeedProcessorBuilder instance.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The nuget package for this release can be downloaded/installed from here: https://www.nuget.org/packages/Microsoft.Azure.DocumentDB.ChangeFeedProcessor/2.2.8
Stability and diagnosability improvements:
Added support to detect reading change feed taking long time. When it takes longer than the value specified by the ChangeFeedProcessorOptions.ChangeFeedTimeout property, the following steps are taken:
The operation to read change feed on the problematic partition is aborted.
The change feed processor instance drops ownership of the problematic lease. The dropped lease will be picked up during the next lease acquire step that will be done by the same or different change feed processor instance. This way, reading change feed will start over.
An issue is reported to the health monitor. The default heath monitor sends all reported issues to trace log.
Added a new public property: ChangeFeedProcessorOptions.ChangeFeedTimeout . The default value of this property is 10 mins.
Added a new public enum value: Monitoring.MonitoredOperation.ReadChangeFeed . When the value of HealthMonitoringRecord.Operation is set to Monitoring.MonitoredOperation.ReadChangeFeed , it indicates the health issue is related to reading change feed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
Improved load-balancing strategy for scenario when getting all leases takes longer than lease expiration interval, for example, due to network issues:
In this scenario load-balancing algorithm used to falsely consider leases as expired, causing stealing leases from active owners. This could trigger unnecessary rebalancing many leases.
This issue is fixed in this release by avoiding retry on conflict while acquiring expired lease which owner hasn't changed and postponing acquiring expired lease to next load-balancing iteration.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The nuget can be downloaded/installed from here: https://www.nuget.org/packages/Microsoft.Azure.DocumentDB.ChangeFeedProcessor/2.2.6
Improved handling of Observer exceptions.
Richer information on Observer errors:
When an Observer is closed due to an exception thrown by Observer's ProcessChangesAsync, the CloseAsync will now receive the reason parameter set to ChangeFeedObserverCloseReason.ObserverError.
Added traces to identify errors within user code in an Observer.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
The change log for this project is available at https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-dotnet-changefeed.
Minor breaking change: removed extensibility point ChangeFeedProcessorBuilder.WithLeaseManager(ILeaseManager), use ChangeFeedProcessorBuilder.WithLeas…
Added support for using custom store to persist continuation tokens per partition.
For example, a custom lease store can be Azure Cosmos DB lease collection partitioned in any custom way.
Custom lease stores can use new extensibility point ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) and ILeaseStoreManager public interface.
Refactored the ILeaseManager interface into multiple role interfaces.
Minor breaking change: removed extensibility point ChangeFeedProcessorBuilder.WithLeaseManager(ILeaseManager), use ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) instead.
This release fixes an issue that occurs during processing a split in monitored collection and using a partitioned lease collection. When processing a
Fixed Estimator calculation for accounts with multiple write regions and new Session Token format.
Minor breaking change: the methods of the IChangeFeedDocumentClient interface and the ChangeFeedDocumentClient class were changed to include RequestOp…
Added support for partitioned lease collections. The partition key must be defined as /id.
Minor breaking change: the methods of the IChangeFeedDocumentClient interface and the ChangeFeedDocumentClient class were changed to include RequestOptions and CancellationToken parameters. IChangeFeedDocumentClient is an advanced extensibility point that allows you to provide custom implementation of the Document Client to use with Change Feed Processor, for example, decorate DocumentClient and intercept all calls to it to do extra tracing, error handling, etc. With this update, the code that implement IChangeFeedDocumentClient will need to be changed to include new parameters in the implementation.
Minor diagnostics improvements.
Added new API, Task > IRemainingWorkEstimator.GetEstimatedRemainingWorkPerPartitionAsync(). This can be used to get estimated work for each partition.
Added new API, Task<IReadOnlyList<RemainingPartitionWork>> IRemainingWorkEstimator.GetEstimatedRemainingWorkPerPartitionAsync(). This can be used to get estimated work for each partition.
Supports Microsoft.Azure.DocumentDB SDK 2.0. Requires Microsoft.Azure.DocumentDB 2.0 or later.
Added ChangeFeedEventHost.HostName public property for compatibility with v1.
Fixed a race condition that occurs during partition split. The race condition may lead to acquiring lease and immediately losing it during partition s
- GA SDK
When partition split happens, there could be duplicate processing of documents modified before the split.
Fixed the following issues:
When partition split happens, there could be duplicate processing of documents modified before the split.
The GetEstimatedRemainingWork API returned 0 when no leases were present in the lease collection.
The following exceptions are made public. Extensions that implement IPartitionProcessor can throw these exceptions.
Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.LeaseLostException.
Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionException.
Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionNotFoundException.
Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionSplitException.
Removed ChangeFeedProcessorOptions.IsAutoCheckpointEnabled that was marked as obsolete.
Better handling of lease store initialization. When lease store is empty, only one instance of processor can initialize it, the others will wait.
Stability improvements:
Better handling of lease store initialization. When lease store is empty, only one instance of processor can initialize it, the others will wait.
More stable/efficient lease renewal/release. Renewing and releasing a lease one partition is independent from renewing others. In v1 that was done sequentially for all partitions.
New v2 API:
Builder pattern for flexible construction of the processor: the ChangeFeedProcessorBuilder class.
Can take any combination of parameters.
Can take DocumentClient instance for monitoring and/or lease collection (not available in v1).
IChangeFeedObserver.ProcessChangesAsync now takes CancellationToken.
IRemainingWorkEstimator - the remaining work estimator can be used separately from the processor.
New extensibility points:
IPartitionLoadBalancingStrategy - for custom load-balancing of partitions between instances of the processor.
ILease, ILeaseManager - for custom lease management.
IPartitionProcessor - for custom processing changes on a partition.
Logging - uses LibLog library.
100% backward compatible with v1 API.
New code base.
Compatible with SQL .NET SDK versions 1.21.1 and above.
Nothing published for this version
Nothing published for this version
Fixed a DocumentClient leak when calling the pending work estimation multiple times.
Added more logging.
Fixed a DocumentClient leak when calling the pending work estimation multiple times.
Fixes in the pending work estimation.
Fix for handling canceled tasks issue that might lead to stopped observers on some partitions.
Stability improvements.
Fix for handling canceled tasks issue that might lead to stopped observers on some partitions.
Support for manual checkpointing.
Compatible with SQL .NET SDK versions 1.21 and above.
Nothing published for this version
Adds support for .NET Standard 2.0. The package now supports netstandard2.0 and net451 framework monikers.
Adds support for .NET Standard 2.0. The package now supports netstandard2.0 and net451 framework monikers.
Compatible with SQL .NET SDK versions 1.17.0 and above.
Compatible with SQL .NET Core SDK versions 1.5.1 and above.
Fixes an issue with the calculation of the estimate of remaining work when the Change Feed was empty or no work was pending.
Fixes an issue with the calculation of the estimate of remaining work when the Change Feed was empty or no work was pending.
Compatible with SQL .NET SDK versions 1.13.2 and above.
Added a method to obtain an estimate of remaining work to be processed in the Change Feed.
Added a method to obtain an estimate of remaining work to be processed in the Change Feed.
Compatible with SQL .NET SDK versions 1.13.2 and above.
Compatible with SQL .NET SDK versions 1.14.1 and below.
GA SDK
Compatible with SQL .NET SDK versions 1.14.1 and below.
Microsoft will provide notification at least 12 months in advance of retiring an SDK in order to smooth the transition to a newer/supported version. New features and functionality and optimizations are only added to the current SDK, as such it is recommended that you always upgrade to the latest SDK version as early as possible.
Warning
After 31 August 2022, Azure Cosmos DB will no longer make bug fixes, add new features, and provide support to versions 1.x of the Azure Cosmos DB .NET or .NET Core SDK for API for NoSQL. If you prefer not to upgrade, requests sent from version 1.x of the SDK will continue to be served by the Azure Cosmos DB service.
Version Release Date Retirement Date
2.5.0 May 15, 2023 ---
2.4.0 May 6, 2021 ---
2.3.2 August 11, 2020 ---
2.3.1 July 30, 2020 ---
2.3.0 April 2, 2020 ---
2.2.8 October 28, 2019 ---
2.2.7 May 14, 2019 ---
2.2.6 January 29, 2019 ---
2.2.5 December 13, 2018 ---
2.2.4 November 29, 2018 ---
2.2.3 November 19, 2018 ---
2.2.2 October 31, 2018 ---
2.2.1 October 24, 2018 ---
1.3.3 May 08, 2018 ---
1.3.2 April 18, 2018 ---
1.3.1 March 13, 2018 ---
1.2.0 October 31, 2017 ---
1.1.1 August 29, 2017 ---
1.1.0 August 13, 2017 ---
1.0.0 July 07, 2017 ---
How will I be notified of the retiring SDK?
Microsoft provides 12 months' advance notice before the end of support for the retiring SDK to help you smoothly transition to a supported SDK. You receive notifications through these communication channels: the Azure portal, Azure updates, and direct communication to assigned service administrators.
Can I author applications by using a to-be-retired Azure Cosmos DB SDK during the 12-month period?
Yes, you can use the to-be-retired Azure Cosmos DB SDK to author, deploy, and modify applications during the 12-month notice period. We recommend that you migrate to a newer supported version of the Azure Cosmos DB SDK during the 12-month notice period, as appropriate.
After the retirement date, what happens to applications that use the unsupported Azure Cosmos DB SDK?
After the retirement date, Azure Cosmos DB no longer makes bug fixes, adds new features, or provides support for the retired SDK versions. If you choose not to upgrade, Azure Cosmos DB continues to serve requests sent from the retired versions of the SDK.
Which SDK versions will have the latest features and updates?
New features and updates are added only to the latest minor version of the latest supported major SDK version. We recommend that you always use the latest version to take advantage of new features, performance improvements, and bug fixes. If you're using an old, non-retired version of the SDK, your requests to Azure Cosmos DB still function, but you don't have access to any new capabilities.
What should I do if I can't update my application before a cutoff date?
We recommend that you upgrade to the latest SDK as early as possible. After an SDK is tagged for retirement, you have 12 months to update your application. If you're not able to update by the retirement date, Azure Cosmos DB continues to serve requests sent from the retired versions of the SDK, so your running applications continue to function. But Azure Cosmos DB no longer makes bug fixes, adds new features, or provides support for the retired SDK versions.
If you have a support plan and require technical support, contact us by filing a support ticket.
How can I request features be added to an SDK or connector?
New features aren't always added to every SDK or connector immediately. If there's a feature that isn't supported that you'd like added, add feedback to our community forum .
To learn more about Azure Cosmos DB, see Microsoft Azure Cosmos DB service page.
Was this page helpful?
Yes No No
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Ask Learn Ask Learn Suggest a fix?
Was this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Ask Learn Ask Learn Suggest a fix?
Your coding agent can read these notes before it upgrades. Set up the MCP server →