Couchbase Kotlin SDK Release Notes and Archives

      Release notes for the Couchbase Kotlin Client.

      Version 1.1.6 (4 May 2023)

      This is a regular maintenance release, with no notable changes apart from depedency version bumps.

      Version 1.1.5 (12 April 2023)

      This is a regular maintenance release.


      • JVMCBC-1223: Adds a RetryReason.AUTHENTICATION_ERROR at Uncommitted API stability level. A custom RetryStrategy can use this new, more granular information to distinguish if a connection problem is down to an authentication issue.

      Bug Fixes

      • KCBC-118: Accessing the result of a sub-document lookupIn exists command now throws an appropriate exception (instead of returning false) in more cases where it’s not possible to determine whether the field exists:

        • If the document is not JSON, DocumentNotJsonException is thrown.

        • If a user without the SystemXattrRead permission attempts to check the existence of a system XATTR, XattrNoAccessException is thrown.

      • JVMCBC-1252: Orphaned "observe" operations will no longer occasionally contain a total_duration_us field equal to 0.

      • JVMCBC-1255: If you were subscribing to the event bus and printing all the events, you may have noticed Event.toString() throwing a NullPointerException if the event context is null. Event.toString() now handles null contexts more gracefully, and no longer throws this exception.

      Version 1.1.4 (8 March 2023)

      This is a regular maintenance release.


      • JVMCBC-1237: Added "network" as an alias for the "io.networkResolution" connection string parameter. For example, the connection string "couchbase://" is now equivalent to "couchbase://". This was done for compatibility with other Couchbase SDKs that use "network" as the name of this parameter.

      Bug Fixes

      • JVMCBC-1232: Cluster.connect() now rejects connection strings that have no addresses (like "couchbase://"). Before this change, it would accept the invalid connection string, and subsequent operations would fail with a misleading error message: "The cluster does not support cluster-level queries".

      Version 1.1.3 (9 February 2023)

      This is a regular maintenance release.


      • JVMCBC-1181: It is now possible to authenticate over secure connections even if the JVM does not support the SASL PLAIN authentication mechanism.

      • JVMCBC-1184: Updated dependencies.

      Bug Fixes

      • JVMCBC-1160: When a sub-document path has a syntax error or is inappropriate for an operation, the SDK now throws PathInvalidException. Prior to this change, it would throw a generic CouchbaseException with the message "Unexpected SubDocument response code".

      Version 1.1.2 (16 January 2023)

      This is a regular maintenance release.


      • JVMCBC-1175: The SDK now includes native libraries for IO and TLS that can enhance performance on aarch_64 architectures like Graviton and Apple Silicon. Previously, native libraries were included only for x86_64 architectures. Native libraries for IO and TLS are enabled by default. If you need to disable native IO, set the ioEnvironment.enableNativeIo client setting to false. To disable native TLS, set the security.enableNativeTls client setting to false.

      Bug Fixes

      • JVMCBC-1161: Fixed a minor issue where cluster.disconnect() could occasionally time out due to a race condition.

      • JVMCBC-1176: Setting security.enableNativeTls to false now prevents the SDK from even attempting to load the native TLS library. (Prior to this change, the SDK would load the library and just not use it.) In addition to saving a bit of memory, this prevents the JVM from segfaulting on Alpine Linux where glibc is not available.

      • JVMCBC-1174: Fixed a regression that prevented native TLS from being used regardless of whether the security.enableNativeTls client setting was set to true.

      Version 1.1.1 (7 December 2022)


      • JVMCBC-1163: Dependencies have been updated.

      • JVMCBC-1156: The traffic tracing functionality has been enhanced to perform Wireshark-style dissection of portions of the KV protocol.

      • JCBC-2021: Diagnostics for an endpoint now include the state of the endpoint’s circuit breaker.

      Bug Fixes

      • KCBC-107: The logging configuration DSL property enableDiagnosticContext is now mutable.

      • JVMCBC-1157: The SDK no longer rejects a PersistTo requirement in a bucket using the Magma storage engine. Before this change, the SDK would refuse the request because it misidentified Magma buckets as ephemeral (unable to persist documents).

      • JVMCBC-1167: If you call CancellationErrorContext.getWaitUntilReadyContext() on an error context that didn’t come from a "wait until ready" request, the method is now guaranteed to return null instead of sometimes throwing a ClassCastException.

      • JVMCBC-1178: Fixed a memory leak in ManagerMessageHandler.

      Version 1.1.0 (24 October 2022)


      • JVMCBC-1102: Added support for serverless execution environments including AWS Lambda.

      • KCBC-101: Added an experimental JSON serializer backed by kotlinx.serialization. See this sample code for usage and caveats.

      • KCBC-102: Added support for configuration profiles, which allow you to quickly configure an environment for common use-cases. In particular, this makes it easy to apply timeouts appropriate for WAN (Internet) development, such as developing against a remote Couchbase Capella instance. Example usage:

        val cluster = Cluster.connect(
            connectionString, username, password
        ) {
      • KCBC-105, JVMCBC-1144: If your Couchbase Server cluster’s root certificate is signed by a well-known certificate authority whose certificate is included in the JVM’s trust store, it’s no longer necessary to configure the certificate in the securityConfig settings.

      • KCBC-104: Changed AuthenticationFailureException error message to indicate that bucket hibernation is now a potential cause. Bucket hibernation is a feature coming in a future Couchbase release.

      • JVMCBC-1154: Bumped dependencies.

      Bug Fixes

      • JVMCBC-1141: Provide required OpenTelemetry span attributes.

      • JVMCBC-1155: Make sure targeted round-robin request keeps retrying if no config is available.

      Version 1.0.4 (9 September 2022)

      This maintenance release adds more cluster management APIs, and updates dependency versions.


      • KCBC-94: UserManager has a new changePassword function that lets you change the password of the currently authenticated user.

      • KCBC-99: Bucket has a new collections property of type CollectionManager. You can use the collection manager to create and delete scopes and collections. (Requires Couchbase Server 7.0 or later.)

      • KCBC-100: Added two new global config properties to help diagnose leaked Cluster instances. Cluster.maxAllowedInstances is the number of connected Cluster instances that may exist at the same time. Calling Cluster.connect after this limit is reached will either fail or log a warning, depending on the value of the new Cluster.failIfInstanceLimitReached property. The default values log a warning if more than 1 Cluster is connected at a time.

      • 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.

      Version 1.0.3 (2 August 2022)

      Maintenance release.


      • JVMCBC-1116: Dependency versions have been increased.

      Bug Fixes

      • 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 bucket.waitUntilReady will not time out 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 1.0.2 (6 July 2022)

      Maintenance release.

      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 1.0.1 (8 June 2022)

      Maintenance release.


      • KCBC-79: JacksonJsonSerializer now accepts the jackson ObjectMapper which for example makes it easier to use out of the box with Spring Boot.

      • JVMCBC-1093: Previously, when a DNS SRV lookup failure occurred, 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 1.0.0 (3 May 2022)

      Initial GA release.