Azure Cosmos DB Java SDK for API for NoSQL (legacy): Release notes and resources
APPLIES TO: NoSQL
This is the original Azure Cosmos DB Sync Java SDK v2 for API for NoSQL which supports synchronous operations.
This is not the latest Java SDK for Azure Cosmos DB! Consider using Azure Cosmos DB Java SDK v4 for your project. To upgrade, follow the instructions in the Migrate to Azure Cosmos DB Java SDK v4 guide and the Reactor vs RxJava guide.
On February 29, 2024 the Azure Cosmos DB Sync Java SDK v2.x will be retired; the SDK and all applications using the SDK will continue to function; Azure Cosmos DB will simply cease to provide further maintenance and support for this SDK. We recommend following the instructions above to migrate to Azure Cosmos DB Java SDK v4.
|API documentation||Java API reference documentation|
|Contribute to SDK||GitHub|
|Get started||Get started with the Java SDK|
|Web app tutorial||Web application development with Azure Cosmos DB|
|Minimum supported runtime||Java Development Kit (JDK) 7+|
- Removed test dependency
com.google.guava/guavadue to security vulnerabilities
- Upgraded dependency
- Upgraded dependency
- Upgraded dependency
- Fixed the retry policy for read timeouts
- Fixed a retry policy when
GoneExceptionis wrapped in
IllegalStateException- - this change is necessary to make sure Gateway cache is refreshed on 410 so the Spark connector (for Spark 2.4) can use a custom retry policy to allow queries to succeed during partition splits
- Added a new retry policy to retry on Read Timeouts
- Upgraded dependency
- Upgraded dependency
- Fixed a bug in handling a query through service interop.
- Added support for querying change feed from point in time.
- Fixes primary partition cache issue on documentCollection query.
- Added support for 449 retry custom configuration.
- Fixes connection pool timeout issue.
- Fixes auth token refresh on internal retries.
- Updated correct client side replica policy tag on databaseAccount and made databaseAccount configuration reads from cache.
- Avoiding retry on invalid partition key range error, if user provides pkRangeId.
- Optimized partition key range cache refreshes.
- Fixes the scenario where the SDK doesn't entertain partition split hint from server and results in incorrect client side routing caches refresh.
- Optimized collection cache refreshes.
- Added support to retrieve inner exception message from request diagnostic string.
- Introduced version api on PartitionKeyDefinition.
- Added separate timeout support for direct mode.
- Consuming null error message from service and producing document client exception.
- Socket connection improvement, adding SoKeepAlive default true.
- Added request diagnostics string support.
- Fixed bug in PartitionKey for Hash V2.
- Added support for composite indexes.
- Fixed bug in global endpoint manager to force refresh.
- Fixed bug for upserts with pre-conditions in direct mode.
- Fixed bug in gateway address cache.
- Multi-region write support added for direct mode.
- Added support for handling IOExceptions thrown as ServiceUnavailable exceptions, from a proxy.
- Fixed a bug in endpoint discovery retry policy.
- Fixed a bug to ensure null pointer exceptions are not thrown in BaseDatabaseAccountConfigurationProvider.
- Fixed a bug to ensure QueryIterator does not return nulls.
- Fixed a bug to ensure large PartitionKey is allowed
- Multi-region write support added for gateway mode.
- Fixed a bug in Read partition Key ranges for a query.
- Fixed a bug in setting continuation token header size in DirectHttps mode.
- Added streaming fail over support.
- Added support for custom metadata.
- Improved session handling logic.
- Fixed a bug in partition key range cache.
- Fixed a NPE bug in direct mode.
- Added support for Unique Index.
- Added support for limiting continuation token size in feed-options.
- Fixed a bug in Json Serialization (timestamp).
- Fixed a bug in Json Serialization (enum).
- Dependency on com.fasterxml.jackson.core:jackson-databind upgraded to 2.9.5.
- Improved Connection Pooling for Direct Mode.
- Improved Prefetch improvement for non-orderby cross partition query.
- Improved UUID generation.
- Improved Session consistency logic.
- Added support for multipolygon.
- Added support for Partition Key Range Statistics for Collection.
- Fixed a bug in Multi-region support.
- Improved Json Serialization performance.
- This SDK version requires the latest version of Azure Cosmos DB Emulator.
- Internal changes for Microsoft friends libraries.
- Fixed an issue in reading single partition key ranges.
- Fixed an issue in ResourceID parsing that affects database with short names.
- Fixed an issue cause by partition key encoding.
- Critical bug fixes to request processing during partition splits.
- Fixed an issue with the Strong and BoundedStaleness consistency levels.
- Added support for a new consistency level called ConsistentPrefix.
- Fixed a bug in reading collection in session mode.
- Enabled support for partitioned collection with as low as 2,500 RU/sec and scale in increments of 100 RU/sec.
- Fixed a bug in the native assembly which can cause NullRef exception in some queries.
- Fixed a bug in the query engine configuration that may cause exceptions for queries in Gateway mode.
- Fixed a few bugs in the session container that may cause an "Owner resource not found" exception for requests immediately after collection creation.
- Added support for aggregation queries (COUNT, MIN, MAX, SUM, and AVG). See Aggregation support.
- Added support for change feed.
- Added support for collection quota information through RequestOptions.setPopulateQuotaInfo.
- Added support for stored procedure script logging through RequestOptions.setScriptLoggingEnabled.
- Fixed a bug where query in DirectHttps mode may stop responding when encountering throttle failures.
- Fixed a bug in session consistency mode.
- Fixed a bug which may cause NullReferenceException in HttpContext when request rate is high.
- Improved performance of DirectHttps mode.
- Added simple client instance-based proxy support with ConnectionPolicy.setProxy() API.
- Added DocumentClient.close() API to properly shutdown DocumentClient instance.
- Improved query performance in direct connectivity mode by deriving the query plan from the native assembly instead of the Gateway.
- Set FAIL_ON_UNKNOWN_PROPERTIES = false so users don't need to define JsonIgnoreProperties in their POJO.
- Refactored logging to use SLF4J.
- Fixed a few other bugs in consistency reader.
- Fixed a bug in the connection management to prevent connection leaks in direct connectivity mode.
- Fixed a bug in the TOP query where it may throw NullReference exception.
- Improved performance by reducing the number of network call for the internal caches.
- Added status code, ActivityID and Request URI in DocumentClientException for better troubleshooting.
- Fixed an issue in the connection management for stability.
- Added support for BoundedStaleness consistency level.
- Added support for direct connectivity for CRUD operations for partitioned collections.
- Fixed a bug in querying a database with SQL.
- Fixed a bug in the session cache where session token may be set incorrectly.
- Added support for cross partition parallel queries.
- Added support for TOP/ORDER BY queries for partitioned collections.
- Added support for strong consistency.
- Added support for name based requests when using direct connectivity.
- Fixed to make ActivityId stay consistent across all request retries.
- Fixed a bug related to the session cache when recreating a collection with the same name.
- Added Polygon and LineString DataTypes while specifying collection indexing policy for geo-fencing spatial queries.
- Fixed issues with Java Doc for Java 1.8.
- Fixed a bug in PartitionKeyDefinitionMap to cache single partition collections and not make extra fetch partition key requests.
- Fixed a bug to not retry when an incorrect partition key value is provided.
- Added the support for multi-region database accounts.
- Added support for automatic retry on throttled requests with options to customize the max retry attempts and max retry wait time. See RetryOptions and ConnectionPolicy.getRetryOptions().
- Deprecated IPartitionResolver based custom partitioning code. Please use partitioned collections for higher storage and throughput.
- Added retry policy support for rate limiting.
- Added time to live (TTL) support for documents.
- Fixed a bug in HashPartitionResolver to generate hash values in little-endian to be consistent with other SDKs.
- Add Hash & Range partition resolvers to assist with sharding applications across multiple partitions.
- Implement Upsert. New upsertXXX methods added to support Upsert feature.
- Implement ID Based Routing. No public API changes, all changes internal.
- Release skipped to bring version number in alignment with other SDKs
- Supports GeoSpatial Index
- Validates ID property for all resources. Ids for resources cannot contain ?, /, #, , characters or end with a space.
- Adds new header "index transformation progress" to ResourceResponse.
- Implements V2 indexing policy
- GA SDK
Release and retirement dates
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 recommend that you always upgrade to the latest SDK version as early as possible.
After 30 May 2020, Azure Cosmos DB will no longer make bug fixes, add new features, and provide support to versions 1.x of the Azure Cosmos DB Java 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.
After 29 February 2016, Azure Cosmos DB will no longer make bug fixes, add new features, and provide support to versions 0.x of the Azure Cosmos DB Java SDK for API for NoSQL. If you prefer not to upgrade, requests sent from version 0.x of the SDK will continue to be served by the Azure Cosmos DB service.
|Version||Release Date||Retirement Date|
|2.6.1||Dec 17, 2020||Feb 29, 2024|
|2.6.0||July 16, 2020||Feb 29, 2024|
|2.5.1||June 03, 2020||Feb 29, 2024|
|2.5.0||May 12, 2020||Feb 29, 2024|
|2.4.7||Feb 20, 2020||Feb 29, 2024|
|2.4.6||Jan 24, 2020||Feb 29, 2024|
|2.4.5||Nov 10, 2019||Feb 29, 2024|
|2.4.4||Oct 24, 2019||Feb 29, 2024|
|2.4.2||Sep 26, 2019||Feb 29, 2024|
|2.4.1||Jul 18, 2019||Feb 29, 2024|
|2.4.0||May 04, 2019||Feb 29, 2024|
|2.3.0||Apr 24, 2019||Feb 29, 2024|
|2.2.3||Apr 16, 2019||Feb 29, 2024|
|2.2.2||Apr 05, 2019||Feb 29, 2024|
|2.2.0||Mar 27, 2019||Feb 29, 2024|
|2.1.3||Mar 13, 2019||Feb 29, 2024|
|2.1.2||Mar 09, 2019||Feb 29, 2024|
|2.1.1||Dec 13, 2018||Feb 29, 2024|
|2.1.0||Nov 20, 2018||Feb 29, 2024|
|2.0.0||Sept 21, 2018||Feb 29, 2024|
|1.16.4||Sept 10, 2018||May 30, 2020|
|1.16.3||Sept 09, 2018||May 30, 2020|
|1.16.2||June 29, 2018||May 30, 2020|
|1.16.1||May 16, 2018||May 30, 2020|
|1.16.0||March 15, 2018||May 30, 2020|
|1.15.0||Nov 14, 2017||May 30, 2020|
|1.14.0||Oct 28, 2017||May 30, 2020|
|1.13.0||August 25, 2017||May 30, 2020|
|1.12.0||July 11, 2017||May 30, 2020|
|1.11.0||May 10, 2017||May 30, 2020|
|1.10.0||March 11, 2017||May 30, 2020|
|1.9.6||February 21, 2017||May 30, 2020|
|1.9.5||January 31, 2017||May 30, 2020|
|1.9.4||November 24, 2016||May 30, 2020|
|1.9.3||October 30, 2016||May 30, 2020|
|1.9.2||October 28, 2016||May 30, 2020|
|1.9.1||October 26, 2016||May 30, 2020|
|1.9.0||October 03, 2016||May 30, 2020|
|1.8.1||June 30, 2016||May 30, 2020|
|1.8.0||June 14, 2016||May 30, 2020|
|1.7.1||April 30, 2016||May 30, 2020|
|1.7.0||April 27, 2016||May 30, 2020|
|1.6.0||March 29, 2016||May 30, 2020|
|1.5.1||December 31, 2015||May 30, 2020|
|1.5.0||December 04, 2015||May 30, 2020|
|1.4.0||October 05, 2015||May 30, 2020|
|1.3.0||October 05, 2015||May 30, 2020|
|1.2.0||August 05, 2015||May 30, 2020|
|1.1.0||July 09, 2015||May 30, 2020|
|1.0.1||May 12, 2015||May 30, 2020|
|1.0.0||April 07, 2015||May 30, 2020|
|0.9.5-prelease||Mar 09, 2015||February 29, 2016|
|0.9.4-prelease||February 17, 2015||February 29, 2016|
|0.9.3-prelease||January 13, 2015||February 29, 2016|
|0.9.2-prelease||December 19, 2014||February 29, 2016|
|0.9.1-prelease||December 19, 2014||February 29, 2016|
|0.9.0-prelease||December 10, 2014||February 29, 2016|
How will I be notified of the retiring SDK?
Microsoft will provide 12 month's advance notice before the end of support of the retiring SDK to facilitate a smooth transition to a supported SDK. We'll notify you through various 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'll be able to author, deploy, and modify applications by using the to-be-retired Azure Cosmos DB SDK 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 will no longer make bug fixes, add new features, or provide support to the retired SDK versions. If you prefer not to upgrade, requests sent from the retired versions of the SDK will continue to be served by the Azure Cosmos DB service.
Which SDK versions will have the latest features and updates?
New features and updates will be 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 will still function, but you won'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'll have 12 months to update your application. If you're not able to update by the retirement date, requests sent from the retired versions of the SDK will continue to be served by Azure Cosmos DB, so your running applications will continue to function. But Azure Cosmos DB will no longer make bug fixes, add new features, or provide support to 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 are not always added to every SDK or connector immediately. If there is a feature not supported that you would like added, please add feedback to our community forum.
To learn more about Azure Cosmos DB, see Microsoft Azure Cosmos DB service page.