A newer version of this documentation is available.

View Latest

Couchbase Java SDK Release Notes and Archives

    +
    {description}

    These pages cover the 3.x versions of the Couchbase Java SDK. For release notes, download links, and installation methods for 2.7 and earlier releases of the Couchbase Java Client, which will not work with Distributed Transactions, please see the 2.x Java Release Notes & Download Archive.

    Transactions is available as a separate library for the Java SDK. Please see the Transaction Release Notes page.

    Installation

    At least Java 8 is required for current releases; see the Compatibility section for details. We recommend running the latest LTS version (i.e. at the time of writing JDK 11) with the highest patch version available.

    <dependencies>
        <dependency>
            <groupId>com.couchbase.client</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.8</version>
        </dependency>
    </dependencies>

    Version 3.3.4 (9 September 2022)

    Version 3.3.4 is the fifth release of the 3.3 series, and is a maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.3.4

    • com.couchbase.client:core-io:2.3.4

    • io.projectreactor:reactor-core:3.4.22

    • org.reactivestreams:reactive-streams:1.0.4

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 1. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.1.4

    OpenTelemetry 1.16.0

    Committed

    tracing-opentracing

    1.1.4

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.3.4

    OpenTelemetry 1.16.0

    Volatile

    metrics-micrometer

    0.3.4

    Micrometer 1.9.2

    Volatile

    Improvements

    • JVMCBC-1131: Added ability to track the number of created instances. Users can now set to hard-fail if too many instances are created.

    • JVMCBC-1134: Updated MemcachedProtocol::decodeStatus to be inlineable.

    • JVMCBC-1135: Moved Core#reconfiguration off IO threads.

    • JVMCBC-1143: Failed telemetry spans will now record their exception and error status.

    • JVMCBC-1145: Updated maintenance dependencies.

    • JCBC-1985: Added optional Cluster instance limit.

    • JCBC-1975: Added support for a Couchbase Server 7.1 performance optimisation for transactions that reduces memory requirements in clients.

    • JCBC-1989: Added Closeable capability to the Cluster class, which enables usage of the try-with-resources pattern.

    • JVMCBC-1139: Added support for Configuration Profiles. Note that this API is currently marked as @Stability.Volatile and could be subject to change.

    • JVMCBC-1126: Updated metrics and tracing dependencies.

    Bug Fixes

    • JVMCBC-1125: Fixed a rare CompletionException seen from transactions when a very aggressive cleanup window is configured.

    • JVMCBC-1136: Removed verbose transactions cleanup debug "stop on" logging that was being logged at INFO level.

    • JCBC-1993: Fixed issue where a NullPointerException was thrown for a non-existent FTS index.

    • JCBC-1955: Fixed a bug where concurrent transactions could hang due to scheduler starvation.

    Version 3.3.3 (2 August 2022)

    Version 3.3.3 is the fourth release of the 3.3 series, and is a maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.3.3

    • com.couchbase.client:core-io:2.3.3

    • io.projectreactor:reactor-core:3.4.21

    • org.reactivestreams:reactive-streams:1.0.4

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 2. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.1.2

    OpenTelemetry 1.13.0

    Committed

    tracing-opentracing

    1.1.2

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.3.2

    OpenTelemetry 1.13.0-alpha

    Volatile

    metrics-micrometer

    0.3.2

    Micrometer 1.8.4

    Volatile

    Improvements

    • JVMCBC-1116: Dependency versions have been increased.

    • JVMCBC-1121: In some rare cases — such as an application crash — a transaction is left for the async cleanup algorithm to finish; by default it will find this within one minute. In cases where this does not happen, this will trigger a warning after two hours — not the two days that was previously the case.

    Bug Fixes

    • JVMCBC-1110: Transaction clients now reliably remove themselves from client records on shutdown.

    • JVMCBC-1119: The num (kv) nodesExt to equal number of nodes check can lead to otherwise healthy clusters being flagged as not ready. The check has been removed, and now the ` Bucket waitUntilReady will not timeout on these edge cases.

    • JVMCBC-1120: ClusterConfig#allNodeAddresses now takes global config into account — avoiding the triggering of some unnecessary reconfigurations.

    • JVMCBC-1112: Deprecated Reactor Processors have been replaced.

    • JVMCBC-1115: The SDK now allows for configurations with only TLS ports.

    Version 3.3.2 (6 July 2022)

    Version 3.3.2 is the third release of the 3.3 series, and is a maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.3.2

    • com.couchbase.client:core-io:2.3.2

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 3. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.1.2

    OpenTelemetry 1.13.0

    Committed

    tracing-opentracing

    1.1.2

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.3.2

    OpenTelemetry 1.13.0-alpha

    Volatile

    metrics-micrometer

    0.3.2

    Micrometer 1.8.4

    Volatile

    Bug Fixes

    • JVMCBC-1103: To reduce overhead, the MAX_PARALLEL_FETCH value in KeyValueBucketRefresher has been updated to only fetch one config per poll interval.

    • JVMCBC-1104: Fixed issue where the global refresher did not honor the config poll interval.

    Version 3.3.1 (8 June 2022)

    Version 3.3.1 is the second release of the 3.3 series, and is a maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.3.1

    • com.couchbase.client:core-io:2.3.1

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 4. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.1.1

    OpenTelemetry 1.13.0

    Committed

    tracing-opentracing

    1.1.1

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.3.1

    OpenTelemetry 1.13.0-alpha

    Volatile

    metrics-micrometer

    0.3.1

    Micrometer 1.8.4

    Volatile

    Improvements

    • JVMCBC-1089: SDK users can now customize the ConsoleLogger format.

    • JVMCBC-1093: Previously, when a DNS SRV lookup failure occured, the SDK logged this as a WARNING along with a stack trace. The lookup failure is typically harmless, so the log message has now been downgraded to INFO level, without a stack trace.

    • JVMCBC-1088: Updated Netty to version 4.1.77.Final.

    Version 3.3.0 (26 April 2022)

    Version 3.3.0 is the first release of the 3.3 series.

    The three headline changes in this release:

    • Supports the new functionality of Couchbase Server 7.1.

    • Directly integrates transactions into the SDK rather than requiring a separate library. Existing users of the transactions library can refer to the Distributed Transactions Migration Guide to see the simple steps needed to migrate, which we recommend.

    • Bundles the public server security certificates for Couchbase Capella, to make it easier for users to get started with Capella.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.3.0

    • com.couchbase.client:core-io:2.3.0

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 5. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.1.0

    OpenTelemetry 1.13.0

    Committed

    tracing-opentracing

    1.1.0

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.3.0

    OpenTelemetry 1.13.0-alpha

    Volatile

    metrics-micrometer

    0.3.0

    Micrometer 1.8.4

    Volatile

    Improvements

    • JCBC-1929: Integrated transactions library into SDK.

    • JVMCBC-1070: Bundled public Capella CA certificate.

    • JVMCBC-1074: If you try to connect to Capella without enabling TLS, now you’ll get an exception that says TLS is required (instead of an UnknownHostException).

    • JVMCBC-1076: Deprecated Event.createdAt() in favor of a version that returns an Instant.

    • JVMCBC-1078: Made schedulerThreadCount customizable.

    • JVMCBC-1079: Added ConnectionString SDK 3 compatibility attributes.

    • JVMCBC-1082: Updated maintenance dependencies.

    • JVMCBC-1085: Exposed last connect attempt failure through Diagnostics.

    • JCBC-1886: Allow to list the number of currently available replicas for a document ID.

    • JCBC-1923: Added warning when ignoring connection string parameters or scheme.

    Bugs

    • JCBC-1922: NOT_STORED when inserting a document will now correctly raise a DocumentAlreadyExistsException (rather than a DocumentNotFoundException as before).

    • JVMCBC-1077: Shutting down a ClusterEnvironment now correctly stops a Meter owned by the cluster. This plugs a resource leak where LoggingMeter worker threads would never be stopped.

    Version 3.2.7 (25 April 2022)

    Version 3.2.7 is the eighth release of the 3.2 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.7

    • com.couchbase.client:core-io:2.2.7

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 6. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.7

    OpenTelemetry 1.9.1

    Committed

    tracing-opentracing

    1.0.7

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.7

    OpenTelemetry 1.7.1-alpha

    Volatile

    metrics-micrometer

    0.2.7

    Micrometer 1.7.5

    Volatile

    Bugs

    • JCBC-1922: The KeyValue error code NOT_STORED is now properly mapped to DocumentExistsException on insert and mutateIn.

    • JVMCBC-1077: The environment now properly shuts down the Meter if it is owned and not passed in externally.

    Improvements

    • JVMCBC-1082: Updated internal and external dependencies.

    • Netty from 4.1.73 to 4.1.76

    • Jackson from 2.13.1 to 2.13.2 (and 2.13.2.2)

    • Reactor from 3.4.14 to 3.4.17

    Version 3.2.6 (2 March 2022)

    Version 3.2.6 is the seventh release of the 3.2 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.6

    • com.couchbase.client:core-io:2.2.6

    • io.projectreactor:reactor-core:3.4.14

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 7. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.6

    OpenTelemetry 1.9.1

    Committed

    tracing-opentracing

    1.0.6

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.6

    OpenTelemetry 1.7.1-alpha

    Volatile

    metrics-micrometer

    0.2.6

    Micrometer 1.7.5

    Volatile

    Bugs

    • JVMCBC-1060: Fixed an issue where rate limited exceptions were not thrown for SearchIndexManager errors.

    • JVMCBC-1071: The SDK now ensures that negative values are not sent to the ValueRecorder.

    • JCBC-1918: Executing a Full-Text Search query with an open-ended date range facet no longer results in a NullPointerException.

    • JCBC-1919: Index fields are now quoted in the analytics index manager.

    • JCBC-1921: QueryIndexManager buildDeferredIndexes no longer throws a ParsingFailureException against Couchbase Server 6.0.

    New Features

    • JVMCBC-1057: Added core infrastructure for the Backup service. Users can now make custom HTTP requests to the Backup service.

    • JVMCBC-1064: When implementing a custom RetryStrategy, a new overload of RetryAction.noRetry lets you specify an exception translator for converting the default request cancellation exception into your preferred exception class.

    Improvements

    • JVMCBC-1065: RetryReason.allowsNonIdempotentRetry() is now public, so you can call it from a custom RetryStrategy.

    • JVMCBC-1066: When SecurityConfig.Builder.trustCertificate(Path) is given a file containing more than one certificate, it now trusts all the certificates instead of just the first one. Likewise, the result of SecurityConfig.decodeCertificates(List<String>) now includes all certificates in each string, not just the first certificate in each string.

    • JVMCBC-1068: Added explicit handling of FeatureNotAvailable for Magma on CE.

    • JVMCBC-1069: Added explicit handling of FeatureNotAvailable for Query CE.

    • JCBC-1916: Updated the Analytics Management API Javadocs.

    • JCBC-1917: You can now configure properties of the ClusterEnvironment without having to build and shut down the environment. The new ClusterOptions.environment(Consumer<ClusterEnvironment.Builder>) method lets you configure properties of a ClusterEnvironment owned by the Cluster, so you don’t need to manage the environment yourself. Example usage:

    Cluster cluster = Cluster.connect("localhost", clusterOptions(username, password)
        .environment(env -> env.ioConfig().captureTraffic(ServiceType.MANAGER)));

    Version 3.2.5 (2 February 2022)

    Version 3.2.5 is the sixth release of the 3.2 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.5

    • com.couchbase.client:core-io:2.2.5

    • io.projectreactor:reactor-core:3.4.14

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 8. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.5

    OpenTelemetry 1.9.1

    Committed

    tracing-opentracing

    1.0.5

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.5

    OpenTelemetry 1.7.1-alpha

    Volatile

    metrics-micrometer

    0.2.5

    Micrometer 1.7.5

    Volatile

    API Impacting

    • JCBC-1901: Removed the Azure link type from the analytics management API, due to a change in the underlying server API. (Note that this interface is marked @Stability.Volatile indicating that it can change.)

    Bugs

    • JCBC-1895: Fixed an issue where lookupInResult.contentAs(0, Boolean.class) was throwing a DecodingFailureException on a Sub-Document exists operation.

    • JCBC-1896: Fixed an issue where JsonValueSerializerWrapper was unable to support decoding via TypeRef.

    • JCBC-1904: Fixed issues with constant and URL bindings and also introduced convenience methods to load a function from raw JSON.

    • JVMCBC-1046: Added fix to not load the global config if a node is not in the seed node list anymore.

    • JVMCBC-1058: The SDK now throws a more descriptive FeatureNotAvailableException for scopes and collections on memcached buckets.

    Improvements

    • JCBC-1860: ConflictResolutionType.CUSTOM has now been added to the bucket management API.

    • JCBC-1864: FTS options now include IncludeLocations and Operator.

    • JCBC-1876: Query API now supports preserving TTL.

    • JCBC-1882: Index management API now supports managing indexes for a collection.

    • JCBC-1898: Added convenience method for getting raw bytes from GetResult.

    • JCBC-1902: The SDK now sends the configured user timeout to search.

    • JCBC-1905: Added convenience methods for loading eventing function JSON.

    • JCBC-1909: Added scanWait to AnalyticsOptions.

    • JCBC-1903: Added javadocs for bucket management API.

    • JCBC-1908: Added javadocs for query index management APIs.

    • JVMCBC-1055, JVMCBC-1047, JVMCBC-1051: Updated dependencies. Netty goes from 4.1.72.Final to 4.1.73.Final. Jackson from 2.13.0 to 2.13.1. Reactor from 3.4.12 to 3.4.14. log4j (an optional dependency) from 2.15.0 to 2.17.1.

    • JVMCBC-1037: Added a minor performance optimisation that avoids whenComplete closure for timeout cancellation.

    • JVMCBC-1045: Added an internal watchdog that updates the cluster configuration if the number of nodes changes.

    • JVMCBC-1048: Added change that ensures the SDK always sets RequestContext on RequestSpan.

    • JVMCBC-1056: Added more log information on unexpected endpoint disconnect.

    • JVMCBC-1059: The SDK now handles any retry:true field in a query error result by retrying it.

    Version 3.2.4 (9 December 2021)

    Version 3.2.4 is the fifth release of the 3.2 series.

    This release introduces support for JDK 17.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.4

    • com.couchbase.client:core-io:2.2.4

    • io.projectreactor:reactor-core:3.4.12

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 9. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.4

    OpenTelemetry 1.7.1

    Committed

    tracing-opentracing

    1.0.4

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.4

    OpenTelemetry 1.7.1-alpha

    Volatile

    metrics-micrometer

    0.2.4

    Micrometer 1.7.5

    Volatile

    Bugs

    • JCBC-1892: EventingFunctionSettings can now be empty - this fixes an issue with loading eventing functions from the cluster.

    Improvements

    • JVMCBC-1033, JVMCBC-1034: Updated internal and external dependencies to their latest bugfix versions. This also updates OpenTelemetry to 1.7.x.

    • JCBC-1881: Added (volatile) support for the magma storage backend when creating a bucket through the bucket manager.

    • JVMCBC-1035: The (internal) subDocumentField is now serializable - this is needed for apache spark integration.

    • JVMCBC-1032: Added (volatile) support for Rate/Quota Limits. This is needed for Couchbase Capella.

    • JVMCBC-1039: Included httpStatus in Query and Analytics Error Context, as well as the vbucket in the KV error context. This helps with debugging.

    Version 3.2.3 (2 November 2021)

    Version 3.2.3 is the fourth release of the 3.2 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.3

    • com.couchbase.client:core-io:2.2.3

    • io.projectreactor:reactor-core:3.4.9

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 10. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.3

    OpenTelemetry 1.3.0

    Committed

    tracing-opentracing

    1.0.3

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.3

    OpenTelemetry 1.3.0-alpha

    Volatile

    metrics-micrometer

    0.2.3

    Micrometer 1.7.0

    Volatile

    Improvements

    • JVMCBC-1026: Support for error map v2 has been added to ensure the config can be parsed without failure.

    Version 3.2.2 (6 October 2021)

    Version 3.2.2 is the third release of the 3.2 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.2

    • com.couchbase.client:core-io:2.2.2

    • io.projectreactor:reactor-core:3.4.9

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 11. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.2

    OpenTelemetry 1.3.0

    Committed

    tracing-opentracing

    1.0.2

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.2

    OpenTelemetry 1.3.0-alpha

    Volatile

    metrics-micrometer

    0.2.2

    Micrometer 1.7.0

    Volatile

    Improvements

    • JCBC-1872: Bring NodeLocatorHelper to SDK 3 from 2.

    • JCBC-1875: Document and polish Eventing Management API.

    • JVMCBC-1015: Improve client side error message when TLS is enforced on the server side.

    • JVMCBC-1016: Gracefully handle more invalid connection string cases.

    • JVMCBC-1022: Batch-Log messages in DefaultEventBus. Now events which are overflowing are not directly logged to stderr but rather batched up and logged at interval. Note that this implies some "loss of precision", as not all dropped events are logged - one event per type is preserved.

    Bugs

    • JVMCBC-1017: Fixed issue with Threshold Logging Tracing not working due to RequestContext not being set.

    • JCBC-1873: Rename EventingFunction to validate_ssl_certificates to conform to spec.

    • JVMCBC-1020: Added target property to QueryRequest and ensured it is honored for prepare and execute, so they are both run on the same node. This fix removes need for TargetedQueryRequest.

    Version 3.2.1 (1 September 2021)

    Version 3.2.1 is the second release of the 3.2 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.1

    • com.couchbase.client:core-io:2.2.1

    • io.projectreactor:reactor-core:3.4.9

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 12. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.1

    OpenTelemetry 1.3.0

    Committed

    tracing-opentracing

    1.0.1

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.1

    OpenTelemetry 1.3.0-alpha

    Volatile

    metrics-micrometer

    0.2.1

    Micrometer 1.7.0

    Volatile

    Known Issues

    • JVMCBC-1017: The ThresholdLoggingTracer will not record any request and will not log them into the log file. If you rely on this functionality please use 3.1.7 as only 3.2.0 and 3.2.1 are affected. This issue will be addressed in 3.2.2.

    Bug Fixes

    • JVMCBC-1002: Default log level reverted to INFO.

    • JVMCBC-1007: LoggingMeter was incorrectly marked as Volatile in SDK 3.2 — now fixed.

    • JCBC-1850: Fixed NullPointerException with OpenTracing.

    Improvements

    • JCBC-1732: Eventing Management API added.

    • JCBC-1852: FLE: Optionally read @Encrypted POJO properties from unencrypted JSON fields.

    • JCBC-1858: Added convenience method for getting raw JSON bytes from LookupInResult.

    • JCBC-1859: Allow to create CollectionSpec for default scope.

    • JCBC-1868: Make JsonValueModule compatible with Jackson < 2.8.

    • JVMCBC-1010: Maintenance dependency bump.

    • JVMCBC-990: Fixed WaitUntilReady timing out with 6.0.x and unhealthy seed nodes.

    • JVMCBC-999: Properly map server query timeout while streaming.

    • JVMCBC-1004: Configure and apply default log level for ConsoleLogger.

    • JVMCBC-1005: Allow to export Context as Map.

    • JVMCBC-1006: ErrorContext must be included in message.

    Version 3.2.0 (20 July 2021)

    Version 3.2.0 is the first release of the 3.2 series. It promotes to GA support for the scopes and collections provided by Couchbase Server 7.0, and also OpenTelemetry.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.2.0

    • com.couchbase.client:core-io:2.2.0

    • io.projectreactor:reactor-core:3.4.6

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 13. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    1.0.0

    OpenTelemetry 1.3.0

    Committed

    tracing-opentracing

    1.0.0

    OpenTracing 0.33.0

    Committed

    metrics-opentelemetry

    0.2.0

    OpenTelemetry 1.3.0-alpha

    Volatile

    metrics-micrometer

    0.2.0

    Micrometer 1.7.0

    Volatile

    Known Issues

    • JVMCBC-1017: The ThresholdLoggingTracer will not record any request and will not log them into the log file. If you rely on this functionality please use 3.1.7 as only 3.2.0 and 3.2.1 are affected. This issue will be addressed in 3.2.2.

    Bug Fixes

    • JVMCBC-949: Opening a non-default collection on an memcached bucket now fails fast.

    • JVMCBC-983: Ignore slow subscribers on certain Flux intervals.

    • JCBC-1822: BatchHelper now supports MDS deployments.

    Interface Changes

    All interface changes are to interfaces that are currently in beta and marked @Stability.Volatile or @Stability.Uncommitted.

    • JVMCBC-978: Rename AggregatingMeter to LoggingMeter.

    • JVMCBC-934: Threshold and Orphan output is now in new format.

    • JVMCBC-979: Rename ThresholdRequestTracer to ThresholdLoggingTracer.

    • JCBC-1823: Promote collection APIs from Volatile to Committed.

    • JCBC-1844: Promote BatchHelper from Volatile to Uncommitted.

    Improvement

    • JVMCBC-980: Add exception wrappers to Tracers and Meters.

    • JVMCBC-987: Allow supplying an SDK2-compatible memcached hashing strategy.

    • JVMCBC-988: Map Query Error 13014 to AuthenticationException.

    • JVMCBC-989: Add timeout_ms to threshold logging tracer output.

    • JVMCBC-991: Optimize metric dispatching.

    • JVMCBC-992: Cache NodeIdentifier in NodeInfo.

    • JVMCBC-993: Optimize early discard of events which are not going to be logged.

    • JVMCBC-996: Throw FeatureNotAvailableException if scope level queries are not available.

    • JVMCBC-997: Duplicate attributes from dispatch_to_server to improve tracing.

    • JVMCBC-998: Performance: Do not set tracing spans if not needed.

    • JVMCBC-981: Support CoreHttpClient requests to manager service.

    • JVMCBC-984: Dependency bump: Netty 4.1.63 to 4.1.65, micrometer 1.6.6 to 1.7.0.

    • JCBC-1242, JCBC-1837: Add OSGi bundle.

    • JCBC-1787: Validate expiry instants.

    • JCBC-1838: Add support for SDK2-compatible LegacyTranscoder.

    • JCBC-1841: Update OpenTelemetry to 1.3.0.

    Version 3.1.8 (1 March 2022)

    Version 3.1.8 is the ninth release of the 3.1 series, bringing stabilizations over 3.1.7.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.8

    • com.couchbase.client:core-io:2.1.8

    • io.projectreactor:reactor-core:3.4.15

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 14. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    0.3.8

    OpenTelemetry 1.2.0

    Volatile

    tracing-opentracing

    0.3.8

    OpenTracing 0.33.0

    Volatile

    metrics-opentelemetry

    0.1.8

    OpenTelemetry 1.2.0-alpha

    Volatile

    metrics-micrometer

    0.1.8

    Micrometer 1.6.6

    Volatile

    Bug Fixes

    • JVMCBC-1067: Internal and external maintenance dependencies are updated to their latest available bugfix releases (including Netty to 4.1.74.Final).

    • JVMCBC-1046: Added fix to not load the global config if a node is not in the seed node list anymore.

    • JVMCBC-1006: ErrorContext is now included in the message of a CouchbaseException.

    • JCBC-1895: Fixed an issue where lookupInResult.contentAs(0, Boolean.class) was throwing a DecodingFailureException on a Sub-Document exists operation.

    • JCBC-1896: Fixed an issue where JsonValueSerializerWrapper was unable to support decoding via TypeRef.

    Version 3.1.7 (11 August 2021)

    Version 3.1.7 is the eigth release of the 3.1 series, bringing stabilizations and enhancements over 3.1.6.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.7

    • com.couchbase.client:core-io:2.1.7

    • io.projectreactor:reactor-core:3.4.6

    • org.reactivestreams:reactive-streams:1.0.3

    Optional artifacts on top of this SDK version are tested for the following compatibilities:

    Table 15. Optional Artifact Version Compatibility
    Artifact Version Built Against API Stability

    tracing-opentelemetry

    0.3.7

    OpenTelemetry 1.2.0

    Volatile

    tracing-opentracing

    0.3.7

    OpenTracing 0.33.0

    Volatile

    metrics-opentelemetry

    0.1.7

    OpenTelemetry 1.2.0-alpha

    Volatile

    metrics-micrometer

    0.1.7

    Micrometer 1.6.6

    Volatile

    Bug Fixes

    • JVMCBC-949: Opening a non-default collection on an memcached bucket now fails fast.

    • JVMCBC-983: Ignore slow subscribers on certain Flux intervals.

    • JCBC-1822: BatchHelper now supports MDS deployments.

    • JCBC-1850: Ignore null values for attributed in OpenTelemetry and OpenTracing.

    • JVMCBC-990: Gracefully handle cluster-level WaitUntilReady against clusters < 6.5.

    Improvements

    • JVMCBC-996: Throw FeatureNotAvailableException if scope level queries are not available.

    • JVMCBC-988: Query error code 13014 is now mapped to AuthenticationException.

    • JCBC-1838: Add support for SDK2-compatible LegacyTranscoder.

    • JVMCBC-987: Allow supplying an SDK2-compatible memcached hashing strategy.

    • JVMCBC-999: Properly map server query timeout while streaming.

    Version 3.1.6 (4 June 2021)

    Version 3.1.6 is the seventh release of the 3.1 series, bringing stabilizations and enhancements over 3.1.5.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.6

    • com.couchbase.client:core-io:2.1.6

    • io.projectreactor:reactor-core:3.4.6

    • org.reactivestreams:reactive-streams:1.0.3

    Bug Fixes

    • JCBC-1676: Bucket creation now succeeds against Community Edition 6.5 and above.

    • JVMCBC-972: Only open one GCCCP connection per node.

    Improvements

    • JCBC-1808: Updated tracing and metrics module dependencies.

    • JCBC-1649: Update analytics management API to support compound dataverse names.

    • JCBC-1815: Improve error context for BatchHelper.

    • JVMCBC-939: Improve no collection access handling.

    • JVMCBC-974: Restructure AggregatingMeter output format.

    • JVMCBC-975: Further improve wait until ready diagnostics.

    • JVMCBC-977: Improve bucket configuration handling (revEpoch).

    Version 3.1.5 (6 May 2021)

    Version 3.1.5 is the sixth release of the 3.1 series, bringing stabilizations and enhancements over 3.1.4.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.5

    • com.couchbase.client:core-io:2.1.5

    • io.projectreactor:reactor-core:3.4.5

    • org.reactivestreams:reactive-streams:1.0.3

    Bug Fixes

    • JCBC-1804: Ensure contentAsObject/Array() works with a custom JsonSerializer.

    • JVMCBC-965: Better error logging during bucket failures, which helps with troubleshooting.

    • JVMCBC-963: Add better retry handling for local and global bucket config fetch failures, making it more resilient.

    • JVMCBC-967: Work around and fix a OverflowException with PersistTo/ReplicateTo, caused by Reactor.

    Improvements

    • JVMCBC-958: Improve the performance of individual collection ID fetches, speeding up the time of bootstrap whan a lot of collections are opened.

    • JCBC-1756: Adds volatile support for preserving the expiry on certain mutation operations.

    • JVMCBC-959: Allow IoEnvironment config to be overridden by system properties.

    • JCBC-1801: Allow to create a SearchIndex from a JSON definition.

    • JVMCBC-962: Add (internal, volatile) request callback functionality.

    • JCBC-1733: Add support for collections to SearchOptions.

    Version 3.1.4 (7 April 2021)

    Version 3.1.4 is the fifth release of the 3.1 series, bringing stabilizations and enhancements over 3.1.3.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.4

    • com.couchbase.client:core-io:2.1.4

    • io.projectreactor:reactor-core:3.4.4

    • org.reactivestreams:reactive-streams:1.0.3

    Due to protocol level changes, Java SDK 3.1.4 and later are not compatible with pre-release versions of Couchbase Server 7.0.

    Bug Fixes

    • JCBC-1798: Fixes ViewResult.metaData() throwing Exception when debug=true.

    • JVMCBC-940: Better error handling of collection ID fetch failures.

    • JVMCBC-948: CAS is only usable with Sub-Document when using StoreSemantics.REPLACE. This server-side restriction is now also checked client-side, and a InvalidArgumentException raised.

    • JVMCBC-950: waitUntilReady is now more resilient to just-created buckets.

    • JVMCBC-954: More resilient handling of rebalances.

    Improvements

    • JCBC-1786: Transcoders now allow contentAs(Object.class). Java Map and List collections are used to represent JSON objects and arrays.

    • JCBC-1795: Allow MutateInSpec.remove(""), which removes the entire document.

    • JVMCBC-936: Allow customizing TLS cipher list.

    • JVMCBC-941: Support modified protocol for collections in Couchbase Server 7.0 (in beta).

    • JVMCBC-943: Apply OpenTelemetry best practices.

    • JVMCBC-944: Add implementation version to OpenTelemetry APIs.

    • JVMCBC-947: Remove request counter metric.

    • JVMCBC-951: Move GetAny/AllReplicas into core.

    • JVMCBC-955: Distinguish between CAS mismatch and DML failure on query error.

    Version 3.1.3 (2 March 2021)

    Version 3.1.3 is the fourth release of the 3.1 series, bringing stabilizations and enhancements over 3.1.2.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.3

    • com.couchbase.client:core-io:2.1.3

    • io.projectreactor:reactor-core:3.4.3

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    • JCBC-1776, JVMCBC-924, JVMCBC-925: Updated dependencies: OpenTelemetry to 1.0.0, Netty dependency to 4.1.59, netty-tcnative-boringssl-static to 2.0.36, Reactor to 2.4.3, Jackson to 2.12.1.

    • JCBC-1774: Added pre-flight sanity check before using a JacksonJsonSerializer found on the classpath.

    • JVMCBC-919: Support for Project Reactor BlockHound integration.

    • JVMCBC-926: Performance: Replace new byte[] full copies with ByteBufUtil.getBytes.

    • JVMCBC-927: Performance: Improve performance of metrics hot code path.

    Bugs

    • JVMCBC-930: Threshold and Orphan Reporting now report the correct time units.

    • JVMCBC-932: Fixed a memory leak when OrphanReporter is disabled.

    • JVMCBC-933: ThresholdRequestTracer and OrphanReporter now use bounded queues.

    Internal Improvements

    Version 3.1.2 (2 February 2021)

    Version 3.1.2 is the third release of the 3.1 series, bringing stabilizations and enhancements over 3.1.1.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.2

    • com.couchbase.client:core-io:2.1.2

    • io.projectreactor:reactor-core:3.4.1

    • org.reactivestreams:reactive-streams:1.0.3

    API Affecting

    • JCBC-1763: CollectionManager::getScope is now deprecated, in favour of using getAllScopes.

    Enhancements

    • JVMCBC-915: As a performance optimization, loading a collection now only fetches the information required for that collection, rather than the full collection manifest.

    • JVMCBC-916: Any send HTTP request will send a hostname if hostnames are used, rather than IP, leading to consistent hostname use across the system.

    Version 3.1.1 (12 January 2021)

    Version 3.1.1 is the second release of the 3.1 series, bringing stabilizations and enhancements over 3.1.0.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.1

    • com.couchbase.client:core-io:2.1.1

    • io.projectreactor:reactor-core:3.4.1

    • org.reactivestreams:reactive-streams:1.0.3

    API Affecting

    • JVMCBC-906: Removed Tracer as a mandatory argument from OpenTelemetrySpan. (The OpenTelemetry module is marked @Stability.Volatile, indicating that there may be API-breaking changes. The volatility arises from the underlying OpenTelemetry library itself being at a beta/volatile level.)

    Bugs

    • JVMCBC-909: Retry opening the bucket until timeout when it is not found, to allow for it not yet being created.

    • JVMCBC-910: WaitUntilReady will now wait if bucket not present yet, before it starts to time out.

    • JVMCBC-911, JCBC-1728: Certain collection-related error codes have changed.

    • JCBC-1730: Support for collections added to BatchHelper.

    • JCBC-1747: Prepared non-adhoc queries on scopes were failing, as query_context was not being passed to the individual prepare and/or execute statements. This has now been fixed, and scope-level queries are working as expected.

    Enhancements

    • JVMCBC-907: The Orphan Reporter can now be disabled.

    • JVMCBC-908: Updated OpenTelemetry to 0.13.

    • JCBC-1749: Escape the scope for scope-level queries now enabled, as a fix in the server means that this works.

    • JCBC-1746: Expose partition information from the query management API on QueryIndex class.

    Version 3.1.0 (2 December 2020)

    Version 3.1.0 is the first GA release of the 3.1 series, bringing stabilizations and enhancements over 3.0.10 and the 3.0 SDK, and adding features to support Couchbase Server 6.6 and 7.0β.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.1.0

    • com.couchbase.client:core-io:2.1.0

    • io.projectreactor:reactor-core:3.4.0

    • org.reactivestreams:reactive-streams:1.0.3

    Enhancements

    • JCBC-1731: Experimental support for Metrics (Meter) and the internals have been reworked around the RequestTracer. The new metrics implementation is disabled by default but will be enabled in the future. We encourage you to try it out and provide feedback, please see the documentation section on tracing and metrics for further information.

    • JCBC-1646: The minimum durability level can now be configured on the BucketManager.

    • JVMCBC-904: Internal and external dependencies have been updated, including project reactor to 3.4.0.

    • JVMCBC-905: It is now possible to disable TLS hostname verification as part of the SecurityConfig.

    • JVMCBC-901: Support for transactions with N1QL queries has been added to the core subsystem so that the upper transaction dependency can make use of it.

    In addition to the tickets outlined below, different interfaces have been elevated from Uncomitted or Volatile to Comitted. These include:

    • Expiry Key/Value read and write APIs that take an Instant.

    • Geo-Polygon Search

    • Search Flex-Index Option

    • Search Disable-Scoring Option

    Version 3.0.10 (3 November 2020)

    Version 3.0.10 is a maintenance release, bringing enhancements over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.10

    • com.couchbase.client:core-io:2.0.11

    • io.projectreactor:reactor-core:3.3.9.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    Enhancements

    • JVMCBC-898: Added fallback for lastDispatchedTo in context, to improve debuggability.

    • JVMCBC-899: Updated OpenTelemetry to 0.9.1.

    Version 3.0.9 (7 October 2020)

    Version 3.0.9 is a bugfix release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.9

    • com.couchbase.client:core-io:2.0.10

    • io.projectreactor:reactor-core:3.3.9.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    API Affecting

    • JCBC-1716: The Analytics getPendingMutations API had a return value (Map<String, Long>) that did not reflect what was returned from the server. The return value has been changed to Map<String, Map<String, Long>> accordingly. As the getPendingMutations method was previously uncallable due to the resulting deserialization failure, we believe this API change - though technically breaking - will not impact any users, and we have kept the API version at 3.x.

    Bug Fixes

    • JCBC-1713: Improve LDAP auth failure handling.

    • JCBC-1718: Expiry fixed for touch and getAndTouch methods.

    • JVMCBC-885: Allow overriding of BestEffortRetryStrategy.

    • JVMCBC-889: Make sure WaitUntilReady always times out.

    • JVMCBC-890: Enforce only negotiate PLAIN when using TLS with PasswordAuthenticator.

    • JVMCBC-892: Service pool idle time check must happen more often.

    • JVMCBC-894: BatchHelper: handle success case with no body gracefully.

    • JVMCBC-872: Subdoc 'no access' error code is now reported correctly. This helps users to identify and fix permissions errors for system XATTRs.

    Enhancements

    • JCBC-1651: Geopolygon search support.

    • JCBC-1652: Added Options To Use FTS Hints (Flex Index).

    • JCBC-1695: Added support to pass Score as FTS parameter.

    • JCBC-1707: Retrofited Geo Search Queries to allow Coordinate Usage.

    • JCBC-1709: Allow to access ReactiveScope from Scope.

    • JCBC-1712: Clarified Javadoc lockTime on getAndLock.

    • JCBC-1715: Allow to provide custom http headers for the RawManager.

    • JCBC-1717: Support for targeting requests to a given node. This allows to always send QueryRequests related to a given transaction to the same query node.

    • JVMCBC-888, JVMCBC-893: Dependency bumps: Netty to 4.1.52.Final, OpenTelemetry to 0.8.

    • JVMCBC-886: Improve LDAP auth failure handling.

    • JVMCBC-896: Fast dispatch pooled requests.

    Version 3.0.8 (31 August 2020)

    Version 3.0.8 is a bugfix release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.8

    • com.couchbase.client:core-io:2.0.9

    • io.projectreactor:reactor-core:3.3.9.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    Enhancements

    • JCBC-1705: A (uncomitted) API has been added which allows to very efficiently perform bulk fetch and bulk exists operations. See the BatchHelper class for more details.

    • JCBC-1684: The PingOptions services can now be configured through a vararg, making it easier to use.

    • JCBC-1691: A (uncomitted) API has been added which allows sending all kinds of requests to the cluster manager (called raw manager API).

    • JVMCBC-883: The client is now a little less verbose when performing a DNS SRV request and the underlying JDK operation times out.

    • JVMCBC-879: Updated internal and external dependencies to their latest maintenance releases.

    • JVMCBC-871: On the IoConfig it is now possible to captureTraffic() with empty arguments, implying that all traffic will be captured.

    • JVMCBC-874: When dealing with unknown collections, the SDK now returns a more user friendly retry reason when it can (outdated manifest vs. collection not found).

    • JVMCBC-875: On the request timeout exception, the retry reasons are now accessible directly.

    • JCBC-1693: The UserManager API has been extended to support collections and scopes (needs at least Server 7.0 to be usable).

    • JCBC-1660: Support for scope-level N1QL queries has been added (needs at least Server 7.0 to be usable).

    • JCBC-1658: Support for scope-level analytics queries has been added (needs at least Server 7.0 to be usable).

    Bug Fixes

    • JCBC-1696: When adding the option withExpiry(true) to GetOptions, it is now possible to use a custom transcoder which is JSON compatible.

    • JVMCBC-805: The client now handles bootstrapping against nodes much better which do not have the data service enabled (in an MDS setup).

    • JVMCBC-882: A bug has been fixed where when bootstrapping against a node with no data service enabled, the endpoint would not be cleaned up and would keep trying to reconnect.

    • JVMCBC-872: The client now more explicitly handles an error response code (NO_ACCESS) when a subdocument request is performed against a system xattr.

    • JVMCBC-873: Durability information is now properly unwrapped from an optional when exported and dumped (for example as part of an exception).

    • JVMCBC-880: The client now trackes multiple parallel bucket open attempts (against different buckets) in a better way, making sure that an internal state is only switched when all those bucket open attempts have completed (and not just the first one).

    • JVMCBC-878: EndpointDiagnostics had the local and remote hostnames mixed up, they now show up in the correct order.

    Version 3.0.7 (4 August 2020)

    Version 3.0.7 is the eighth release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.7

    • com.couchbase.client:core-io:2.0.8

    • io.projectreactor:reactor-core:3.3.8.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    API Affecting

    • JCBC-1681: Removed cas from IncrementOptions and DecrementOptions. CAS is not supported by the underlying protocol and should not have been exposed in these options.

    • JCBC-1625: Deprecated maxTTL on BucketSettings in favor of maxExpiry.

    Bug Fixes

    • JCBC-1647: Deprecated EjectionPolicy in favor of EvictionPolicyType. And added the "noEviction" and "nruEviction" policies used by ephemeral buckets. This fixed a but where the BucketManager didn’t recognize ephemeral bucket ejection values. Users can now set a non-default ejection policy when creating an ephemeral bucket.

    • JCBC-1668: Fixes an NPE when toString or fieldsAs is called when no fields are present in the result. In this case just null should now be returned, instead of a NPE deep down in the Jackson serializer stack.

    • JVMCBC-870: A bug in the chunk response parser prohibited responses meant that View reduce responses were never completed, and as a result timed out on the user side. The completion of view results with reduce enabled has now been fixed.

    Enhancements

    • JCBC-1661, JCBC-1665: Building on the expiry improvements in the previous release, this adds a new expiryTime() method that returns expiry as an Instant, which better expresses the concept than the Duration returned by expiry(). The latter will be deprecated in a future release. Similarly, everywhere a Duration-based expiry could be provided previously, an overload has been added to take an Instant-based expiry.

    • JCBC-1666: Made bucket.scope("_default").collection("_default") behave just like bucket.defaultCollection(). AsyncScope.collection() now no longer refreshes collection map for default collection.

    • JCBC-1670: Added WaitUntilReadyOptions.serviceTypes() overload that accepts varargs.

    • JVMCBC-867: Performance improvement: do not grab ByteBuf slice when extracting server response time.

    • JVMCBC-869: Maintenance dependency bump: Netty → 4.1.51, Jackson → 2.11.1, Reactor → 3.3.7, OpenTelemetry → 0.6.0.

    Version 3.0.6 (14 July 2020)

    Version 3.0.6 is the seventh release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.6

    • com.couchbase.client:core-io:2.0.7

    • io.projectreactor:reactor-core:3.3.5.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    Enhancements

    • JCBC-1645: Specifying document expiries has been made significantly easier. Expiries are supplied as a Duration. The new behaviour is that if that duration is less than 50 years, then it will be interpreted as being a relative timestamp from the current time. E.g. Duration.ofDays(35) will expire in 35 days time. (Previously, a Duration longer than 30 days would be interpreted as being an epoch time. Unless this epoch time occurred in the future then it would expire immediately. In order to preserve compatibility for users that worked around this behaviour, any Duration longer than 50 years will continue to be interpreted as an epoch time.)

    • JCBC-1632: Bootstrapping is now fully pipelined for performance, building on the improvements in the previous release.

    • JVMCBC-865: Changed the default idle timeout to 4.5s for http connections, to support performance improvements in query service.

    Bug Fixes

    • JCBC-1662: MutateInMacro for CRC32 is fixed.

    • JCBC-1664: viewQuery with ViewOptions.viewOptions().keys(keys) was returning a bad_request error. This is now fixed.

    • JVMCBC-849: Redundant global loading exceptions no longer propagated — now logged at debug level.

    • JVMCBC-856: A just-opened connection in pool no longer gets cleaned up prematurely .

    • JVMCBC-858: Channel writeAndFlush failures are no longer ignored.

    • JVMCBC-862: Race condition with node identifier change on bootstrap identified. New logic and some changes to the config provider code ensures that retry and resubscribe picks up fresh seed nodes.

    • JVMCBC-863: Bucket-Level ping report no longer includes other view and KV services buckets.

    • JVMCBC-866: Trailing : no longer added to IPv6 addresses without []. 'invalid IPv6 address' warnings now no longer produced when trying to connect to a valid Ipv6 address thus specified.

    Version 3.0.5 (2 June 2020)

    Version 3.0.5 is the sixth release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.5

    • com.couchbase.client:core-io:2.0.6

    • io.projectreactor:reactor-core:3.3.5.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    Enhancements

    • JVMCBC-852: Bumped Reactor to 3.3.5, Netty to 4.1.50.Final, and Jackson to 2.11.0.

    • JVMCBC-693: For performance, the KV bootstrap sequence is now partially pipelined.

    In addition, there are internal revisions to support the forthcoming Field Level Encryption (FLE) support. This will be available in a separate library for Enterprise Edition subscribers.

    Bug Fixes

    • JVMCBC-851: Reactive getAllReplicas methods will now honor a provided custom transcoder.

    • JVMCBC-849: Duplicate global loading exceptions are now swallowed to remove redundant warnings from logging (this was a cosmetic-only issue).

    Version 3.0.4 (7 May 2020)

    Version 3.0.4 is the fifth release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.4

    • com.couchbase.client:core-io:2.0.5

    • io.projectreactor:reactor-core:3.3.4.RELEASE

    • org.reactivestreams:reactive-streams:1.0.3

    Enhancements

    • JVMCBC-841: Bumped Netty dependency to 2.0.30, and reactor to 3.3.4

    Bug Fixes

    • JVMCBC-845: If a rebalance is stopped in the middle, an edge case occasionally causes KV ops to time out as the fast forward map is chosen over the retry. The behavior has now been changed so that the client will try the old and new servers to make sure the operation eventually gets dispatched to the right node.

    • JCBC-1626: If bucket is not flushable, a BucketNotFlushableException is now raised.

    Version 3.0.3 (7 April 2020)

    Version 3.0.3 is the fourth release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.3

    • com.couchbase.client:core-io:2.0.4

    • io.projectreactor:reactor-core:3.3.3.RELEASE

    • org.reactivestreams:reactive-streams:1.0.2

    Enhancements

    • JCBC-1603, JCBC-1606: Exposed API to set the CollectionsExample TTL. CreateCollection CollectionSpec now includes MaxTTL.

    • JCBC-1617: Attempting to work with the collection manager on clusters where CollectionsExample are not available (or enabled as a DP) will now result in a FeatureNotAvailable failure.

    • JVMCBC-830: Added more convenient overloads for SecurityConfig and CertAuth. These overloads initialize both the SecurityConfig and the CertificateAuthenticator directly from a KeyStore or TrustStore.

    • JVMCBC-831: Improves timeout for waitUntilReady — the waitUntilReady helper should now throw a proper timeout exception.

    • JVMCBC-832: Added support for multiple ports per hostname in the connection string — without having to use the explicit SeedNode set overload.

    • JVMCBC-835: Using "localhost:8091" as a connection string would set the kv bootstrap port to 8091, which is not desired behavior. To prevent this from happening again, the code now checks for this condition, fails fast, and also provides guidance on what the connection string should look like instead.

    • JVMCBC-836: Enabled Unordered Execution by Default.

    • JVMCBC-837: Updates OpenTelemetry to 0.3 (beta).

    Bug Fixes

    • JCBC-1618: Named fields in SearchRows results are now deserialized.

    • JVMCBC-834: 'CollectionNotFoundException' now triggers a retry, and if no collection refresh is currently in progress it will proactively trigger a new one. Now Docs created under custom collection should no longer raise an exception when a collection has been created in the meantime, but the collection is not found as no refresh is in progress.

    • JVMCBC-826: A NullPointerException was occuring when LDAP is enabled. The code now explicitly fails the connection with a descriptive error message instructing the user what to do next (either use TLS which is preferred) or enable PLAIN on the password authenticator (insecure).

    • JVMCBC-827: Search query results row_hit typo resulted in 0 being returned for total rows. This has now been fixed.

    • JVMCBC-828: Omit internal config request in orphan reporting.

    • JVMCBC-839: Bootstrap will now correctly use the mapped port if alternate addr is present.

    Version 3.0.2 (3 March 2020)

    Version 3.0.2 is the third release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.2

    • com.couchbase.client:core-io:2.0.3

    • io.projectreactor:reactor-core:3.3.1.RELEASE

    • org.reactivestreams:reactive-streams:1.0.2

    Enhancements

    • JCBC-1588: Give TypeRef overload of JsonSerializer a default "unsupported" impl, making it easier for applications to implement custom JsonSerializers.

    • JVMCBC-813: Improved error message for bucket is missing.

    • JVMCBC-815: Check if key exceeds size limits.

    • JVMCBC-818: Trimmed netty stack in connect failures for more readable output.

    • JVMCBC-819: Distinguished bucket not found in select bucket failures.

    • JVMCBC-823: Added a global component to the core id.

    • JVMCBC-825: Support added for new VATTR HELLO flag.

    Bug Fixes

    • JCBC-1587: Exists no longer returns wrong value if executed right after remove.

    • JCBC-1600: Using expiry together with document flags on a Sub-Document mutateIn no longer causes an incorrect flags field to be sent.

    • JCBC-1604: Properly clear cache when repreparing/retrying query.

    • JVMCBC-824: Native Netty transports not included, resulting in fallback to default implementation. Only affected 2.0.2 core release.

    Version 3.0.1 (5 February 2020)

    Version 3.0.1 is the second release of the 3.0 series, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.1

    • com.couchbase.client:core-io:2.0.2

    • io.projectreactor:reactor-core:3.3.1.RELEASE

    • org.reactivestreams:reactive-streams:1.0.2

    Enhancements

    • JCBC-1578: Added support for Java Object Serialization as a custom Transcoder.

    • JVMCBC-808: The internal packaged netty dependency has been reduced to the minimum amount of artifacts needed, trimming the resulting jar size a little.

    Bug Fixes

    • JCBC-1574: JsonObject/Array.put(String,Object) now supports writing generic Maps and Lists.

    • JCBC-1580: The code for get projections had an import for unbundled jackson which prevented it from working in an environment where no unbundled jackson is on the classpath. This no longer occurs.

    • JCBC-1582: The client context ID is now propagated into the PREPARE query if needed.

    • JVMCBC-806: TLS: remote hostname and port are passed down to the SSL engine, making sure that hostname validation works as expected.

    • JCBC-1575: Bucket Management: BucketSettings load does now recognize numReplicas properly.

    Known Issues

    • JVMCBC-805: When bootstrapping against a non-KV node the KV socket is not cleaned up properly. As a workaround (and as we recommend in general), please only bootstrap against nodes which have the KV service enabled. Or maintain a list of KV nodes in DNS SRV.

    Version 3.0.0 (10 January 2020)

    This is the first GA release of the third generation Java SDK.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:java-client:3.0.0

    • com.couchbase.client:core-io:2.0.0

    • io.projectreactor:reactor-core:3.3.1.RELEASE

    • org.reactivestreams:reactive-streams:1.0.2

    Enhancements

    The following list describes the API changes between 3.0.0 beta.2 and 3.0.0 GA.

    • JCBC-1563: Added the reactive API to the view index manager.

    • JVMCBC-776: Added support for server-side KV tracing statistics.

    • JCBC-1522: All data commands have been instrumented to be included in RTO (Response Time Observability).

    • JCBC-1566, JCBC-1568: The Search API has been slightly improved to align with the SDK RFC.

    • JCBC-1599: Bucket, Scope and Collection instances are now cached so repeated open attempts produce less garbage and happen quicker.

    • JVMCBC-785, JVMCBC-786, JVMCBC-675: View, Search, Analytics, and Query retryable error codes are now retried as part of the configured retry strategy.

    • JCBC-1561, JCBC-1562: Added Option overloads to collection and search index managers.

    • JVMCBC-787, JVMCBC-788: View requests and KV collection requests are now short-circuited against unsupported clusters.

    • JCBC-1552: Added support for Java 9 automatic module names.

    • JCBC-1554: JsonArry and JsonObject now support toArray in addition to toString.

    • JCBC-1545: The ping command has been reintroduced to the cluster and bucket level APIs.

    • JCBC-1518: An internal server error from the KV engine is now properly mapped to the exception equivalent.

    • JVMCBC-779: It is now possible to customize the event loop thread count instead of having to provide a new event loop itself.

    • JVMCBC-767: A new ConfigIdleRedialTimeout has been introduced which recycles idle HTTP streaming connections.

    • JVMCBC-782: The orphan response reporter (as part of RTO) has been ported to SDK 3 from SDK 2 and is now enabled by default.

    • JVMCBC-784: Idle HTTP connections are now closed after 30 seconds.

    • JVMCBC-773: SASL PLAIN is now not negotiated by default on non-TLS connections to prevent downgrade attacks out of the box.

    • JVMCBC-795: Requests are now failed fast if it can be determined that the service is not available on the cluster.

    • JVMCBC-790: The concept of backpressure has been re-introduced but in slightly different form.

    • JVMCBC-: The circuit breaker now has a customizable completion callback.

    Bug Fixes

    The following list describes the API changes between 3.0.0 beta.2 and 3.0.0 GA.

    • JCBC-1550: The owned environment in the Cluster is now properly shutdown on disconnect.

    • JCBC-1517, JCBC-1566: All reactive APIs are now deferred and will not execute I/O side effects when not subscribed to.

    • JCBC-1539: A bug has been fixed where the IoConfig.networkResolution could not be set through a system property.

    • JVMCBC-793: Various fixes have been made around DNS SRV bootstrapping that make it more robust, including fixing a bug that prevented it from working properly.

    • JCBC-1524: The projections on get have been refactored, the test suite expanded, and a couple of issues fixed along the way.

    • JCBC-1531: The QueryIndexManager now only returns GSI indexes.

    • JVMCBC-802: A bug has been fixed where a non-existing view in an existing design document would not cause an exception.

    • JCBC-1565: Views now use the right default View timeout instead of the Analytics one.

    • JVMCBC-789: Performing operations while initially loading the collection map is now handled gracefully.

    Known Issues

    • JVMCBC-805: When bootstrapping against a non-KV node the KV socket is not cleaned up properly. As a workaround (an we recommend in general) please only bootstrap against nodes which have the KV service enabled.

    API Changes

    The following list describes the API changes between 3.0.0 beta.2 and 3.0.0 GA. Since SDK 3 is a complete rewrite over SDK 2, the individual changes between them are not listed here. Please refer to the migration guide for this.

    • JCBC-1533, JCBC-1534, JCBC-1535, JCBC-1541, JCBC-1542: Exceptions have been consolidated, renamed, and overall aligned with the latest RFC.

    • JCBC-1536: SeedNodes have been moved out of the ClusterOptions into a Cluster#connect() overload.

    • JCBC-1540: MajorityAndPersistOnMaster has been renamed to MajorityAndPersistToActive on the durability enum.

    • JCBC-1545: The diagnostics API has been reworked on all levels.

    • JCBC-1551: The empty constructors are gone from JsonObject and JsonArray since they duplicate create.

    Pre-releases

    Numerous Alpha and Beta releases were made in the run-up to the 3.0 release, and although unsupported, the release notes and download links are retained for archive purposes here.

    Older Releases

    Although no longer supported, documentation for older releases continues to be available in our docs archive.