Releases: couchbase/libcouchbase
3.3.18
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.18
Full Changelog: 3.3.17...3.3.18
-
CCBC-1672: Fixed protocol violation on new connections.
In certain cases, extra bytes could be sent at the start of a new connection. Most of the time, this caused the server to drop the connection and the client would reconnect automatically, so users did not notice. However, in rare cases the server would accept the data as valid, leading to protocol issues. This has been corrected so that invalid data is properly discarded and connections stay consistent. -
CCBC-1671: Send requests to all replica nodes for strategy "ANY".
This change makes implementation ofget_any_replicabehave the same way as other SDKs.- The old behavior: "get any replica" would send requests sequentially one by one. So that next request will be dispatched only when previous fails.
- The new behavior: "get any replica" send requests to active and replica nodes simulaneously and returns only first response to the user, discarding everything else.
-
CCBC-1669: Fail
get_all_replicasonly if none nodes are available. -
CCBC-1668: Do not assume that missing active node means none available for replica read. With this change reading replica will be more reliable during failover and rebalance events.
-
CCBC-1667: Do not schedule config update during instance termination. This change fixes use-after-free during
lcb_destroy. -
CCBC-1674: Do not use non-owning spans to release memory with
NETBUF_LIBC_PROXY.
Fix use-after-free for build withNETBUF_LIBC_PROXYwhen snappy compression is enabled. This is special build when caching allocator is replaced with just libc malloc. It is used only during development and testing, and never enabled in production. -
CCBC-1673: Do not return block with
deallocsas free infind_free_blockof the netbuf subsystem. -
Raise minimum cmake version to 3.17
-
Log local port to make it easier to correlate logs with the server
3.3.17
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.17
Full Changelog: 3.3.16...3.3.17
- CCBC-1666: Do not schedule config request during shutdown. With completion-based IO (libuv, Windows IOCP), the library might try to schedule configuration update on already deallocated pipeline and cause use-after-free condition.
3.3.16
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.16
Full Changelog: 3.3.15...3.3.16
- CCBC-1664: Register read event watcher for KV socket if duplex is enabled. Fixes missing configuration updates on newer server versions (7.6.5+).
- CCBC-1662: Ignore server-side notification during bootstrap. Libcouchbase reports protocol error and stop bootstrapping the connection if the server sends configuration notification during the initial handshake.
- Define
LCB_CC_STRINGfor MS VS 17 to fix packaging scripts. - CCBC-1658: Add support for encrypted TLS keys. The key password should be specified in connection options with
lcb_createopts_tls_key_password().
3.3.15
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.15
Full Changelog: 3.3.14...3.3.15
- CCBC-1652: allow to force SASL when client certificate is being used
3.3.14
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.14
Full Changelog: 3.3.13...3.3.14
- CCBC-1653: Fix setting timeout for analytics query.
- CCBC-1651: Ensure that purged packets get their memory released, it fixes memory leak in case of network issues.
- CCBC-1646: Server groups for replica reads.
- CCBC-1555: Remove extra prefix in tapset probes.
- CCBC-1598: Fix documentation for cbc tools.
- Fix tests on 7.6 server
3.3.13
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.13
Full Changelog: 3.3.12...3.3.13
3.3.12
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.12
Full Changelog: 3.3.11...3.3.12
-
CCBC-1636: Deallocate old packet when updating collection ID.
mcreq_renew_packet()requires the caller to deallocate original copy, otherwise the memory will be only released by pipeline destructor. -
CCBC-1634: Fix reporting unresponsive nodes in
lcb_ping().- do not retry NOOP commands, as they might be routed to different pipeline, instead fail fast NOOPs to reflect network issues more precisely.
- use pipeline address as ping entry identifier instead of socket address, as socket might not be existing (not connected) due to network failures.
lcb_pingstill have report even when overall status is notLCB_SUCCESS, so cbc-ping should still try to print report instead just printing overall status code.
-
CCBC-1630: Check collection id before storing packet to pipeline.
Every timecheck_collection_id()is invoked, the caller should ensure that this function potentially is rewriting the packet, if it decides to insert/update encoded collection ID. -
CCBC-1627: Fix
bodylenvalue whenffextlen(flexible frame extra length) is not zero.
3.3.11
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.11
Full Changelog: 3.3.10...3.3.11
-
CCBC-1618: Update query error codes for dynamic authenticator. This is an update to internal interface, that allows more granular detection of stale authentication conditions for query service.
-
Prevent full rebuild on every run of cmake. Do not render built timestamp into the header, but instead only use it in object file.
3.3.10
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.10
Full Changelog: 3.3.9...3.3.10
-
CCBC-1616:
Await_for_configcheck is now applied for all pipelines. Previously, thelcb_waitfunction would wait for the pending configuration updates, but didn't do it if the configuration update operation was being retried. Now, the operation also will not wait for pending configuration updates, rather it will return fromlcb_waitas soon as the operation completes.- The old behaviour still works when
wait_for_config=trueis passed in the connection string (orLCB_CNTL_WAIT_FOR_CONFIGis set to non-zero value): in this case the library will wait for the configuration. - This setting does not affect the mode when the event loop is executed by the application, and without
lcb_wait.
- The old behaviour still works when
3.3.9
API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.9
Full Changelog: 3.3.8...3.3.9
-
CCBC-1608: reduce timeout for idle HTTP connections to 1 second
-
CCBC-1615: handle rate limit codes during bootstrap
-
CCBC-1612: Improve recovery time during rebalance for upcoming Server 7.6.
- do not throttle CCCP provider in faster failover mode.
- try to refresh configuration in case of network errors to speed up the recovery process during failover.
-
CCBC-1611: Handle
0x0d(ECONFIG_ONLY) status code. Treat this status code as a signal to refresh configuration.
The new or failed over nodes are set into config-only mode, where all data operations will be failed with code 0x0d. It is possible that the SDK might be using stale configuration and send requests to the node, that is not part of the cluster anymore, so to work around this, the library will update the configuration and retry the operation. -
CCBC-1610: Fix memory issues when setting collection id in the cluster with mixed server versions, where some of the nodes do not support collections.