Pre-release Archive Release Notes

      +
      Release notes for the 3.0 Alpha & Beta Releases

      In the run-up to the SDK 3.0 API releases, several αλφα and βετα releases were made. Their release notes are maintained here for archive purposes. The 3.0 series release notes proper can be found here, along with install instructions for all supported platforms. Please note that none of the pre-releases listed below are supported; all supported (GA) releases can be found here.

      These are the pre-release α & β Release Notes maintained purely for archive and information purposes. These releases are unsupported. Supported (GA) releases can be found on the general 3.0 Release Notes page.

      Version 3.0.0-beta.2 (22 November 2019)

      This is the second beta release of the third generation Java SDK. While it is not yet suitable to be used in production, the surface area of the API is largely complete and not expected to change dramatically.

      The supported and tested dependencies for this release are:

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

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

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

      • org.reactivestreams:reactive-streams:1.0.2

      Enhancements

      • JCBC-1467: The Search API has been completely refactored and aligned with the SDK-RFC.

      • JCBC-1504: Cluster connect now defers all I/O errors into the operation.

      • JCBC-1510: Bucket open now defers all I/O errors into the operation.

      • JVMCBC-637: Support for tracing has been added.

      • JVMCBC-760: Security can be configured from the connection string.

      • JVMCBC-761: TCP Keepalive support has been added.

      • JVMCBC-769: Exists uses GetMeta underneath instead of "observe".

      • JCBC-1502: If the user adds jackson as a dependency, a new JsonSerializer is automatically used.

      • JCBC-1503: Support added for deserializing JSON into parameterized types through TypeRef.

      • JCBC-1487: Jackson afterburner module is enabled by default.

      Bug Fixes

      • JVMCBC-764: TLS connections were not working, this is now fixed.

      • JVMCBC-755: Revert KV opaque back to global instead of per socket.

      • JCBC-1360: Should not allow user to set timeout value greater than the KV supported value.

      • JCBC-1492: Subdoc now transparently reorders operations so XATTR calls are handled properly.

      • JCBC-1477: A bug with view query timeouts have been fixed.

      API Changes

      • JCBC-1498: Error handling (exceptions) have been heavily reworked and aligned, so please expect exceptions to be renamed and different ones to be thrown.

      • JCBC-1496: On subdocument mutations, arrayAppend and similar take a List of values.

      • JVMCBC-772: The Authenticator now holds the SASL mechanism instead the IoConfig.

      • JVMCBC-771: RequestTimeoutException has been renamed to TimeoutException.

      • JVMCBC-765: The CertificateAuthenticator now holds the client certificates instead of the SecurityConfig.

      • JCBC-1497: All deprecated APIs are removed.

      • JCBC-1512: ExpandMacro is gone, there are now sentinel values that are passed in.

      Version 3.0.0-beta.1 (30 September 2019)

      This is the first beta release of the third generation Java SDK. While it is not yet suitable to be used in production, the surface area of the API is largely complete and not expected to change dramatically.

      The supported and tested dependencies for this release are:

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

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

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

      • org.reactivestreams:reactive-streams:1.0.2

      Enhancements

      • JCBC-1358: Add retry and error handling for prepared statements / query

      • JCBC-1397: Add support for query index manager

      • JCBC-1399: Add diagnostics functionality

      • JCBC-1401: Add ping functionality

      • JCBC-1402: Add getAllReplicas

      • JCBC-1403: Add getAnyReplica

      • JCBC-1415: Add ReactiveBucketManager

      • JCBC-1417: Add ReactiveCollectionManager

      • JCBC-1422: Add BucketManager timeout option

      • JCBC-1423: Add options blocks to UserManager functions

      • JCBC-1439: Add support for readonly on analytics queries

      • JCBC-1441, JCBC-1454: Add support for DataStructures Add passthrough serializer to access raw json values

      • JCBC-1452: Expose ClusterOptions on connect

      • JCBC-1374: Add reactive versions of User/GroupManager

      Bug Fixes

      • JCBC-1431: Handle memcached being restarted during cluster connection

      • JCBC-1432: Fix theorectical overflow error comparing system times in LazyCircuitBreaker

      • JCBC-1433: Setting certain N1QL query options causes the request to fail

      • JCBC-1440: exists no longer throws if the document does not exist

      • JVMCBC-749: NonChunked handler needs to reset currentRequest

      API Changes

      This release, transitioning as it does from alpha to beta, involved a focused effort to make sure all the SDK implementations align. The breaking API changes below were unavoidable, but we expect now to make few further changes going forwards in beta.

      • JCBC-1282: Error handling updated has been updated for consistency

      • JCBC-1405: Fix getAndLock signature

      • JCBC-1409: FullDocument MutateInSpec is deprecated, pending removal pre-GA. Use upsert("", …​) instead.

      • JCBC-1410: getAnyReplica and getAllReplicas return new GetReplicaResult type

      • JCBC-1413: Update search metadata

      • JCBC-1438, JCBC-1442, JCBC-1448, JCBC-1463, JCBC-1466, Encoding and decoding has been altered substantially, transitioning to a simpler model based around Transcoders

      • JCBC-1455: Rename expiration to expiry

      • JCBC-1459: LookupInSpec.getFullDocument is deprecated, pending removal pre-GA. Use get("") instead.

      • JCBC-1465: Rename shutdown to disconnect on *Cluster

      • JCBC-1469: Rename isMaster to isReplica in GetReplicaResult

      • JCBC-1470: Add StoreSemantics to subdoc LookupIn

      • JCBC-1471: Remove withExpiry from lookupIn

      • JCBC-1472: Remove durability from touch

      Version 3.0.0-alpha.7 (2 September 2019)

      This is the seventh pre-release of the third generation Java SDK.

      The supported and tested dependencies for this release are:

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

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

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

      • org.reactivestreams:reactive-streams:1.0.2

      Note that since this release depends on core-io, it also includes transitive fixes and enhancements that may not all be reflected in the following list.

      Enhancements

      • JCBC-1388: Support for managing View Indexes has been added.

      • JCBC-1424: Support for managing Analytics Indexes has been added.

      • JCBC-1421: Support for managing buckets has been added.

      • JCBC-1420: The Search Index management API has been greatly expanded and modified.

      • JCBC-1375: User and Group management APIs have been added.

      • JVMCBC-615: Support for alternate addresses has been brought back to SDK 3 (including kubernetes support)

      • JVMCBC-723: It is now possible to disable DNS SRV bootstrapping if needed.

      • JVMCBC-722: X509 certificates can now be loaded from Strings directly as additional convenience overloads.

      • JCBC-1391: The error handling and retry story has been greatly improved throughout the full SDK.

      • JCBC-1411: In HTTP-based services the meta has been renamed to metaData.

      • JCBC-1390: The durabilityLevel has been removed in favor of another durability overload.

      • JCBC-1396: Timeout names and default values in the configuration has been aligned with other SDKs.

      • JVMCBC-729: A new query prepare mechanism is support when a cluster version 6.5 and later is used.

      • JVMCBC-600: Support for Mapped Diagnostic Context in Logging has been introduced (and clientContext from java options).

      • JVMCBC-731: Mutation tokens are enabled by default and the CAS-based observe has been removed.

      Bug Fixes

      • JCBC-1414: geometry has been removed from the ViewRow since spatial queries have also been removed earlier.

      • JCBC-1428: NonChunkedHttpMessageHandler fails the second time it is enabled.

      • JCBC-1406: The expiration option has been added to LookupIn.

      • JCBC-1407: LookupIn GetFull shouldn’t expose xattr option.

      • JVMCBC-725: Chunked handler should not close channel when being removed.

      • JVMCBC-724: Non-Chunked HTTP Hander must report when request complete.

      • JVMCBC-727: Fail cluster-level queries quickly if not serviceable.

      • JVMCBC-733: Only dispatch view requests to nodes with primary partitions.

      • JVMCBC-734: Close channel on unknown KV opaque.

      • JVMCBC-735: Close KV connection on certain response status codes.

      • JVMCBC-737: Harden HTTP handlers for write race conditions.

      • JVMCBC-728: Subdoc MutateInOptions with CAS value provided is not cosidered during mutation.

      Version 3.0.0-alpha.6 (2 August 2019)

      This is the sixth pre-release of the third generation Java SDK.

      The supported and tested dependencies for this release are:

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

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

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

      • org.reactivestreams:reactive-streams:1.0.2

      Note that since this release depends on core-io, it also includes transitive fixes and enhancements that may not all be reflected in the following list.

      Enhancements

      • JCBC-1386: AsyncCluster and ReadtiveCluster create methods have been made asynchronous.

      • JCBC-1386: Group and user management API has been added.

      • JCBC-1386: A major rework of the get-based API has removed the Optional return type for consistency reasons.

      • JCBC-1386: Support for collection management has been added.

      • JCBC-1385: The default scope is now exposed on the bucket API directly.

      • JCBC-1377: Support for bucket management has been added.

      • JCBC-1376: OpenTracing has been removed from the API for now until the implementation has been reworked.

      • JVMCBC-667: Added support for DNS SRV bootstrapping.

      • JVMCBC-694: When using Couchbase Server 6.5 and later, cluster-level queries can now be performed without opening a bucket.

      • JVMCBC-706: The IO handlers now consolidate internal flush syscalls to reduce them as much as possible, leading to measurable performance improvements in highly concurrent workloads.

      • JVMCBC-711: Unknown/Unsupported KeyValue error status codes are now logged so they can be better debugged.

      • JVMCBC-717: Explicit support for the new KeyValue status DurableWriteReCommitInProgress has been added and mapped to an exception.

      • JVMCBC-673: KeyValue error map response codes are now handled like in core-io 1.x (aside from transparent retry logic).

      • JVMCBC-703: Durable writes are now short circuited early on when they are not available on the server side.

      Bug Fixes

      • JVMCBC-704: The initial seed nodes are now kept fresh which each subsequent config update.

      • JVMCBC-705: If the underlying socket is closed upon an endpoint (channel), the endpoint now triggers a proactive reconnect.

      • JVMCBC-707: Shutting down the core (and the core environment) is properly synchronized with its internal state, preventing early shutdown reports while the inner shutdown is still happening.

      • JVMCBC-710: A race condition has been fixed which made concurrent requests possible against non-pipelined HTTP sockets which lead to queries not being executed properly.

      Version 3.0.0-alpha.5 (4 July 2019)

      This is the fifth pre-release of the third generation Java SDK.

      The supported and tested dependencies for this release are:

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

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

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

      • io.opentracing:opentracing-api:0.31.0

      • org.reactivestreams:reactive-streams:1.0.2

      Note that since this release depends on core-io, it also includes transitive fixes and enhancements that may not all be reflected in the following list.

      Enhancements

      • JCBC-1363, JCBC-1282: The exception hierarchy has been modified to align more closely with the other SDKs.

      • JVMCBC-700: On client initialization, diagnostics information with versions and config settings is printed at INFO level.

      Bug Fixes

      • JVMCBC-686: Fixed default collection support when collections enabled.

      • JVMCBC-689: Now no longer get DecodingFailedException while performing sub_doc operations.

      • JVMCBC-1234: Double check event loop before connecting.

      • JVMCBC-688: Always fetch cas-based observe fails for concurrent modifications.

      Version 3.0.0-alpha.4 (12 June 2019)

      This is the fourth pre-release of the third generation Java SDK.

      The supported and tested dependencies for this release are:

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

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

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

      • io.opentracing:opentracing-api:0.31.0

      • org.reactivestreams:reactive-streams:1.0.2

      Note that since this release depends on core-io, it also includes transitive fixes and enhancements that may not all be reflected in the following list.

      New Features

      • JCBC-1345: Prepared statement support is now available again for N1Ql queries.

      • JVMCBC-626: The connection string can now be used to load properties and seed nodes with custom ports.

      • JVMCBC-676: Multiple sockets/endpoints for the KV service has been brought back (from 2.x functionality).

      Enhancements

      • JCBC-1347: The pretty N1Ql query option has been removed since it is not needed.

      • JCBC-1355: Spatial view API support has been removed since it is deprecated on the server.

      • JCBC-1282: The exception hierachy for error handling has been overhauled.

      • JVMCBC-684: Event bus event categories are now extendable by other components.

      • JVMCBC-668: Collection IDs are now refreshed automatically if they change.

      Bug Fixes

      • JVMCBC-671: Accidential pipelining for streaming results (which led to timed out requests) has been fixed.

      • JVMCBC-681: The SDK now avoids resolving network addresses early, laying the groundwork for Kubernetes support.

      Version 3.0.0-alpha.3 (13 May 2019)

      This is the third pre-release of the third generation Java SDK.

      The supported and tested dependencies for this release are:

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

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

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

      • io.opentracing:opentracing-api:0.31.0

      • org.reactivestreams:reactive-streams:1.0.2

      Note that since this release depends on core-io, it also includes transitive fixes and enhancements that may not all be reflected in the following list.

      New Features

      • JCBC-1319: Initial support for search index management capabilities.

      • JVMCBC-651: JSON query streaming parsers reworked completely on top of Jackson so they are more efficient, faster, and produce less garbage.

      • JVMCBC-617: It is now possible to populate the environment from system properties.

      Enhancements

      • JCBC-1322: Add consistentWith to QueryOptions.

      • JVMCBC-650: Traffic capturing can now be enabled on the environment.

      • JVMCBC-659: Native transports can be disabled with a switch on the environment.

      • JVMCBC-664: The SDK now passes the timeout down to the sync durability KV infrastructure.

      Bug Fixes

      • JVMCBC-658: Improved config fetching and support for clusters deployed with cluster_run.

      • JVMCBC-669: Fixed a bug which prevent a node removal being picked up during rebalance out.

      • JVMCBC-655: Collection ID improvements (UnsignedLEB128 outputs bytes in reversed order).

      Version 3.0.0-alpha.2 (04 April 2019)

      This is the second pre-release of the third generation Java SDK.

      The supported and tested dependencies for this release are:

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

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

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

      • io.opentracing:opentracing-api:0.31.0

      • org.reactivestreams:reactive-streams:1.0.2

      Note that since this release depends on core-io, it also includes transitive fixes and enhancements that may not all be reflected in the following list.

      New Features

      • JCBC-1313: Initial query support for the Analytics service.

      • JCBC-1314: Initial query support for the View service.

      • JCBC-1315: Initial query support for the Search service.

      Enhancements

      • JCBC-1310: Get signatures change to include explicit Optionals on Monos which make it easier to handle non-existing documents.

      • JCBC-1316: Reworked the API for N1QL queries.

      Bug Fixes

      • JCBC-1311: Shutdown is now correctly propagated into core-io.

      • JCBC-1305: Removes unused expiry from RemoveOptions

      • JVMCBC-639: IO threads are now daemon threads to not prevent the JVM from shutting down even when the SDK was not properly shutdown in the first place.

      Version 3.0.0-alpha.1 (12 March 2019)

      This is the first pre-release of the third generation Java SDK and a complete rewrite over the 2.x series. As such, there are no release notes for this release present.