SDK Release Notes
Release notes, brief installation instructions, and download archive for the Couchbase Scala Client.
Version 1.7 of the Scala SDK implements the 3.6 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 Scala SDK 1.7 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" % "1.7.5"
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: '1.7.5'
}
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>1.7.5</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 causeping()
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 ofcom.couchbase.client.core.topology.NodeIdentifier
.
Improvements
-
JVMCBC-1576: Bumped
protobuf
version from3.23.2
to3.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 providedparentSpan
, 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)) ) ) );
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
ifDurability.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 throwInvalidArgumentException: 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
-
JVMCBC-1532: Upgraded Jackson to 2.17.2.
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
-
SCBC-450, JVMCBC-1508, and JVMCBC-1509: Upgraded dependencies.
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 ofSearchRow.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()
andCollection.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 bypassingBestEffortRetryStrategy
. -
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 assumed1
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()
andgetAllReplicas()
will now use theTranscoder
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()
andscope.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 sameOpenTelemetry
version astracing-opentelemetry
. -
JVMCBC-1468:
Cluster.connect
now validates that connection strings using thecouchbase2
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()
andlookupInAllReplicas()
will now raiseDocumentUnretrievableException
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 throwsNullPointerException
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 inNOT_BOUNDED
mode, as set bycore-io
. The desired behavior is for the default transactional queryScanConsistency
to benot-set
, and this fix ensures that there should now be noQueryScanConsistency
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 thetracing-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 takeTransactionOptions
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 hasdb.name
(bucket),db.couchbase.scope
,db.couchbase.collection
andoutcome
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 throwsFeatureNotAvailableException
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 Couchbasecore-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 inRoundRobinSelectionStrategy.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 ofDEGRADED
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 aFailure(FeatureNotAvailableException)
. -
JVMCBC-1322: The
waitUntilReady()
method now logs additional diagnostic information to thecom.couchbase.core.WaitUntilReady
logging category atDEBUG
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 levelVolatile
, 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 thecore-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 throwNullPointerException
unlessprefixLength
andfuzziness
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
atUncommitted
API stability level. A customRetryStrategy
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 aNullPointerException
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 viacollection.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 genericCouchbaseException
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 nowNone
, 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 forx86_64
architectures. Native libraries for IO and TLS are enabled by default. If you need to disable native IO, set theioEnvironment.enableNativeIo
client setting to false. To disable native TLS, set thesecurity.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 anIllegalArgumentException
if you pass a pre-builtClusterEnvironment
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 aClassCastException
. -
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 inKeyValueBucketRefresher
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 toINFO
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 anInstant
. -
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 asDocAlreadyExists
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 aMeter
owned by the cluster. This plugs a resource leak whereLoggingMeter
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 ofRetryAction.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 customRetryStrategy
. -
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 ofSecurityConfig.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
onRequestSpan
. -
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
-
JVMCBC-1026: Added support for Error Map v2.
-
SCBC-326: Added
LookupInResult.contentAsBytes()
.
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
andJsonArray
: 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 forTargetedQueryRequest
.
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-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 aCouchbaseException
.
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.
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 inClusterEnvironment
. -
SCBC-286: Added
AggregatingMeterConfig
, and allow the coremeter
property to be customized viaClusterEnvironment
. -
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
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.
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.
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
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
andDecrementOptions
. 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.
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
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