Skip to content

Releases: couchbase/libcouchbase

3.3.18

11 Sep 12:59
3.3.18

Choose a tag to compare

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 of get_any_replica behave 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_replicas only 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 with NETBUF_LIBC_PROXY when 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 deallocs as free in find_free_block of 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

12 Jun 01:21
3.3.17

Choose a tag to compare

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

02 Jun 06:32
3.3.16

Choose a tag to compare

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_STRING for 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

11 Mar 15:52
3.3.15

Choose a tag to compare

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

12 Nov 21:35
3.3.14

Choose a tag to compare

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

23 Sep 23:39
3.3.13

Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.13
Full Changelog: 3.3.12...3.3.13

  • CCBC-1647: Handle server-side query timeout (status 1080).
  • CCBC-1643: fix memory leak of pending buffers in IO context.
  • CCBC-1645: do not use explicit initialization for OpenSSL 1.1+.
  • Fix build with -DLCB_DUMP_PACKETS=ON
  • Fix pkg-config for MacOS

3.3.12

02 Mar 20:27
3.3.12

Choose a tag to compare

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_ping still have report even when overall status is not LCB_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 time check_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 bodylen value when ffextlen (flexible frame extra length) is not zero.

3.3.11

25 Jan 19:01
3.3.11

Choose a tag to compare

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

10 Oct 18:59
3.3.10

Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.10
Full Changelog: 3.3.9...3.3.10

  • CCBC-1616:
    A wait_for_config check is now applied for all pipelines. Previously, the lcb_wait function 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 from lcb_wait as soon as the operation completes.

    • The old behaviour still works when wait_for_config=true is passed in the connection string (or LCB_CNTL_WAIT_FOR_CONFIG is 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.

3.3.9

22 Sep 20:48
3.3.9

Choose a tag to compare

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.