Releases: couchbaselabs/couchbase-cxx-client
1.0.0-dp.15
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.15
Full Changelog: 1.0.0-dp.14...1.0.0-dp.15
Enhancements
- CXXCBC-443: Public API for Range Scan. (#546)
- CXXCBC-489: Support scoped eventing functions. (#548)
- CXXCBC-489: Add
version_7_2_0 eventing
function language compatibility. (#554) - CXXCBC-470: Distinguish between 'unset' and 'off' query_profile (#551)
Fixes
- CXXCBC-487: Check if alternate addressing is used when bootstrapping. (#545)
- CXXCBC-503: Ignore configuration if it contains an empty vBucketMap. (#556, #558)
- CXXCBC-30: Inconsistent behaviour when using subdoc opcodes incorrectly (#559)
- CXXCBC-492: Use retry strategy in collections_component's get_collection_id. (#552)
- CXXCBC-494: Fix memory issue in range scan implementation. (#549)
- Always attempt to extract common query code if error has not been set. (#561) Fixes quota/rate limit checks for older servers.
Build and Tests Fixes
- CXXCBC-502: Apply
/bigobj
for SDK objects only. (#550) Avoid using global add_definitions() as it might leak to non-CXX languages (likeASM_NASM
on Windows). - Add feature check for scoped analyze_document in tests (#555)
- Update dependencies (#543)
1.0.0-dp.14
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.14
Full Changelog: 1.0.0-dp.13...1.0.0-dp.14
Fixes
-
CXXCBC-482: Range scan orchestrator should use best effort retry strategy by default. (#542)
-
CXXCBC-481: Fix potential crash when parsing search result hits. (#541)
-
CXXCBC-461: Do not send ping to nodes that have not completed bootstrap. (#540)
-
CXXCBC-462: Fix hanging when specifying a custom metadata collection via the public API & expose errors. (#532)
-
CXXCBC-480: LookupInAnyReplica should not enforce any limits on number of specs in the library. (#539)
-
CXXCBC-479: Fix capabilities check for replica LookupIn operations. (#537)
-
CXXCBC-336: Do not fallback to 8.8.8.8, if we cannot obtain system DNS server (#533)
-
CXXCBC-448: Expose hooks for fork() scenarios. (#536)
See
example_fork::main()
intest/test_integration_examples.cxx
.
Build and Tests fixes
-
CXXCBC-458: Run transactions hooks asychronously. (#538)
-
Fix build with GCC 14. (#535)
-
Cleanup output of the transaction code sample. (#534)
-
Fix query error context fields. (#531)
1.0.0-dp.13
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.13
Full Changelog: 1.0.0-dp.12...1.0.0-dp.13
New features and enhancements
-
CXXCBC-456: handle 0x0d (config_only) status from KV (#523).
On 0x0d (EConfigOnly) status code SDK will request new configuration, and send current operation to retry orchestrator. -
CXXCBC-191: Create Index Key Encoding (#519)
-
CXXCBC-442: Add support for raw_json and raw_string transcoders (#514, #515)
-
Add full_set option to view query options (#517)
Fixes
-
CXXCBC-345: Range scan improvements & resolve concurrency issues (#525).
-
CXXCBC-284: Do not use session that is not bootstrapped to poll for config (#528)
-
CXXCBC-447: Use addresses from the config to bootstrap bucket (#516)
-
CXXCBC-450: Reset bootstrap handler before re-bootstrap (#524).
We do not want any actions from old bootstrap handler once the session decided to re-bootstrap.
For example, bucket could not be selected, but we might still get configuration responses before
socket reset. -
Update view design_document rev to be optional (#526).
-
Change encoded search request showrequest param from string to boolean. (#518)
-
CXXCBC-452: Update capabilities and fail fast when selected feature is not available. (#522, #513)
- CXXCBC-431: Add check for history retention bucket capability in collection create/update (#502, #505)
- CXXCBC-421: Return feature_not_available when query preserve expiry is not supported (#510)
Build optimizations and Tools
-
Improvements in cbc-pillowfight (#529)
- record latencies and display histogram in the end of the run,
- fix termination condition when using multiple threads,
- use running average for runtime rate display,
- allow to configure separate batch size for queries,
- fixed links in the reference pages.
-
Fix doxygen warnings and update config (#530).
-
Test improvements.
1.0.0-dp.12
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.12
Full Changelog: 1.0.0-dp.11...1.0.0-dp.12
New features and enhancements
- CXXCBC-401: Add ping & diagnostics to public API. (#498, #503)
- CXXCBC-346: Support for maxTTL value of -1 for collection 'no expiry'. (#500)
- CXXCBC-442: Support for raw_json and raw_string transcoders. (#514)
- CXXCBC-440: Support for Scoped Search Indexes. (#512, #513)
Fixes
- CXXCBC-284: Reduce network traffic when polling for cluster configuration. (#504)
- CXXCBC-422: Add insufficient credentials error code to common query error code conversion. (#511)
- CXXCBC-421: Return
feature_not_available
when query preserve expiry is not supported. (#510) - CXXCBC-426: Get with very large projection test is returning fields outside of the projection. (#499)
Build optimizations
- CXXCBC-446: Improve logging formatting. (#508, #506, #509)
- CXXCBC-446: Run sanitizers with TLS connections. (#507)
- CXXCBC-431: Add check for history retention bucket capability in collection create/update. (#502, #505)
- Add cap to
exp_delay
to limit number of transaction retries. (#494) - Declare boringssl as system library (#509)
1.0.0-dp.11
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.11
Full Changelog: 1.0.0-dp.10...1.0.0-dp.11
Fixes
-
CXXCBC-404: KV_LOCKED status should be exposed as
cas_mismatch
for unlock. (#479) -
CXXCBC-403: Allow retries for KV
not_my_vbucket
response. (#480) -
CXXCBC-368: Subscribe to clustermap notifications to speedup failover. (#490)'
-
CXXCBC-419: Ensure that MCBP protocol parser starts with clean state. Fixes protocol parsing issues when bootstrap sequence is being retried. (#496)
-
CXXCBC-409: Add handling for 'index does not exist' query error. (#492)
-
CXXCBC-391: Fix transactions API inconsistencies. (#482)
- Remove
kv_timeout
- Rename
expiration_time
totimeout
- Remove
-
CXXCBC-408: Search Public API Issues. (#487)
- implement search sort geo distance
- add constructor to phrase query with vector
- add
doc_id_query
encode - complete search row location definition
New features and enhancements
- CXXCBC-309: Implement Search index management public API (#483)
- CXXCBC-100: Add ability to set timeout for ping. (#486)
- CXXCBC-412: Support
document_not_locked
response. (#491) - CXXCBC-308: Add analytics index manager in the public API. (#484)
Build optimizations
- CXXCBC-332: Hide implementation of the
core::cluster
class into object file to speedup the build. (#415) - CXXCBC-411: fix logger issues by compiler (#488)
1.0.0-dp.10
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.10
Full Changelog: 1.0.0-dp.9...1.0.0-dp.10
Fixes
- CXXCBC-383: Map
subdoc_doc_too_deep
KV status topath_too_deep
error code. (#455) - CXXCBC-382: Fix
raw_binary_transcoder
so thatget
s on binary data are possible. (#459)
New features and enhancements
- CXXCBC-377: Implement ExtParallelUnstaging in transactions. (#457)
- CXXCBC-363: Add examples for bulk operations. (#442)
- Add more information to diagnose timeouts on NMV responses. (#475)
- Migrate cbc tools from
docopt
toCLI11
. (#466)
Runtime performance optimizations
- CXXCBC-387: Optimising tags for
noop_tracer
. (#461) - CXXCBC-387: Cache formatted
mbcp_session
endpoints. (#462, #464)
Build optimizations
1.0.0-dp.9
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.9
Full Changelog: 1.0.0-dp.8...1.0.0-dp.9
-
CXXCBC-376: Revisit what 'create' and 'update' bucket operations send to the server. Make optional bucket settings fields optional, and do not send anything unless the settings explicitly specified. (#451)
-
CXXCBC-374: Return 'bucket_exists' error when the bucket already exists during 'create' operation. (#449)
-
CXXCBC-359: Reduce default HTTP idle timeout to 1 second (#448)
-
CXXCBC-367, CXXCBC-370: Add history retention settings to buckets/collection management. (#446)
-
CXXCBC-119: Return booleans for subdocument 'exists' operation instead of error code. (#444, #452)
-
Detect 'collection_not_found' error in 'update_collection' response (#450)
1.0.0-dp.8
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.8
-
CXXCBC-362: Remove node hostname port stripping logic from config parsing (#438)
-
CXXCBC-341, CXXCBC-365: Support for subdoc read from replica (#436, #441, #443)
-
CXXCBC-340: Add query read from replica feature macro (#435)
1.0.0-dp.7
1.0.0-dp.7
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.7
-
CXXCBC-242: SDK Support for Native KV Range Scans (#419, #423, #424, #428, #431, #432, #433, #434, #426)
- Added
prefix_scan
as top-level scan type - Changed scan terms from byte vectors to strings
- Seed for sampling scan is randomly generated if not specified
- Removed
range_scan_cancelled
error code, returningrequest_canceled
instead - Removed sorting
- Added
concurrency
option to orchestrator to set the maximum allowed level of concurrency - The constructor of
range_scan_orchestrator
takes the vbucket map instead of the number of vbuckets - Implemented new concurrency approach for scanning vbuckets:
- Streams start with the maximum level of concurrency. If a temporary failure occurs (i.e. receiving busy status from the server) the stream is retried a later point and the concurrency is reduced by 1
- When a stream finishes successfully or with a benign error, another stream is initiated to take its place. If the temporary failure occurs, a new stream is not initiated which effectively reduces the concurrency (unless streams are not being executed concurrently in which case that continues)
- The number of streams being run per node are kept track of and when a new stream should start, a vbucket on the least busy node is selected (initially random node is selected)
- Added
key_value_scan_timeout
to timeout defaults (7.5 seconds) - Removed
batch_time_limit
from options, 90% of the timeout is used instead - Timeouts are now on both
range_scan_create
andrange_scan_continue
. There's also a check before retrying a stream if the time since the first attempt exceeds the timeout - The
next
methods of the scan result can return an error code in the case of a fatal error - Added
cancel()
method toscan_result
that can cancel all streams - Errors on range scan continue or start are now separated into 'fatal' (which takes into account whether the scan is a sampling scan), 'retryable' or 'benign'
- Added
-
CXXCBC-349: Allow to pass trust certificate by value. (#430) See
couchbase::cluster_options().security().trust_certificate_value()
chain of methods. -
CXXCBC-340: Support query with read from replica (#429)
- Added use_replica option for query in both core and public APIs as an optional boolean. If set, it is included in the query request body.
- Added
n1ql_read_from_replica
cluster capability which is checked when use_replica is set and a feature_not_available error code is returned if the capability is not present.
-
CXXCBC-339: Disable older TLS protocols. (#418) The change affects TLS v1.0 and v1.1 which are now disabled by default.
-
CXXCBC-343: Continue bootsrap if DNS-SRV resolution fails. (#422)
-
CXXCBC-337: Bucket management public API. (#421)
-
CXXCBC-335: Log connection options. (#417)
-
CXXCBC-346: Allow to log network communication. (#425) In order to use this feature, the application must create special logger. This process does not require any parameters except the file name, where the network communication will be recorded.
couchbase::core::logger::configuration configuration{}; configuration.filename = "/tmp/couchbase-sdk.log"; couchbase::core::logger::create_protocol_logger(configuration);
-
CXXCBC-333: Fix parsing 'resolv.conf' on Linux. (#416) The library might not ignore trailing characters when reading nameserver address from the file.
-
CXXCBC-329: Allow to select network using cluster options. (#413) See
couchbase::cluster_options().behavior().network()
chain of methods.
1.0.0-dp.6
API documentation: https://docs.couchbase.com/sdk-api/couchbase-cxx-client-1.0.0-dp.6
-
CXXCBC-328: Fix socket reconnection during rebalance process (#406). There are several improvements has been implemented to make the library resilient to rapid topology changes (in particular in Cloud environment) when both DNS-SRV bootstrap is being used along with alternative addresses. The changes include:
- take into account alternative hostname and ports during detection of added/removed nodes on configuration update
- replace node index tracking with hostname/port matching to when restarting the connections, this way we will be sure that no duplicate connections will be left, or live connections replaced by restarted session.
- improved logging of critial events during rebalance: restarting, preservation and removing connections.
-
CXXCBC-326: Set
warnings
field ofconnection_string
when invalid connection string parameter is encountered (#411). It could be used by the wrappers to hint users about the issues in the connection string. The library treats various checks for the values of the options, while parsing issues will be classified as errors.
Tools
-
Added
--verbose
switch tocbc-get
andcbc-pillowfight
that will report error contexts of every failed operation to standard error stream in JSON format. It might be useful to collect/diagnose errors of the long running workloads. -
Added batching switches
--batch-size
and--batch-wait
tocbc-pillowfight
.--batch-size
allows to change number of operations to be scheduled at once before waiting for completion.--batch-wait
allows to insert delays between batches in the workload thread. -
Added
--number-of-keys-to-populate
switch, which allows to preload set of keys before running the workload. The switch sets number of the keys per thread.