Skip to content

Releases: couchbase/libcouchbase

3.3.2

29 Aug 13:52
3.3.2
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.2

  • CCBC-1559: cbc-n1qlback: give time to IO loop in case of failure.

    In schenario where all query nodes suddenly failed over and/or removed from the cluster, all requests in cbc-n1qlback will start failing. Because the libcouchbase knows that the latest config does not have any query nodes, it rejects all queries immediately. The single-threaded nature of libcouchbase does not allow the IO loop to run in background, and the code in the tool does not run lcb_wait in case of failure.

    As a fix, we run lcb_tick_nowait in case of failure, which is enough for libcouchbase to give IO loop a chance to check for any pending events and invoke corresponding callbacks.

  • CCBC-1552: Allow building with external jsoncpp

  • CCBC-1544: update feedback links: Jira, Forums and Discord

  • CCBC-1556: clarify log messages related to config cache

  • CCBC-1557: allow caching cluster-level configurations

    The library will cache cluster-level configurations only if the config_cache= connection string option is set to directory (ends with '/' symbol), otherwise it will cache only buckets configurations (note that in this case the application should use unique cache name for each bucket, otherwise the library will ignore cache if the bucket name will not match).

3.3.1

26 May 11:51
3.3.1
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.1

CCBC-1550: Fixed RPM packages for CentOS 7, now they will require OpenSSL 1.1 during build. Also build script will not automatically define LCB_NO_SSL option if OpenSSL is not found. For builds without TLS support, this option must be explicitly defined.

CCBC-1546: cbc-pillowfight: add --rand-space-per-thread to allow threads to work from different rand numbers.

3.3.0

11 May 12:23
3.3.0
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.3.0

Features:

  • CCBC-1540: The SDK now bundles the Capella CA certificate automatically.

Fixes:

  • CCBC-1538: The SDK now uses a 64-bit integer to store time in the IOCP plugin.

  • CCBC-1526: The SDK no longer validates the length of collection specifier. This will be checked on the server-side.

  • CCBC-1527: Fixed issue where Pillowfight was leaking a large number of memory allocations, which occured during startup. Pillowfight will now deallocate all memory during shutdown.

3.2.4

26 Nov 08:37
3.2.4
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.2.4/

CCBC-1522: Filter DnsQuery results on Windows by type: only use records with DNS_TYPE_SRV type.

CCBC-1521: Fixed bootstrap process when client certificate is used. We always pipeline error map request with HELLO request, and usually await for hello+error_map responses, because after that goes SASL authentication (and then optional selection of the bucket) which cannot be completely pipelined. But in case of client certificate, we might terminate bootstrap process too early if the bootstrap process does not require immediate selection of the bucket.

CCBC-1432: Support for rate limiting error codes: LCB_ERR_RATE_LIMITED and LCB_ERR_QUOTA_LIMITED.

CCBC-1514: Do not translate unknown error with "item-only" attribute into LCB_ERR_CAS_MISMATCH.

CCBC-1515: Performance optimization: replace sstream with string append(). Only if list of IO vectors supplied for value in mutation operations.

3.2.3

20 Oct 13:13
3.2.3
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.2.3

  • CCBC-1484: Fixed tracing tags in accordance to RFC.

  • CCBC-1510: Fixed key length calculation for exists/get/touch/unlock.

  • CCBC-1495: Fixed payload encoding in query index management helpers. Query index management helpers now explicitly declared deperecated.

  • CCBC-1506: Duration values now accepted golang style encoding. Connection string and lcb_cntl_string now can parse strings with duration encoded in golang style, e.g. analytics_timeout=5s42us. The result still converted into 32-bit value with microsecond resolution.

  • Improved test coverage, stability and documentation.

3.2.2

22 Sep 21:57
3.2.2
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.2.2

  • CCBC-1485: Allow disabling tracer for connected instance.

  • CCBC-1472: Ensure strict JSON parsing mode for query meta.

  • CCBC-1494: Disconnect logger after lcb_destroy invoked to avoid double free errors.

  • CCBC-1457: improve error message when server enforces encryption

  • CCBC-1489: Fixed get_and_touch to use the correct expiry.

  • CCBC-1487: Fixed retryq erasing already sent packets.

  • CCBC-1488: Fixed incorrect refcounting in Connstart.

  • CCBC-1479: Initialize fields of custom tracer struct.

  • CCBC-1478: Do not retry successful query with empty result.

  • CCBC-1216: Implement user impersonation API

  • Improved test coverage and stability.

3.2.1

