3.4.0
Rubygems: https://rubygems.org/gems/couchbase/versions/3.4.0
API docs: https://docs.couchbase.com/sdk-api/couchbase-ruby-client-3.4.0
gem install couchbase -v 3.4.0
# rubygems.org version (does not have precompiled binaries)
gem "couchbase", "3.4.0"
# use official repository, supported Ruby ABIs: 3.0.0, 3.1.0, 3.2.0
gem "couchbase", "3.4.0", :source => "https://packages.couchbase.com/clients/ruby/3.1.0/"
## precompiled binaries (uncomment line with effective ABI version of ruby)
# gem "couchbase", "3.4.0", :platforms => :mri_32, :source => "https://packages.couchbase.com/clients/ruby/3.2.0/"
# gem "couchbase", "3.4.0", :platforms => :mri_31, :source => "https://packages.couchbase.com/clients/ruby/3.1.0/"
# gem "couchbase", "3.4.0", :platforms => :mri_30, :source => "https://packages.couchbase.com/clients/ruby/3.0.0/"
Improvements
- RCBC-378: Implement change password for
Management::User
class. (#65) - RCBC-388: Add Configuration Profiles. At the moment one profile is defined
"wan_development"
, and it could be applied usingOptions::Cluster#apply_profile
. (#55) - RCBC-263: Implement legacy durability. See options
:persist_to
and:replicate_to
of mutations. (#49) - RCBC-387: Implement replica reads with
Collection#get_any_replica
andCouchbase#get_all_replicas
(#48) - RCBC-375: Implement log forwarding. See documentation of method
Couchbase.set_logger
and classesCouchbase::Utils::GenericLoggerAdapter
,Couchbase::Utils::GenericLoggerAdapter
(#45) - RCBC-371: Return id for
*_multi
results. (#40) - RCBC-393: Fix type conversion for query metrics. (#62)
- RCBC-398: Add
ClusterRegistry
to allow custom connection string handlers. (#68) - RCBC-366: Allow to override default timeouts through
Options::Cluster
(#37) - RCBC-399: Add default options objects as class constants. (#69)
Underlying C++ SDK Core
Notable Changes in C++ SDK 1.0.0-beta.5
- CXXCBC-275: Update implementation query context fields passed to the server. In future versions of the server versions it will become mandatory to specify context of the statement (bucket, scope and collection).
This change ensures that both future and current server releases supported transparently. - CXXCBC-296: Force PLAIN SASL auth if TLS enabled. Using SCRAM SASL mechanisms over TLS protocol is unnecesary complication, that slows down initial connection bootstrap and potentially limits server ability to improve security and evolve credentials management.
- CXXCBC-295: The
get with projections
opration should not fail if one of the the paths is missing in the document, because the semantics is "get the partial document" and not "get individual fields" like inlookup_in
operation. - CXXCBC-294: In the Public API, if
get
operation requested to return expiry time, zero expiry should not be interpreted as absolute expiry timestamp (zero seconds from UNIX epoch), but rather as absense of the expiry. - CXXCBC-291: Allow to disable mutation tokens for Key/Value mutations (use
enable_mutation_tokens
in connection string).
Resource management and performance improvements
- Fix tracer and meter ref-counting (couchbaselabs/couchbase-cxx-client#370)
- Replace
minstd_rand
withmt19937_64
, as it gives less collisions (couchbaselabs/couchbase-cxx-client#356) - CXXCBC-285: Write to sockets from IO threads, to eliminate potential race conditions. (couchbaselabs/couchbase-cxx-client#348)
- Eliminate looping transform in
mcbp_parser::next
(couchbaselabs/couchbase-cxx-client#347) - CXXCBC-205: Use thread-local UUID generator (couchbaselabs/couchbase-cxx-client#340)
- CXXCBC-293: Performance improvements:
- Speed up UUID serialization to string (couchbaselabs/couchbase-cxx-client#346)
- Don't allow to copy
mcbp_message
objects (couchbaselabs/couchbase-cxx-client#345) - Avoid extra allocation and initialization (couchbaselabs/couchbase-cxx-client#344)
Build system fixes
- Fix build with gcc-13 (couchbaselabs/couchbase-cxx-client#372)
- Fix gcc 12 issue (couchbaselabs/couchbase-cxx-client#367)
Enhancements
- Include bucketless KV service when ping is requested. (couchbaselabs/couchbase-cxx-client#339)
- Include OS name in SDK identifier (couchbaselabs/couchbase-cxx-client#349)
Notable changes in C++ SDK 1.0.0-beta.4
- CXXCBC-276: Use interval from the options for config poll, which previous was hard-coded to 2.5 seconds. (couchbaselabs/couchbase-cxx-client#336)
Notable changes in C++ SDK 1.0.0-dp.2
- CXXCBC-242: Drain waiting commands list on MCBP session close (couchbaselabs/couchbase-cxx-client#321)
- CXXCBC-271: Fix
get_all_replicas
behaviour: do not propagate error if result set is not empty, while the last response has failed. (couchbaselabs/couchbase-cxx-client#322)
Notable changes in C++ SDK 1.0.0-dp.1
- CXXCBC-142: Update SRV resolution for Windows (couchbaselabs/couchbase-cxx-client#303)
- CXXCBC-172: Refresh DNS SRV when cluster uncontactable (couchbaselabs/couchbase-cxx-client#275, couchbaselabs/couchbase-cxx-client#290)
- CXXCBC-234: Error message for bucket hibernation and update error message for authentication_failure. (couchbaselabs/couchbase-cxx-client#280, couchbaselabs/couchbase-cxx-client#285)
- CXXCBC-235: Load system CAs when the trust certificate is not provided and do not fail if trust certificate is not specified (couchbaselabs/couchbase-cxx-client#283, couchbaselabs/couchbase-cxx-client#281)
- CXXCBC-245: Fix encoding of durability frame (couchbaselabs/couchbase-cxx-client#277)
- CXXCBC-246: Convert
not_stored
code todocument_exists
(couchbaselabs/couchbase-cxx-client#278) - CXXCBC-251: Fix snappy decompression for
get_replica
(couchbaselabs/couchbase-cxx-client#296) - CXXCBC-253:
query_options
not settingscope_qualifier
(couchbaselabs/couchbase-cxx-client#300) - SDKQE-2761: Fix failures in serverless mode (couchbaselabs/couchbase-cxx-client#274)
- Don't log expected warnings in DNS resolver (couchbaselabs/couchbase-cxx-client#294)
Resource management and performance fixes
- CXXCBC-225: Don't throw exceptions when socket options cannot be set (couchbaselabs/couchbase-cxx-client#270)
Build system fixes
- Move away from
reinterpret_pointer_cast<>
for MacOS build issue (couchbaselabs/couchbase-cxx-client#288) - Improve OpenSSL detection on Windows (couchbaselabs/couchbase-cxx-client#272)
Notable changes in C++ SDK 1.0.0-beta.3
- CXXCBC-221: Support for configuration profiles (couchbaselabs/couchbase-cxx-client#268)
- CXXCBC-218: allow to check if subdoc result field has value (couchbaselabs/couchbase-cxx-client#263)
- CXXCBC-199: Always set
kv_collection_outdated
retry reason on unknown collection error (couchbaselabs/couchbase-cxx-client#223) - CXXCBC-203: disable clustermap nofication by default (couchbaselabs/couchbase-cxx-client#233)
- CXXCBC-159: Increment/decrement should not have
preserve_expiry
(couchbaselabs/couchbase-cxx-client#201) - CXXCBC-55: External Tracing and Metrics support with OpenTelemetry support (couchbaselabs/couchbase-cxx-client#228, couchbaselabs/couchbase-cxx-client#231)
- CXXCBC-54: Add log forwarding (couchbaselabs/couchbase-cxx-client#206)
Bug fixes
- CXXCBC-134: Close http_session before conecting to next endpoint (couchbaselabs/couchbase-cxx-client#213)
- CXXCBC-179: fix parsing responses with chunked meta trailer (couchbaselabs/couchbase-cxx-client#191)
- CXXCBC-170: add extra check for missing CA for TLS connections (couchbaselabs/couchbase-cxx-client#197)
- CXXCBC-182: add extra check for keywords in query index fields (couchbaselabs/couchbase-cxx-client#196)
- CXXCBC-173: complete streaming lexer even if pointer didn't match (couchbaselabs/couchbase-cxx-client#195)
- CXXCBC-212: reprepare and retry query on 4040, 4050 and 4070 (couchbaselabs/couchbase-cxx-client#257)
- CXXCBC-174: reduce scope of the http request lock (couchbaselabs/couchbase-cxx-client#259)
- CXXCBC-176: ignore 'is_primary' for named primary indexes when dropping (couchbaselabs/couchbase-cxx-client#202)
- Return subdocument error context from future-based subdoc methods (couchbaselabs/couchbase-cxx-client#258)