A newer version of this documentation is available.

View Latest

Release Notes

  • reference
    +
    Release notes, installation instructions, and download archive for the Couchbase Scala Client.

    Version 1.3 of the Scala SDK implements the 3.3 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Release notes, installation instructions, and download archive for the Couchbase Scala Client.

    Version {sdk_dot_minor} of the Scala SDK implements the {sdk_api} SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Installation

    • The Scala SDK is tested against LTS versions of Oracle JDK and OpenJDK — see the compatibility docs.

    • The Couchbase {name-sdk} {sdk_dot_minor} Client supports Scala 2.12 and 2.13.

    More details of the installation process are in the full installation guide. In most cases, given the above prerequisites, it’s a simple matter of the following for your favorite build tool:

    • Scala Build Tool (SBT)

    • Gradle

    • Maven

    libraryDependencies += "com.couchbase.client" %% "scala-client" % "{sdk_current_version}"

    This will automatically use the Scala 2.12 or 2.13 builds, as appropriate for your SBT project.

    For Scala 2.13, include the following in your build.gradle:

    dependencies {
        compile group: 'com.couchbase.client', name: 'scala-client_2.13', version: '{sdk_current_version}'
    }

    For Scala 2.12, refer to the full Installation page.

    For Scala 2.13, include the following in your Maven pom.xml:

    <dependencies>
        <dependency>
            <groupId>com.couchbase.client</groupId>
            <artifactId>scala-client_2.13</artifactId>
            <version>{sdk_current_version}</version>
        </dependency>
    </dependencies>

    For Scala 2.12, refer to the full Installation page.

    Scala SDK 1.7 Releases

    We always recommend using the latest version of the SDK — it contains all of the latest security patches and support for new and upcoming features. All patch releases for each dot minor release should be API compatible, and safe to upgrade; any changes to expected behavior are noted in the release notes that follow.

    Version 1.7.5 (06 November 2024)

    Version 1.7.5 is the fifth maintenance release of the 1.7 series.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.9

    • org.reactivestreams:reactive-streams:1.0.4

    Bug Fixes

    • JVMCBC-1572: Due to a regression in 3.7.1, using a secure connection would cause waitUntilReady() to not wait, and would cause ping() to report failures even when nothing was wrong. The issue that caused these problems is now fixed.

    • JVMCBC-1577: Due to a regression in 3.7.1, sometimes a request made shortly after calling Cluster.connect() would fail with a message that said the service is not available in the cluster, even if the service was actually available. This no longer happens.

    • JVMCBC-1579: Deprecated com.couchbase.client.core.node.NodeIdentifier in favor of com.couchbase.client.core.topology.NodeIdentifier.

    Improvements

    • JVMCBC-1576: Bumped protobuf version from 3.23.2 to 3.25.5.

    Version 1.7.4 (08 October 2024)

    Version 1.7.4 is the fourth maintenance release of the 1.7 series.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.9

    • org.reactivestreams:reactive-streams:1.0.4

    Bug Fixes

    • JVMCBC-1570: The SDK was producing an incorrect partition map in CouchbaseBucketConfig, for buckets with >= 2 replicas. This has now been fixed.

    Improvements

    • JVMCBC-1573: ExtParallelUnstaging was producing more threads than required, leading to OOM when many concurrent transactions were executed. This has been rewritten to produce only the necessary number of threads are produced for each transaction.

    Version 1.7.3 (23 September 2024)

    Version 1.7.3 is the third maintenance release of the 1.7 series.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.9

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JCBC-2095: Transactions, ExtParallelUnstaging — Commit and rollback documents in parallel, keeping concurrency to a max of 1000.

    • JVMCBC-1564: Query index manager operation watchIndexes() now uses any provided parentSpan, and sets required span attributes.

    • JVMCBC-1562: Updated version dependencies:

      • netty: 4.1.122.Final,

      • HdrHistogram: 2.2.2,

      • reactor: 3.6.9,

      • blockhound: 1.0.9.RELEASE,

      • micrometer: 1.12.9,

      • grpc: 1.66.0,

      • micrometer-tracing: 1.3.3.

    • JVMCBC-1297: When the SDK starts up, it now logs its actual Git commit hash instead of a ${buildNumber} placeholder.

    Version 1.7.2 (13 August 2024)

    Version 1.7.2 is the second maintenance release of the 1.7 series.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1547: Updated DnsJava to 3.6.0.

    • JCBC-2157: Transaction settings are now configurable using the same callback pattern used by other environment settings. Here’s an example of the new syntax:

      Cluster cluster = Cluster.connect(
        connectionString,
        ClusterOptions.clusterOptions(username, password)
          .environment(env -> env
            .transactionsConfig(txn -> txn
              .durabilityLevel(DurabilityLevel.MAJORITY_AND_PERSIST_TO_ACTIVE)
              .metadataCollection(someKeyspace)
              .queryConfig(query -> query.scanConsistency(QueryScanConsistency.REQUEST_PLUS))
              .cleanupConfig(cleanup -> cleanup
                .cleanupWindow(Duration.ofSeconds(10))
                .addCollection(someOtherKeyspace))
            )
          )
      );

    Bug Fixes

    • SCBC-462, SCBC-469: Now uses the correct internal transaction protocol identifier when interacting with other transactions — allowing Scala to continue sharing the core JVM implementation, but not having to follow implementation in lockstep with the Java SDK.

    Version 1.7.1 (23 July 2024)

    Version 1.7.1 is the first maintenance release of the 1.7 series.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1523: Upgraded org.iq80.snappy from 0.4 to 0.5.

    • JCBC-1528: Provided default values for tags for Micrometer.

    • JCBC-1532: Upgraded Jackson from 2.17.0 to 2.17.1.

    • JVMCBC-1540: Improved compatibility with Spring Data Couchbase by reversing an internal API change present in Couchbase Java SDK 3.6.2 and 3.7.0. This API change prevented upgrading to the latest Couchbase SDK, independently of the Spring Data Couchbase version.

    • JVMCBC-1544: The upsertIndex() call now prevents vector indexes from being created on server versions before version 7.6.0, which do not support these index types.

    Bugfixes

    • JVMCBC-1530: Deprecated the com.couchbase.client.core.error.QueryException class. This exception is from the SDK 3 API’s beta development, and has never been thrown in a GA version of a Couchbase SDK.

    • JVMCBC-1534: Fixed possible DURABILITY_INVALID_LEVEL if Durability.NONE is used with transactions.

    Version 1.7.0 (15 June 2024)

    Version 1.7.0 is the first release of the 1.7 series.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • SCBC-461: Adds support for base64-encoded vectors in VectorQuery.

    Bugfixes

    • SCBC-428: Fixed a regression introduced in version 3.4.5 that caused a Full-Text Search BooleanQuery to throw InvalidArgumentException: Compound query has no child query unless all three of "must", "should", and "mustNot" were specified.

    • SCBC-463: Using a MatchPhraseQuery no longer results in an error.

    Scala SDK 1.6 Releases

    Version 1.6.3 (19 August 2024)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    Version 1.6.2 (29 April 2024)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    Bugfixes

    • JVMCBC-1506: Reduced the rate at which messages appear in the server’s http_access.log when a user provides valid credentials but does not have permission to access the bucket.

    • JVMCBC-1512: Updated Service in Cluster Configuration if only the port is changed.

    Version 1.6.1 (5 April 2024)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1477: Reduced the rate at which messages appear in the server’s http_access.log when invalid credentials are provided resulting in 401 errors. Issues resulting in 403 errors will be handled in a future release.

    • JVMCBC-1498: The fields of a SearchRow from a Full-Text Search result are now included in the output of SearchRow.toString().

    • JVMCBC-1499: Disabled DNS SRV caching. The SDK now responds quicker to DNS changes in dynamic environments like Kubernetes.

    • JVMCBC-1500: Added EventingFunctionLanguageCompatibility.VERSION_7_2_0.

    Version 1.6.0 (11 March 2024)

    Version 1.6.0 is the first release of the 1.6 series. The SDK now supports Vector Search, with Server 7.6 (self-managed or Capella).

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.6.3

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • SCBC-444: Added support for vector search, a new feature in Couchbase Server 7.6. This API is currently at @Volatile level.

    • SCBC-454: ScopeSearchIndexManager and its Async/Reactive variants are now part of the committed public API.

    • JVMCBC-1487: Upgraded reactor-core from 3.5.8 to 3.6.3.

    • JVMCBC-1488: Upgraded Jackson from 2.16.0 to 2.16.1.

    • JVMCBC-1489: Upgraded Netty from 4.1.101 to 4.1.107.

    • JVMCBC-1491: Collection.scan() methods are not part of the SDK’s committed API. These methods do range-scans of documentIds. This feature requires Couchbase Server 7.6 or later.

    • JVMCBC-1493: Collection.lookupInAnyReplica() and Collection.lookupInAllReplicas() are now part of the SDK’s committed API. These methods do sub-document lookups against replicas. This feature requires Couchbase Server 7.6 or later.

    Bugfixes

    • JVMCBC-1480: couchbase2: should use exponential backoff when bypassing BestEffortRetryStrategy.

    • JVMCBC-1494: If you specify min=1 for a Full-Text Search disjunction query, the SDK now always sends the value to the server. Previously, the SDK assumed 1 was the default value, and omitted the parameter in that case.

    Scala SDK 1.5 Releases

    Version 1.5 of the Scala SDK implements the 3.4 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Version 1.5.3 (6 February 2024)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.8

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • SCBC-414: All forms of getAnyReplica() and getAllReplicas() will now use the Transcoder provided as an option.

    • SCBC-443: Transactions now have a third, Future-based API.

    • SCBC-445: maxExpiry(Duration(-1, TimeUnit.SECONDS)) can now be used to specify that a collection has no expiry, overriding whatever is set on the bucket.

    • SCBC-446: Added support for scope.search() and scope.searchIndexes(), for querying and managing FTS scoped indexes.

    • SCBC-448: All functionality is now present for SearchIndexManager.

    • JVMCBC-1460: couchbase2 now supports compressing data between the SDK and the server.

    • JVMCBC-1464: The metrics-opentelemetry package is now aligned with the same OpenTelemetry version as tracing-opentelemetry.

    • JVMCBC-1468: Cluster.connect now validates that connection strings using the couchbase2 scheme have exactly one host. (Previously, hosts after the first were silently ignored.).

    • JVMCBC-1470: Improved support for Full Text Search in couchbase2 mode.

    • JVMCBC-1472: couchbase2 errors will now include diagnostic information when CNG is running with the --debug flag.

    Bugfixes

    • SCBC-430: lookupInAnyReplica() and lookupInAllReplicas() will now raise DocumentUnretrievableException if all replicas fail.

    • SCBC-449: The SDK now correctly serializes an FTS index during index creation.

    • JVMCBC-1475: Accessing the terms of a TermFacet result no longer throws NullPointerException if the target field is absent from all documents.

    Version 1.5.2 (5 January 2024)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.8

    • org.reactivestreams:reactive-streams:1.0.4

    Bugfixes

    • SCBC-441: Transactional queries were sending ScanConsistency when in NOT_BOUNDED mode, as set by core-io. The desired behavior is for the default transactional query ScanConsistency to be not-set, and this fix ensures that there should now be no QueryScanConsistency by default.

    • JVMCBC-1455: Fixed compatibility with couchbase2:// endpoints by upgrading internal GRPC dependency. All couchbase2 protocol users should upgrade to this release.

    • JVMCBC-1463: Fixed compatibility between couchbase2:// endpoints and the tracing-opentelemetry module.

    Version 1.5.1 (8 December 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.8

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1435, JVMCBC-1436: Upgraded Netty and Jackson dependencies.

    • JVMCBC-1440: Adding DocumentNotLockedException supporting future Couchbase Server versions that will return an error code when unlocking a document that is not locked.

    • SCBC-438: Added new overloads for Transactions.run that take TransactionOptions directly.

    Bugfixes

    • JVMCBC-1433: The SDK can now connect to Memcached buckets whose names contain the percent (%) character. (We’d like to take this opportunity to remind everyone that Memcached buckets are deprecated in favor of Ephemeral buckets.)

    • JVMCBC-1437: With Couchbase Server versions that support updating a collection’s max expiry, it’s now possible to clear the expiry by passing Duration.ZERO for the new value.

    • JVMCBC-1441: The SDK now handles an additional error case for IndexNotFoundException.

    • JVMCBC-1442: Fixed a dependency issue with tracing-opentelemetry module.

    • SCBC-435: Upgraded the Scala build versions, to allow compiling with JDK 21.

    • SCBC-436: CollectionManager.createCollection(CollectionSpec) now correctly passes expiry.

    Version 1.5.0 (21 November 2023)

    Version 1.5.0 is the first release of the 1.5 series.

    The SDK now supports distributed ACID transactions natively.

    The SDK now supports the new couchbase2 protocol, which is upcoming in future Couchbase Server versions. It can be enabled through using a connection string starting with couchbase2://. Please see Cloud Native Gateway for more information.

    The SDK now directly depends on SLF4J, which may impact some users — see below for details.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.8

    • org.reactivestreams:reactive-streams:1.0.4

    API Impacting

    • JVMCBC-1319: BEHAVIORAL CHANGE

      As previously announced, the SLF4J API is now a required dependency, and the SDK does all logging through SLF4J. The following client settings for customizing logging behavior are deprecated, and no longer have any effect:

      • logger.disableSlf4J

      • logger.fallbackToConsole

      • logger.consoleLoggerFormatter

        If your project does not already use SLF4J, please follow the announcement link for details and a mini-migration guide.

    Improvements

    • SCBC-432. Support added for distributed ACID transactions.

    • JVMCBC-1402, JVMCBC-1410: Upgraded Netty from 4.1.96 to 4.1.100, and upgraded OpenTelemetry dependency.

    • JVMCBC-1430: Optimization: removed creation of unnecessary metrics labels when default LoggingMeter is used.

    • JVMCBC-1391: The Bucket Manager API is now forward-compatible with future versions of Couchbase Server that might support storage engine types other than "magma" and "couchstore".

    • JVMCBC-1327: Improved support for failover handling in future server versions.

    Bugfixes

    • JVMCBC-1264: DNS SRV lookups now honor the DNS search path. This enables DNS SRV resolution in Kubernetes environments where the *-srv hostname advertised by the Couchbase Operator is a partial name that must be resolved using a suffix from the DNS search path.

    • JVMCBC-1426: When Couchbase Server is too busy to start a new KV range scan, the SDK now retries instead of throwing a CouchbaseException.

    • SCBC-433: Fix a regression in getAllScopes.

    Scala SDK 1.4 Releases

    Version 1.4 of the Scala SDK implements the 3.4 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Version 1.4.11 (4 October 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.8

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JCBC-2046: With thanks to community member Marcin Grzejszczak for the contribution, support for Micrometer Observation has been added to all JVM SDKs via the new tracing-micrometer-observation module.

    • JVMCBC-1327: Internal improvements to support upcoming faster failover and config push features.

    Bugfixes

    • JVMCBC-1364: Fixed decoding of certain niche sub-document errors, so they no longer raise a DecodingFailureException.

    • SCBC-424: ConflictResolution field is now correctly sent on creating a bucket.

    Version 1.4.10 (6 September 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.8

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1367: The db.couchbase.operations metric now has db.name (bucket), db.couchbase.scope, db.couchbase.collection and outcome labels (tags). This new feature is at Stability.Volatile, and may change before it is promoted to Stability.Committed in a future release.

    • JVMCBC-1311, JVMCBC-1352: Upgraded dependencies.

    • SCBC-419: Support deserializing Float.

    Bugfixes

    • JVMCBC-1350: lookupInAnyReplica now throws FeatureNotAvailableException if the server does not support the feature.

    • JVMCBC-1351: lookupInAnyReplica no longer hangs when too many operations are specified.

    • JVMCBC-1353: Removed the unrelocated io.opentracing classes that accidentally slipped into version 2.4.9 of the Couchbase core-io library.

    • JVMCBC-1361: When the SDK receives multiple cluster map versions at the same time, it is now more careful about applying only the most recent version. Before this change, there was a brief window where the SDK could apply an obsolete cluster map. If this happened, the SDK would temporarily dispatch requests to incorrect or non-existent nodes. This condition was typically short-lived, and healed the next time the SDK polled for an updated cluster map, or dispatched a KV request to the wrong node.

    • JVMCBC-1368: Fixed a rare java.lang.ArithmeticException: / by zero exception in RoundRobinSelectionStrategy.select that could occur during rebalance.

    • SCBC-420: Scope-level queries will now work correctly (they now send the query_context parameter).

    Version 1.4.9 (2 August 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1339: When KV traffic capture is enabled, each ReadTrafficCapturedEvent now contains a single protocol frame, and the human-readable frame description is more accurate.

    • JVMCBC-1320: The waitUntilReady method is now more aggressive about retrying failed pings. Also, waiting for a desired state of DEGRADED no longer fails when the client is fully connected to the cluster.

    • JVMCBC-1343: Reduced the default value for the io.idleHttpConnectionTimeout client setting to 1 second. The previous default (4.5 seconds) was too close to the 5-second server-side timeout, and could lead to spurious request failures.

    Version 1.4.8 (19 July 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • SCBC-406: Upcoming Couchbase server release 7.6 will support having SQL++ queries read from replicas, in scenarios where the active is unavailable (such as failover). This improves availability, though users should be aware that they may be reading stale data. The option is activated with scope.query("…​", QueryOptions().useReplica(true)), and is disabled by default. It will only work against 7.6 and above: against older server versions, it will return a Failure(FeatureNotAvailableException).

    • JVMCBC-1322: The waitUntilReady() method now logs additional diagnostic information to the com.couchbase.core.WaitUntilReady logging category at DEBUG level.

    Version 1.4.7 (12 June 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • JVMCBC-1290: For compatibility with other modern Couchbase SDKs, certificate verification can now be disabled using the connection string parameter: tls_verify=none. This config property is introduced at stability level Volatile, meaning it may change in a patch release without notice.

    • JVMCBC-1278, JVMCBC-1310, JVMCBC-1313: Dependencies updated.

    Bugs

    • JVMCBC-1288: Fixed a regression in Couchbase Java SDK 3.4.5 and Scala SDK 1.4 .5 that prevented Full-Text Search result rows from including an explanation when requested.

    • JVMCBC-1292: Removed META-INF/versions/9/module-info.class from the core-io jar. This file was associated with an improperly repackaged dependency, and never should have been there.

    Version 1.4.6 (4 May 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Bugs

    • JVMCBC-1275: Fixed a regression in Couchbase Java SDK 3.4.5 and Scala SDK 1.4.5 that caused Full Text Search term queries to throw NullPointerException unless prefixLength and fuzziness were specified.

    • JVMCBC-1285: Fixed a regression in Couchbase Java SDK 3.4.5 and Scala SDK 1.4.5 that caused Full-Text Search queries to fail to report the locations of some terms. Specifically, any location that did not have arrayPositions was omitted from the results.

    Version 1.4.5 (13 April 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

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

    • SCBC-392, SCBC-394: Internal improvements to further align Scala with the Java implementation for Full Text Search.

    Bugs

    • 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.4.4 (8 March 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • SCBC-383, SCBC-391: Adding CollectionQueryIndexManager, allowing query index management at the collection level via collection.queryIndexes().

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

    Bugs

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

    • JVMCBC-1234: Fixed a regression in Java SDK 3.4.3 and Scala SDK 1.4.3 that caused SQL++ query result metadata to always include metrics, regardless of the "metrics" query option.

    Version 1.4.3 (9 February 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • SCBC-384, SCBC-385, SCBC-386 SCBC-387: Internally, the JVM SDKs are being aligned to share the same implementation of multiple pieces of functionality. This should not impact end-users, but will ensure conformity of behavior and performance between all JVM SDKs, going forwards.

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

    • JVMCBC-1184: Updated dependencies.

    • JVMCBC-1213: If too many operations are specified in a single sub-document lookup, the exception message now indicates why the operation failed.

    Bug Fixes

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

    • SCBC-388: If expiry has not been requested on a KV get operation, then expiry fields in GetResult are now None, as expected.

    Version 1.4.2 (16 January 2023)

    This is a regular maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.4.2

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

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

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

    Bugs

    • JVMCBC-1161: Fixed a minor issue where cluster.disconnect() could occasionally timeout 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-1180: Supporting in transactions a future version of Couchbase Server that requires query_context be sent in all queries.

    • 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.4.1 (7 December 2022)

    Version 1.4.1 is the second release of the 1.4 series. The headline change is support for the KV range scan feature (collection.scan()), added at @Stability.Volatile level. This feature will be available in a future version of Couchbase Server.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.4.1

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

    • io.projectreactor:reactor-core:3.5.0

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

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

    • SCBC-377: KV range scan functionality (collection.scan()) added at @Stability.Volatile level.

    • SCBC-382: Cluster.connect now throws an IllegalArgumentException if you pass a pre-built ClusterEnvironment and a connection string incompatible with the environment. Before this change, the connection string scheme and parameters were always silently ignored when connecting with a pre-built cluster environment.

      • A pre-built environment without TLS enabled is incompatible with a connection string that specifies the secure couchases scheme.

      • A pre-built environment is incompatible with a connection string that has parameters.

    Bugs

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

    • SCBC-380: Bucket creation and update can now be used with Couchbase Server Community Edition 7.X.

    Version 1.4.0 (24 October 2022)

    Version 1.4.0 is the first release of the 1.4 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.4.0

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

    • io.projectreactor:reactor-core:3.4.24

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

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

    • SCBC-371: 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 env = ClusterEnvironment.builder.applyProfile(ClusterEnvironment.WanDevelopmentProfile).build.get.

    • SCBC-374, JVMCBC-1154: Bump dependencies.

    • SCBC-375: 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.

    • SCBC-376, 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.

    Removals

    • SCBC-372: We have made the difficult decision to remove the build for Scala 2.11. Scala 2.11’s last release was in November 2017, and supporting this legacy version is now impeding our ability to also support 2.12, 2.13 and in future Scala 3. Scala 2.11 users should continue to use the previous release (1.3.4) and are strongly recommended to upgrade to Scala 2.12 or 2.13, both of which are fully supported. Scala 2.11 has never been officially supported for the Couchbase Scala SDK, but it was previously possible for developers to build it themselves.

    Bugs

    • JVMCBC-1141: Provide required OpenTelemetry span attributes.

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

    Scala SDK 1.3 Releases

    Version 1.3 of the Scala SDK implements the 3.3 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Version 1.3.4 (9 September 2022)

    Version 1.3.4 is the fifth release of the 1.3 series, and is a maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.3.4

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

    • io.projectreactor:reactor-core:3.4.22

    • org.reactivestreams:reactive-streams:1.0.4

    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.

    Bug Fixes

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

    Version 1.3.3 (2 August 2022)

    Version 1.3.3 is the fourth release of the 1.3 series, and is a maintenance release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.3.3

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

    • io.projectreactor:reactor-core:3.4.21

    • org.reactivestreams:reactive-streams:1.0.4

    Improvements

    • 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 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 1.3.2 (6 July 2022)

    Version 1.3.2 is the third release of the 1.3 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.3.2

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

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

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

    Version 1.3.1 is the second release of the 1.3 series.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.3.1

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

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

    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 1.3.0 (26 April 2022)

    Version 1.3.0 is the first release of the 1.3 series.

    The two headline changes in this release:

    • Supports the new functionality of Couchbase Server 7.1.

    • 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:scala-client:1.3.0

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

    • io.projectreactor:reactor-core:3.4.17

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    • SCBC-352: Scala SDK now bundles the public Capella CA certificate.

    • JVMCBC-1074: When trying to connect to Capella without enabling TLS, an exception will be returned stating that TLS is required (instead of an UnknownHostException).

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

    • JVMCBC-1078: The SDK now allows you to customize the schedulerThreadCount.

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

    • JVMCBC-1082: Updated maintenance dependencies.

    • JVMCBC-1085: The last connect attempt failure is now stored and exposed through Diagnostics.

    Bugs

    • SCBC-350: NOT_STORED is now correctly handled as DocAlreadyExists when inserting a document.

    • SCBC-353: Fixed issue where incorrect GetAllIndexes response is returned on the default collection.

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

    Scala SDK 1.2 Releases

    Version 1.2 of the Scala SDK implements the 3.2 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Version 1.2.6 (2 March 2022)

    There are no changes at the Scala SDK layer in this release, but there are bugfixes and improvements in the underlying core-io library.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.6

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

    • io.projectreactor:reactor-core:3.4.14

    • org.reactivestreams:reactive-streams:1.0.3

    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.

    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.

    Version 1.2.5 (2 February 2022)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.5

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

    • io.projectreactor:reactor-core:3.4.14

    • org.reactivestreams:reactive-streams:1.0.3

    Bugs

    • SCBC-339: QueryIndexManager watchIndexes now refreshes on every try.

    • JVMCBC-1046: Do not load global config if node not in seed node list anymore.

    • JVMCBC-1058: When a non-default scope or collection is being created with memcached buckets, the correct FeatureNotAvailableException is now thrown.

    Improvements

    • SCBC-341: 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.)

    • SCBC-315: Custom conflict resolution added to the bucket management API.

    • SCBC-319: FTS options now include IncludeLocations and Operator.

    • SCBC-333: Query API now supports preserving TTL.

    • SCBC-335: Index management API now supports managing indexes for a collection.

    • SCBC-342: Send configured user timeout to search.

    • JVMCBC-1037: Avoid whenComplete closure for timeout cancellation. This is a small internal performance optimisation.

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

    • JVMCBC-1048: Always set RequestContext on RequestSpan.

    • JVMCBC-1056: Log more info on unexpected endpoint disconnect.

    • JVMCBC-1059: Handles any retry:true field in a query error result by retrying it.

    • JVMCBC-1055, JVMCBC-1047, JVMCBC-1051: Updating 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.

    Version 1.2.4 (9 December 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.4

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

    • io.projectreactor:reactor-core:3.4.12

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    • SCBC-334: Bucket Management API - Added Storage Option for Magma.

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

    • JVMCBC-1035: Made the (internal) subDocumentField is now serializable. This is needed for Apache Spark integration.

    • JVMCBC-1032: Adde (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 1.2.3 (2 November 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.3

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

    • io.projectreactor:reactor-core:3.4.9

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    Version 1.2.2 (6 October 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.2

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

    • io.projectreactor:reactor-core:3.4.9

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    • SCBC-265: Added an eventing management API.

    • SCBC-332: Fixes to JsonObject and JsonArray: improvements to the API for Safe transformations, fromSeq, fixed some conversion issues.

    • JVMCBC-1015: Improved 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.

    Interface Affecting

    • SCBC-331: Promoted Manager interfaces to committed.

    Bugs

    • SCBC-330: Ensured that JsonObjectSafe is recursive.

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

    • 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 1.2.1 (1 September 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.1

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

    • io.projectreactor:reactor-core:3.4.9

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    • SCBC-328: Update collections compat dependency.

    • SCBC-325: Add serialization support for Apache Spark.

    • SCBC-329: Expose all builder methods on SecurityConfig.

    • JVMCBC-1010: Maintenance dependency bump.

    • JVMCBC-990: 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.

    Bug fixes

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

    • JVMCBC-1007: LoggingMeter incorrectly marked as Volatile in SDK 3.2.

    Version 1.2.0 (20 July 2021)

    Version 1.2.0 is the first GA release of the 1.2 series, promoting to GA support for the scopes and collections provided by Couchbase Server 7.0, and also OpenTelemetry. In addition, a supported release for Scala 2.13 is now provided.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.2.0

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

    • io.projectreactor:reactor-core:3.4.6

    • org.reactivestreams:reactive-streams:1.0.3

    Improvement

    • SCBC-217: Provide a published and officially supported Scala 2.13 build.

    • SCBC-231: Update analytics management API to support compound dataverse names.

    • SCBC-232: Manage remote analytics links.

    • SCBC-240: Add analytics support for collections.

    • SCBC-309: Map Query Error 13014 to AuthenticationException.

    • SCBC-205: Provide a Scala version of the Travel Sample Application backend.

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

    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

    • SCBC-297: Promote collection APIs from Volatile to Committed.

    Bug Fixes

    • SCBC-270: Add redundant error handling for collection manager errors.

    • SCBC-296: JsonArraySafe should create an object wrapping a JsonObject.

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

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

    Scala SDK 1.1 Releases

    Version 1.1 of the Scala SDK implements the 3.1 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Version 1.1.8 (1 March 2022)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.1.8

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

    • io.projectreactor:reactor-core:3.4.15

    • org.reactivestreams:reactive-streams:1.0.3

    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.

    Version 1.1.7 (11 August 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.1.7

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

    • io.projectreactor:reactor-core:3.4.6

    • org.reactivestreams:reactive-streams:1.0.3

    Bug Fixes

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

    • JVMCBC-983: Slow subscribers are now ignored on certain Flux intervals.

    • JVMCBC-990: The SDK now gracefully handles cluster-level WaitUntilReady against clusters < 6.5.

    • SCBC-296: Fixes a JsonArraySafe bug.

    Improvements

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

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

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

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

    Improvements

    Version 1.1.6 (4 June 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

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

    Improvements

    • SCBC-237: Added ThresholdRequestTracerConfig and support for it in ClusterEnvironment.

    • SCBC-286: Added AggregatingMeterConfig, and allow the core meter property to be customized via ClusterEnvironment.

    • 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 1.1.5 (6 May 2021)

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.1.5

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

    • io.projectreactor:reactor-core:3.4.5

    • org.reactivestreams:reactive-streams:1.0.3

    Improvements

    • SCBC-266: Add FTS support for collections.

    • SCBC-281: Add Support to Preserve TTL.

    Version 1.1.4 (7 April 2021)

    While there are no changes specific to the Scala SDK in this release, it does inherit fixes from the underlying core-io release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.1.4

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

    • io.projectreactor:reactor-core:3.4.4

    • org.reactivestreams:reactive-streams:1.0.3

    Bug Fixes

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

    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.

    Version 1.1.3 (2 March 2021)

    Version 1.1.3 is the fourth release of the 1.1 series, bringing stabilizations and enhancements over 1.1.2.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

    • SCBC-285: Expose property loading on environment.

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

    • 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

    • JVMCBC-912: Refactor property loading.

    • JVMCBC-918: Move ProjectionsApplier into core.

    • JVMCBC-920: Move MutationState logic to core.

    • JVMCBC-921: Add OpenTelemetry attributes for spans.

    • JVMCBC-929: Retain stability annotations at runtime.

    • SCBC-284: Expose package-level APIs for Spark interop.

    Version 1.1.2 (2 February 2020)

    Version 1.1.2 is the third release of the 1.1 series, bringing stabilizations and enhancements over 1.1.1.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.1.2

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

    • io.projectreactor:reactor-core:3.4.1

    • org.reactivestreams:reactive-streams:1.0.3

    Bugs

    • SCBC-282: Collection map is no longer refreshed when using the default scope and default collection.

    API Affecting

    • SCBC-288: 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 1.1.1 (12 January 2020)

    Version 1.1.1 is the second release of the 1.1 series, bringing stabilizations and enhancements over 1.1.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.1.1

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

    • io.projectreactor:reactor-core:3.4.1

    • org.reactivestreams:reactive-streams:1.0.3

    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.

    • SCBC-274: 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

    • SCBC-273: Exposed partition information from the query management API on QueryIndex class.

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

    Version 1.1.0 (2 December 2020)

    Version 1.1.0 is the first GA release of the 1.1 series, bringing stabilizations and enhancements over 1.0.10 and the 1.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:scala-client:1.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

    • SCBC-241: Refactored Document Expiry Duration.

    • SCBC-253: Added disableScoring parameter for Search.

    • SCBC-229: The minimum durability level can now be configured on the BucketManager.

    Version 1.0.10 (3 November 2020)

    Version 1.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:scala-client:1.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.

    • SCBC-252: Enhanced user management for collections/RBAC, to support future 7.0 release.

    Scala SDK 1.0 Releases

    Version 1.0 of the Scala SDK implements the 3.0 SDK API. See the compatibility pages for more information on feature compatibility with different versions of Couchbase Server.

    Version 1.0.9 (7 October 2020)

    Version 1.0.9 is a maintenance release, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

    Bug Fixes

    • SCBC-254: Fixed a decode error (allocstall) on BucketSettings with certain long values sent from particular server versions by swapping out upickle for JsonObject decoding.

    • SCBC-257: Fixed FTS serialization issues.

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

    • SCBC-233: Geopolygon search support.

    • SCBC-234: Added support for FTS hints (flex index).

    • SCBC-236: Added ephemeral bucket management support.

    • SCBC-238: Added N1QL support for collections, via new Scope.query method.

    • SCBC-249: Added GetResult.expiryTime(), which returns an Instant vs GetResult.expiry()'s Duration.

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

    • JVMCBC-886: Improved LDAP auth failure handling.

    • JVMCBC-896: Fast dispatch pooled requests.

    Version 1.0.8 (1 September 2020)

    Version 1.0.8 is the ninth release of the Scala SDK, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

    Bug Fixes

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

    Enhancements

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

    Version 1.0.7 (4 August 2020)

    Version 1.0.7 is the eighth release of the Scala SDK, bringing enhancements, and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

    Bug Fixes

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

    • 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

    • 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, Reactor Scala Extensions → 0.7.1.

    Version 1.0.6 (14 July 2020)

    Version 1.0.6 is the seventh release of the Scala SDK.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

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

    Bug Fixes

    • SCBC-244: ViewQuery with keys does not work.

    • 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 1.0.5 (2 June 2020)

    Version 1.0.5 is the sixth release of the Scala SDK. It brings no new changes to the Scala client itself, but inherits enhancements and bugfixes over the last stable release from the core-io dependency.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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.

    Bug Fixes

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

    Version 1.0.4 (7 May 2020)

    Version 1.0.4 is the fifth release of the Scala SDK. It brings no new changes to the Scala client itself, but inherits enhancements and bugfixes over the last stable release from the core-io dependency.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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.

    Version 1.0.3 (7 April 2020)

    Version 1.0.3 is the fourth release of the Scala SDK. It brings no new changes to the Scala client itself, but inherits enhancements and bugfixes over the last stable release from the core-io dependency.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.0.3

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

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

    • org.reactivestreams:reactive-streams:1.0.2

    Enhancements

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

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

    Bug Fixes

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

    Version 1.0.2 (3 March 2020)

    Version 1.0.2 is the third release of the Scala SDK, bringing enhancements and bugfixes over the last stable release.

    The supported and tested dependencies for this release are:

    • com.couchbase.client:scala-client:1.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

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

    • SCBC-43: With huge thanks to our community, who submitted the patch, it is now possible to build versions of the SDK for 2.11 and 2.13. Couchbase only officially provides, tests and supports a Scala 2.12 build currently, but users are welcome to build their own jars for 2.11 or 2.13 following the README instructions.

    Bug Fixes

    • SCBC-200: Dependencies now correctly shaded.

    • SCBC-207: Exists no longer returns wrong value if executed right after remove.

    • SCBC-216: Properly clear cache when repreparing/retrying query.

    • JVMCBC-824: Native Netty transports not included, resulting in fallback to default implementation. This was a regression in the 2.0.2 core-io release.

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

    Version 1.0.1 (5th February 2020)

    Version 1.0.1 is the second release of the 1.0 series, bringing new features, enhancements, and bugfixes over the last stable release.

    Stability Enhancements & Bug Fixes

    • SCBC-192: All scaladoc warnings fixed.

    • SCBC-193: When creating buckets, numReplicas can now be specified.

    New Features & Enhancements

    • SCBC-190: Exposed enableDnsSrv parameter on IoConfig(), allowing DNS SRV to be used.

    • SCBC-204: Added support for new server flag createAsDeleted — for internal use only.

    • SCBC-201: Exposed Java core environment through Scala ClusterEnvironment, allowing the event-bus to be accessed.

    • SCBC-198: Exposed environment getter through cluster. This allows a constructed environment to be shutdown without having to maintain a reference to it.

    Version 1.0.0 (17th January 2020)

    This is the first General Availability (GA) release of the new Couchbase Scala SDK. It brings a large number of improvements, bug-fixes and API changes from the previous beta release.

    Stability Enhancements & Bug Fixes

    • SCBC-147: QueryIndexManager should return only GSI indexes

    • SCBC-151: Make sure all reactive ops are deferred; this ensures that collection.reactive.remove(…​) won’t perform a remove until the SMono is subscribed to

    • SCBC-154: Make UserManager handle pre-LDAP clusters

    • SCBC-157: Handle projections of objects inside arrays correctly

    • SCBC-158: Handle 'too many set inserts' internal error while converting JSON to case classes

    • SCBC-163: ViewQuery does not send request

    • SCBC-167: Fix FTS consistentWith

    • SCBC-174: ReactiveCollection KV operations now do ClientVerified Observe check

    • SCBC-182: QueryOptions missing setters

    New Features & Enhancements

    • SCBC-190: Expose enableDnsSrv parameter on IoConfig(), allowing DNS SRV to be used

    • SCBC-192: All scaladoc warnings fixed

    • SCBC-204: Add support for new server flag createAsDeleted, for internal use only

    API Changes

    • SCBC-159: Fix semantics of datastructures so they behave more like Scala collections

    • SCBC-162: All ReactiveBinaryCollection methods should return SMono

    • SCBC-164: Align with latest view RFC

    • SCBC-136: Track all Java environment changes

    • SCBC-138: Replace management API Scala exceptions with core ones

    • SCBC-139: GetSelecter is using incorrect exceptions

    • SCBC-155: Rename *master to *active throughout

    • SCBC-187: Remove scopeExists and collectionExists from CollectionManager

    • SCBC-188: Align UserAndMetadata with latest RFC