20 Aug 21:25
3.2.1
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.2.1

  • CCBC-1429: Fixed positional parameters for query/analtyics:

    • reverts behaviour lcb_cmdquery_positional_param and lcb_cmdanalytics_positional_param to append single JSON-encoded value to arguments array.

    • introduces new functions lcb_cmdquery_positional_params and lcb_cmdanalytics_positional_params that accept all positional arguments at once as JSON-encoded array.

    • document, that old functions will emit compiler warning since 3.3.0 release and will be removed later.

  • CCBC-1428: Clear callback upon error in lcb_search.

  • CCBC-1454: Fixed compiler warning in lcb_getreplica.

  • CCBC-1453: Refactored local name caching in lcbio_cache_local_name to simplify the code and eliminate compiler warnings.

  • CCBC-1451: Fixed strdup usage, in some cases the compiler might choose strdup to return int instead of char * which might lead to memory issues.

  • CCBC-1448: Fixed cmake macro for examples. The macro ADD_EXAMPLE now correctly updates header directories for generated target.

  • CCBC-1445: Always invoke callbacks for pending HTTP operations. When destroying lcb_INSTANCE make sure that all HTTP requests (views, query, search, analytics) will have their callbacks invoked.

  • CCBC-1438: Fixed frame size for mutations with durability. Counter, Store and Subdoc mutations were sending incorrect frame size of durability encoding, which led to rejection of the command by the server.

3.2.0

20 Jul 10:55
3.2.0
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.2.0

  • CBCC-1280: Support for OpenTelemetry tracing.
    Tracing updated to allow for an external tracer that creates and finishes spans, adds tags, destroys spans. Also, spans now have the notion of being the 'outer' span. That is the span that has all the outer span tags, and is the one whose duration is used to determine whether or not the operation has exceeded the threshold if the ThresholdLoggingTracer is used.
    If you pass in a parent that is an outer span, you must call lcbtrace_span_finish yourself. When an operation begins, if there is no parent span passed in, or if there is but it isn't an 'outer' span, then the operation creates the outer span itself.
    See /examples/tracing/otel_tracing.cc for an example.

  • CCBC-1362: Support for metrics.
    When enabled, by default will output a histogram of latencies for various kv operations plus query, search, analytics and view queries.
    If desired, an external metrics collector can be passed in when the instance is created, which will then be called with latencies for each operation. This can be used to call into an opentelemetry meter for aggregation and export.
    See /examples/metrics/otel_metrics.cc for an example.

  • CCBC-1421: Allow empty path for subdocument array methods.

  • CCBC-1417: Deprecate CAS usage with counter operation.

  • CCBC-1418: Map query error 13014 to LCB_ERR_AUTHENTICATION_FAILURE.

  • CCBC-1357: Allow to preserve expiration with Replace, Upsert and MutateIn operations.

  • CCBC-1384: Allow the operations to be deferred until the instance will be connected to cluster.

  • CCBC-1410: Refactor dynamic authenticator. NOTE: this API still volatile and might be changed in future.
    In order to improve UX and allow caller to implement credential caching the API for authenticator was revised:

    • instead of separate callbacks for username/password, now it uses single callback

    • in the callback, the caller can figure out the reason of credentials request using lcbauth_credentials_reason()

    • the caller can signal that it failed to retrieve credentials from external provider, and set result with lcbauth_credentials_result(). In this case the SDK will not retry the operation.

  • CCBC-1413: Skip SELECT_BUCKET packets waiting retry queue.

  • CCBC-1169: Request copy from active vbucket for get_all_replicas operation.

  • CCBC-1406: Fill in prepared statement handle on retry.

  • CCBC-1405: Remove const from command cookie.

  • CCBC-1402: Fix parsing JSON primitives as query rows.

  • Various improvements and fixes in test and build infrastructure

3.1.4

19 Jul 15:26
3.1.4
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.1.4

  • CCBC-1311: Implement create_as_deleted subdoc feature.
  • CCBC-1263: Update ping to report analytics as analytics service instead of query
  • CCBC-1175: Allow to specify timeout for lcb_ping
  • CCBC-1262: Add accessor for report_id in ping report
  • CCBC-1176: Rename "scope" to "namespace" in ping report (also deprecate lcb_respping_result_scope in favour to lcb_respping_result_namespace)
  • CCBC-1261: Set namespace length of service in ping report to zero if not applicable
  • CCBC-1194: Add extra checks for socket state in lcb_diag to avoid invalid access issues
  • CCBC-1314: Extra checks for socket state in lcb_ping to avoid invalid access issues
  • CCBC-1316: Fix two-step bootstrap (lcb_connect + lcb_open) for memcached bucket.

3.1.3

11 May 04:58
3.1.3
Compare
Choose a tag to compare

API documentation: https://docs.couchbase.com/sdk-api/couchbase-c-client-3.1.3

CCBC-1398: Parse and use revEpoch from configuration in order to allow the server to handle special cases of failover scenarious.
CCBC-1399: Implement retry backoff for query requests. Instead of retrying requests immediately, use backoff period returned by retry strategy.
CCBC-1400: Fill collection name when retrying collection resolution to avoid misrouting requests to default collection.
CCBC-1397: Reset list of "used" nodes when retrying query to allow reusing endpoints.
CCBC-1401: Fix special error message detection for Query requests. In addition to reacting on the error codes from query service, the library also scans error messages for particular sub-strings to decide whether retry is necessary.
CCBC-861: Purge pipelines on lcb_destroy. In order to avoid resource leaks, the library purges all pending (or waiting) commands from the pipelines upon destruction.
Fix cbc-proxy tool.