couchbase 4.4.5 → 4.4.6-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +64 -33
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  3. package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/CMakeLists.txt +14 -10
  4. package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/README.md +4 -4
  5. package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy.cc +7 -4
  6. package/deps/couchbase-cxx-client/CMakeLists.txt +1 -1
  7. package/deps/couchbase-cxx-client/README.md +2 -2
  8. package/deps/couchbase-cxx-client/cmake/ThirdPartyDependencies.cmake +2 -2
  9. package/deps/couchbase-cxx-client/cmake/couchbase_cxx_client.pc.in +1 -1
  10. package/deps/couchbase-cxx-client/core/bucket.cxx +16 -14
  11. package/deps/couchbase-cxx-client/core/bucket.hxx +2 -1
  12. package/deps/couchbase-cxx-client/core/cluster.cxx +9 -7
  13. package/deps/couchbase-cxx-client/core/cluster.hxx +2 -1
  14. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +4 -0
  15. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +55 -18
  16. package/deps/couchbase-cxx-client/core/impl/collection.cxx +12 -11
  17. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +7 -7
  18. package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +5 -5
  19. package/deps/couchbase-cxx-client/core/impl/replica_utils.hxx +2 -1
  20. package/deps/couchbase-cxx-client/core/logger/logger.cxx +1 -1
  21. package/deps/couchbase-cxx-client/core/meta/features.hxx +5 -0
  22. package/deps/couchbase-cxx-client/core/operations/document_append.cxx +1 -0
  23. package/deps/couchbase-cxx-client/core/operations/document_append.hxx +1 -0
  24. package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +3 -4
  25. package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +3 -3
  26. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +3 -3
  27. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +3 -3
  28. package/deps/couchbase-cxx-client/core/operations/document_prepend.cxx +1 -0
  29. package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +1 -0
  30. package/deps/couchbase-cxx-client/couchbase-sdk-cxx-black-duck-manifest.yaml +1 -1
  31. package/dist/binarycollection.d.ts +11 -1
  32. package/dist/binding.d.ts +4 -0
  33. package/dist/collection.js +4 -0
  34. package/dist/collectionmanager.d.ts +1 -1
  35. package/dist/collectionmanager.js +2 -2
  36. package/package.json +8 -8
  37. package/scripts/buildPrebuild.js +4 -3
  38. package/scripts/prebuilds.js +6 -0
  39. package/src/binding.cpp +2 -0
  40. package/src/connection.cpp +3 -3
  41. package/src/jstocbpp_autogen.hpp +8 -0
  42. package/tools/gen-bindings-json.py +0 -1
  43. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/CONTRIBUTING.md +0 -0
  44. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/COPYING +0 -0
  45. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/cmake/SnappyConfig.cmake.in +0 -0
  46. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/cmake/config.h.in +0 -0
  47. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-c.cc +0 -0
  48. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-c.h +0 -0
  49. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-internal.h +0 -0
  50. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-sinksource.cc +0 -0
  51. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-sinksource.h +0 -0
  52. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-stubs-internal.cc +0 -0
  53. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-stubs-internal.h +0 -0
  54. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy-stubs-public.h.in +0 -0
  55. /package/deps/couchbase-cxx-cache/snappy/{585305c8dbb8f762f2c2e17f937f1cf3ac6cbc9c → 3cde171792b3607f75c14e5011eaf69da4857bd8}/snappy/snappy.h +0 -0
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  ## Bundle of CA Root Certificates
3
3
  ##
4
- ## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT
4
+ ## Certificate data from Mozilla as of: Tue Feb 25 04:12:03 2025 GMT
5
5
  ##
6
6
  ## Find updated versions here: https://curl.se/docs/caextract.html
7
7
  ##
@@ -16,7 +16,7 @@
16
16
  ## Just configure this file as the SSLCACertificateFile.
17
17
  ##
18
18
  ## Conversion done with mk-ca-bundle.pl version 1.29.
19
- ## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116
19
+ ## SHA256: 620fd89c02acb0019f1899dab7907db5d20735904f5a9a0d3a8771a5857ac482
20
20
  ##
21
21
 
22
22
 
@@ -371,37 +371,6 @@ NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
371
371
  viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
372
372
  -----END CERTIFICATE-----
373
373
 
374
- SwissSign Silver CA - G2
375
- ========================
376
- -----BEGIN CERTIFICATE-----
377
- MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
378
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
392
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
401
- 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
- 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
403
- -----END CERTIFICATE-----
404
-
405
374
  SecureTrust CA
406
375
  ==============
407
376
  -----BEGIN CERTIFICATE-----
@@ -3609,3 +3578,65 @@ AgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT9DAKBggqhkjOPQQDAwNoADBlAjEA2S6J
3609
3578
  fl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJ
3610
3579
  SwdLZrWeqrqgHkHZAXQ6bkU6iYAZezKYVWOr62Nuk22rGwlgMU4=
3611
3580
  -----END CERTIFICATE-----
3581
+
3582
+ D-TRUST BR Root CA 2 2023
3583
+ =========================
3584
+ -----BEGIN CERTIFICATE-----
3585
+ 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
3610
+ n/mtd+ArY0+ew+43u3gJhJ65bvspmZDogNOfJA==
3611
+ -----END CERTIFICATE-----
3612
+
3613
+ D-TRUST EV Root CA 2 2023
3614
+ =========================
3615
+ -----BEGIN CERTIFICATE-----
3616
+ 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
3641
+ +KIkBI3Y4WNeApI02phhXBxvWHZks/wCuPWdCg==
3642
+ -----END CERTIFICATE-----
@@ -1 +1 @@
1
- a3f328c21e39ddd1f2be1cea43ac0dec819eaa20a90425d7da901a11531b3aa5 cacert.pem
1
+ 50a6277ec69113f00c5fd45f09e8b97a4b3e32daa35d3a95ab30137a55386cef cacert.pem
@@ -26,8 +26,8 @@
26
26
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
27
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
 
29
- cmake_minimum_required(VERSION 3.1)
30
- project(Snappy VERSION 1.2.1 LANGUAGES C CXX)
29
+ cmake_minimum_required(VERSION 3.10)
30
+ project(Snappy VERSION 1.2.2 LANGUAGES C CXX)
31
31
 
32
32
  # C++ standard can be overridden when this is used as a sub-project.
33
33
  if(NOT CMAKE_CXX_STANDARD)
@@ -38,7 +38,7 @@ if(NOT CMAKE_CXX_STANDARD)
38
38
  endif(NOT CMAKE_CXX_STANDARD)
39
39
 
40
40
  # https://github.com/izenecloud/cmake/blob/master/SetCompilerWarningAll.cmake
41
- if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
41
+ if(MSVC)
42
42
  # Use the highest warning level for Visual Studio.
43
43
  set(CMAKE_CXX_WARNING_LEVEL 4)
44
44
  if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
@@ -55,7 +55,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
55
55
  # Disable RTTI.
56
56
  string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
57
57
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-")
58
- else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
58
+ else(MSVC)
59
59
  # Use -Wall for clang and gcc.
60
60
  if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
61
61
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
@@ -85,7 +85,7 @@ else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
85
85
  # Disable RTTI.
86
86
  string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
87
87
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
88
- endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
88
+ endif(MSVC)
89
89
 
90
90
  # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make
91
91
  # it prominent in the GUI.
@@ -206,10 +206,13 @@ int main() {
206
206
 
207
207
  check_cxx_source_compiles("
208
208
  #include <arm_neon.h>
209
+ #include <stdint.h>
209
210
  int main() {
210
211
  uint8_t val = 3, dup[8];
211
- uint8x16_t v = vld1q_dup_u8(&val);
212
- vst1q_u8(dup, v);
212
+ uint8x16_t v1 = vld1q_dup_u8(&val);
213
+ uint8x16_t v2 = vqtbl1q_u8(v1, v1);
214
+ vst1q_u8(dup, v1);
215
+ vst1q_u8(dup, v2);
213
216
  return 0;
214
217
  }" SNAPPY_HAVE_NEON)
215
218
 
@@ -258,9 +261,7 @@ target_sources(snappy
258
261
  "snappy-stubs-internal.cc"
259
262
  "snappy.cc"
260
263
  "${PROJECT_BINARY_DIR}/config.h"
261
-
262
- # Only CMake 3.3+ supports PUBLIC sources in targets exported by "install".
263
- $<$<VERSION_GREATER:CMAKE_VERSION,3.2>:PUBLIC>
264
+ PUBLIC
264
265
  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy-c.h>
265
266
  $<INSTALL_INTERFACE:include/snappy-c.h>
266
267
  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy-sinksource.h>
@@ -297,6 +298,9 @@ if(SNAPPY_BUILD_TESTS OR SNAPPY_BUILD_BENCHMARKS)
297
298
 
298
299
  # Test files include snappy-test.h, HAVE_CONFIG_H must be defined.
299
300
  target_compile_definitions(snappy_test_support PUBLIC -DHAVE_CONFIG_H)
301
+ if(BUILD_SHARED_LIBS)
302
+ set_target_properties(snappy_test_support PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
303
+ endif(BUILD_SHARED_LIBS)
300
304
 
301
305
  target_link_libraries(snappy_test_support snappy)
302
306
 
@@ -140,10 +140,10 @@ explicitly supports the following:
140
140
  1. C++11
141
141
  2. Clang (gcc and MSVC are best-effort).
142
142
  3. Low level optimizations (e.g. assembly or equivalent intrinsics) for:
143
- 1. [x86](https://en.wikipedia.org/wiki/X86)
144
- 2. [x86-64](https://en.wikipedia.org/wiki/X86-64)
145
- 3. ARMv7 (32-bit)
146
- 4. ARMv8 (AArch64)
143
+ - [x86](https://en.wikipedia.org/wiki/X86)
144
+ - [x86-64](https://en.wikipedia.org/wiki/X86-64)
145
+ - ARMv7 (32-bit)
146
+ - ARMv8 (AArch64)
147
147
  4. Supports only the Snappy compression scheme as described in
148
148
  [format_description.txt](format_description.txt).
149
149
  5. CMake for building
@@ -74,6 +74,7 @@
74
74
  #include <cstdint>
75
75
  #include <cstdio>
76
76
  #include <cstring>
77
+ #include <functional>
77
78
  #include <memory>
78
79
  #include <string>
79
80
  #include <utility>
@@ -1498,7 +1499,7 @@ class SnappyDecompressor {
1498
1499
  // If ip < ip_limit_min_maxtaglen_ it's safe to read kMaxTagLength from
1499
1500
  // buffer.
1500
1501
  const char* ip_limit_min_maxtaglen_;
1501
- uint32_t peeked_; // Bytes peeked from reader (need to skip)
1502
+ uint64_t peeked_; // Bytes peeked from reader (need to skip)
1502
1503
  bool eof_; // Hit end of input without an error?
1503
1504
  char scratch_[kMaximumTagLength]; // See RefillTag().
1504
1505
 
@@ -1689,7 +1690,8 @@ constexpr uint32_t CalculateNeeded(uint8_t tag) {
1689
1690
  #if __cplusplus >= 201402L
1690
1691
  constexpr bool VerifyCalculateNeeded() {
1691
1692
  for (int i = 0; i < 1; i++) {
1692
- if (CalculateNeeded(i) != (char_table[i] >> 11) + 1) return false;
1693
+ if (CalculateNeeded(i) != static_cast<uint32_t>((char_table[i] >> 11)) + 1)
1694
+ return false;
1693
1695
  }
1694
1696
  return true;
1695
1697
  }
@@ -1725,7 +1727,7 @@ bool SnappyDecompressor::RefillTag() {
1725
1727
  assert(needed <= sizeof(scratch_));
1726
1728
 
1727
1729
  // Read more bytes from reader if needed
1728
- uint32_t nbuf = ip_limit_ - ip;
1730
+ uint64_t nbuf = ip_limit_ - ip;
1729
1731
  if (nbuf < needed) {
1730
1732
  // Stitch together bytes from ip and reader to form the word
1731
1733
  // contents. We store the needed bytes in "scratch_". They
@@ -1738,7 +1740,7 @@ bool SnappyDecompressor::RefillTag() {
1738
1740
  size_t length;
1739
1741
  const char* src = reader_->Peek(&length);
1740
1742
  if (length == 0) return false;
1741
- uint32_t to_add = std::min<uint32_t>(needed - nbuf, length);
1743
+ uint64_t to_add = std::min<uint64_t>(needed - nbuf, length);
1742
1744
  std::memcpy(scratch_ + nbuf, src, to_add);
1743
1745
  nbuf += to_add;
1744
1746
  reader_->Skip(to_add);
@@ -1801,6 +1803,7 @@ size_t Compress(Source* reader, Sink* writer, CompressionOptions options) {
1801
1803
  int token = 0;
1802
1804
  size_t written = 0;
1803
1805
  size_t N = reader->Available();
1806
+ assert(N <= 0xFFFFFFFFu);
1804
1807
  const size_t uncompressed_size = N;
1805
1808
  char ulength[Varint::kMax32];
1806
1809
  char* p = Varint::Encode32(ulength, N);
@@ -21,7 +21,7 @@ endif()
21
21
 
22
22
  project(
23
23
  couchbase_cxx_client
24
- VERSION "1.0.5"
24
+ VERSION "1.0.6"
25
25
  LANGUAGES CXX C)
26
26
  message(STATUS "Couchbase C++ client ${couchbase_cxx_client_VERSION} build ${couchbase_cxx_client_BUILD_NUMBER}, master: ${COUCHBASE_CXX_CLIENT_MASTER_PROJECT}")
27
27
  message(STATUS "System: ${CMAKE_SYSTEM_NAME}, ${CMAKE_SYSTEM_VERSION}, ${CMAKE_SYSTEM_PROCESSOR}")
@@ -21,9 +21,9 @@ CPMAddPackage(
21
21
  NAME
22
22
  couchbase_cxx_client
23
23
  GIT_TAG
24
- 1.0.5
24
+ 1.0.6
25
25
  VERSION
26
- 1.0.5
26
+ 1.0.6
27
27
  GITHUB_REPOSITORY
28
28
  "couchbase/couchbase-cxx-client"
29
29
  OPTIONS
@@ -104,9 +104,9 @@ if(NOT TARGET snappy)
104
104
  NAME
105
105
  snappy
106
106
  GIT_TAG
107
- 1.2.1
107
+ 1.2.2
108
108
  VERSION
109
- 1.2.1
109
+ 1.2.2
110
110
  GITHUB_REPOSITORY
111
111
  "google/snappy"
112
112
  EXCLUDE_FROM_ALL ON
@@ -1,7 +1,7 @@
1
1
  prefix=@CMAKE_INSTALL_PREFIX@
2
2
  exec_prefix=@CMAKE_INSTALL_PREFIX@
3
3
  includedir=@CMAKE_INSTALL_PREFIX@/include
4
- libdir=@CMAKE_INSTALL_LIBDIR@
4
+ libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
5
5
 
6
6
  Name: couchbase-cxx-client @COUCHBASE_CXX_CLIENT_PKGCONFIG_VERSION@
7
7
  Description: Couchbase C++ SDK
@@ -356,7 +356,7 @@ public:
356
356
  void restart_sessions()
357
357
  {
358
358
  const std::scoped_lock lock(config_mutex_, sessions_mutex_);
359
- if (!config_.has_value()) {
359
+ if (!config_) {
360
360
  return;
361
361
  }
362
362
 
@@ -512,37 +512,38 @@ public:
512
512
  }
513
513
 
514
514
  void with_configuration(
515
- utils::movable_function<void(std::error_code, topology::configuration)>&& handler)
515
+ utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
516
+ handler)
516
517
  {
517
518
  if (closed_) {
518
- return handler(errc::network::configuration_not_available, topology::configuration{});
519
+ return handler(errc::network::configuration_not_available, nullptr);
519
520
  }
520
521
  if (configured_) {
521
- std::optional<topology::configuration> config{};
522
+ std::shared_ptr<topology::configuration> config{};
522
523
  {
523
524
  const std::scoped_lock config_lock(config_mutex_);
524
525
  config = config_;
525
526
  }
526
527
  if (config) {
527
- return handler({}, config.value());
528
+ return handler({}, config);
528
529
  }
529
- return handler(errc::network::configuration_not_available, topology::configuration{});
530
+ return handler(errc::network::configuration_not_available, nullptr);
530
531
  }
531
532
  const std::scoped_lock lock(deferred_commands_mutex_);
532
533
  deferred_commands_.emplace([self = shared_from_this(), handler = std::move(handler)]() mutable {
533
534
  if (self->closed_ || !self->configured_) {
534
- return handler(errc::network::configuration_not_available, topology::configuration{});
535
+ return handler(errc::network::configuration_not_available, nullptr);
535
536
  }
536
537
 
537
- std::optional<topology::configuration> config{};
538
+ std::shared_ptr<topology::configuration> config{};
538
539
  {
539
540
  const std::scoped_lock config_lock(self->config_mutex_);
540
541
  config = self->config_;
541
542
  }
542
543
  if (config) {
543
- return handler({}, config.value());
544
+ return handler({}, std::move(config));
544
545
  }
545
- return handler(errc::network::configuration_not_available, topology::configuration{});
546
+ return handler(errc::network::configuration_not_available, nullptr);
546
547
  });
547
548
  }
548
549
 
@@ -715,7 +716,7 @@ public:
715
716
  config_->rev_str(),
716
717
  config.rev_str());
717
718
  return;
718
- } else if (config_ < config) {
719
+ } else if (*config_ < config) {
719
720
  CB_LOG_DEBUG("{} will update the configuration old={} -> new={}",
720
721
  log_prefix_,
721
722
  config_->rev_str(),
@@ -742,7 +743,7 @@ public:
742
743
  added = config.nodes;
743
744
  }
744
745
  config_.reset();
745
- config_ = config;
746
+ config_ = std::make_shared<topology::configuration>(config);
746
747
  configured_ = true;
747
748
 
748
749
  {
@@ -964,7 +965,7 @@ private:
964
965
  std::atomic_bool closed_{ false };
965
966
  std::atomic_bool configured_{ false };
966
967
 
967
- std::optional<topology::configuration> config_{};
968
+ std::shared_ptr<topology::configuration> config_{};
968
969
  mutable std::mutex config_mutex_{};
969
970
 
970
971
  std::vector<std::shared_ptr<config_listener>> config_listeners_{};
@@ -1081,7 +1082,8 @@ bucket::bootstrap(utils::movable_function<void(std::error_code, topology::config
1081
1082
 
1082
1083
  void
1083
1084
  bucket::with_configuration(
1084
- utils::movable_function<void(std::error_code, topology::configuration)>&& handler)
1085
+ utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
1086
+ handler)
1085
1087
  {
1086
1088
  return impl_->with_configuration(std::move(handler));
1087
1089
  }
@@ -189,7 +189,8 @@ public:
189
189
  void update_config(topology::configuration config) override;
190
190
  void bootstrap(utils::movable_function<void(std::error_code, topology::configuration)>&& handler);
191
191
  void with_configuration(
192
- utils::movable_function<void(std::error_code, topology::configuration)>&& handler);
192
+ utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
193
+ handler);
193
194
 
194
195
  void on_configuration_update(std::shared_ptr<config_listener> handler);
195
196
  void close();
@@ -578,12 +578,12 @@ public:
578
578
  return self->with_bucket_configuration(
579
579
  bucket_name,
580
580
  [self, cap, request = std::move(request), handler = std::forward<Handler>(handler)](
581
- std::error_code ec, const topology::configuration& config) mutable {
581
+ std::error_code ec, const std::shared_ptr<topology::configuration>& config) mutable {
582
582
  if (ec) {
583
583
  handler(request.make_response({ ec }, {}));
584
584
  return;
585
585
  }
586
- if (!config.capabilities.has_bucket_capability(cap)) {
586
+ if (!config->capabilities.has_bucket_capability(cap)) {
587
587
  handler(request.make_response({ errc::common::feature_not_available }, {}));
588
588
  return;
589
589
  }
@@ -980,10 +980,11 @@ public:
980
980
 
981
981
  void with_bucket_configuration(
982
982
  const std::string& bucket_name,
983
- utils::movable_function<void(std::error_code, topology::configuration)>&& handler)
983
+ utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
984
+ handler)
984
985
  {
985
986
  if (stopped_) {
986
- return handler(errc::network::cluster_closed, {});
987
+ return handler(errc::network::cluster_closed, nullptr);
987
988
  }
988
989
  if (auto bucket = find_bucket_by_name(bucket_name); bucket != nullptr) {
989
990
  return bucket->with_configuration(std::move(handler));
@@ -992,13 +993,13 @@ public:
992
993
  bucket_name,
993
994
  [self = shared_from_this(), bucket_name, handler = std::move(handler)](auto ec) mutable {
994
995
  if (ec) {
995
- return handler(ec, {});
996
+ return handler(ec, nullptr);
996
997
  }
997
998
 
998
999
  if (auto bucket = self->find_bucket_by_name(bucket_name); bucket != nullptr) {
999
1000
  return bucket->with_configuration(std::move(handler));
1000
1001
  }
1001
- return handler(errc::common::bucket_not_found, {});
1002
+ return handler(errc::common::bucket_not_found, nullptr);
1002
1003
  });
1003
1004
  }
1004
1005
 
@@ -1326,7 +1327,8 @@ cluster::ping(std::optional<std::string> report_id,
1326
1327
  void
1327
1328
  cluster::with_bucket_configuration(
1328
1329
  const std::string& bucket_name,
1329
- utils::movable_function<void(std::error_code, topology::configuration)>&& handler) const
1330
+ utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
1331
+ handler) const
1330
1332
  {
1331
1333
  if (impl_) {
1332
1334
  impl_->with_bucket_configuration(bucket_name, std::move(handler));
@@ -77,7 +77,8 @@ public:
77
77
 
78
78
  void with_bucket_configuration(
79
79
  const std::string& bucket_name,
80
- utils::movable_function<void(std::error_code, topology::configuration)>&& handler) const;
80
+ utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
81
+ handler) const;
81
82
 
82
83
  void execute(o::analytics_request request, mf<void(o::analytics_response)>&& handler) const;
83
84
  void execute(o::append_request request, mf<void(o::append_response)>&& handler) const;
@@ -96,6 +96,7 @@ public:
96
96
  std::move(data),
97
97
  {},
98
98
  {},
99
+ options.cas,
99
100
  options.durability_level,
100
101
  options.timeout,
101
102
  { options.retry_strategy },
@@ -114,6 +115,7 @@ public:
114
115
  std::move(data),
115
116
  {},
116
117
  {},
118
+ options.cas,
117
119
  durability_level::none,
118
120
  options.timeout,
119
121
  { options.retry_strategy },
@@ -165,6 +167,7 @@ public:
165
167
  std::move(data),
166
168
  {},
167
169
  {},
170
+ options.cas,
168
171
  options.durability_level,
169
172
  options.timeout,
170
173
  { options.retry_strategy },
@@ -183,6 +186,7 @@ public:
183
186
  std::move(data),
184
187
  {},
185
188
  {},
189
+ options.cas,
186
190
  durability_level::none,
187
191
  options.timeout,
188
192
  { options.retry_strategy },
@@ -79,8 +79,8 @@ cluster::cluster(std::shared_ptr<cluster_impl> impl)
79
79
  namespace
80
80
  {
81
81
  auto
82
- options_to_origin(const std::string& connection_string,
83
- const couchbase::cluster_options& options) -> core::origin
82
+ options_to_origin(const std::string& connection_string, const couchbase::cluster_options& options)
83
+ -> core::origin
84
84
  {
85
85
  auto opts = options.build();
86
86
 
@@ -215,12 +215,27 @@ fork_event_to_asio(fork_event event) -> asio::execution_context::fork_event
215
215
  class cluster_impl : public std::enable_shared_from_this<cluster_impl>
216
216
  {
217
217
  public:
218
- cluster_impl() = default;
218
+ cluster_impl(std::string connection_string, cluster_options options)
219
+ : connection_string_{ std::move(connection_string) }
220
+ , options_{ std::move(options) }
221
+ {
222
+ }
223
+
219
224
  cluster_impl(const cluster_impl&) = delete;
220
225
  cluster_impl(cluster_impl&&) = delete;
221
226
  auto operator=(const cluster_impl&) = delete;
222
227
  auto operator=(cluster_impl&&) = delete;
223
228
 
229
+ [[nodiscard]] auto connection_string() const -> const std::string&
230
+ {
231
+ return connection_string_;
232
+ }
233
+
234
+ [[nodiscard]] auto options() const -> const cluster_options&
235
+ {
236
+ return options_;
237
+ }
238
+
224
239
  ~cluster_impl()
225
240
  {
226
241
  std::promise<void> barrier;
@@ -238,12 +253,10 @@ public:
238
253
  future.get();
239
254
  }
240
255
 
241
- void open(const std::string& connection_string,
242
- const cluster_options& options,
243
- cluster_connect_handler&& handler)
256
+ void open(cluster_connect_handler&& handler)
244
257
  {
245
258
  core_.open(
246
- options_to_origin(connection_string, options),
259
+ options_to_origin(connection_string_, options_),
247
260
  [impl = shared_from_this(), handler = std::move(handler)](std::error_code ec) mutable {
248
261
  if (ec) {
249
262
  return handler(ec, {});
@@ -350,7 +363,7 @@ public:
350
363
  }
351
364
  io_.notify_fork(fork_event_to_asio(event));
352
365
 
353
- if (transactions_) {
366
+ if (event != fork_event::child && transactions_) {
354
367
  transactions_->notify_fork(event);
355
368
  }
356
369
  }
@@ -393,6 +406,8 @@ private:
393
406
  }
394
407
  }
395
408
 
409
+ std::string connection_string_;
410
+ cluster_options options_;
396
411
  asio::io_context io_{ ASIO_CONCURRENCY_HINT_SAFE };
397
412
  core::cluster core_{ io_ };
398
413
  std::shared_ptr<core::transactions::transactions> transactions_{ nullptr };
@@ -423,8 +438,8 @@ cluster::query(std::string statement, const query_options& options, query_handle
423
438
  }
424
439
 
425
440
  auto
426
- cluster::query(std::string statement,
427
- const query_options& options) const -> std::future<std::pair<error, query_result>>
441
+ cluster::query(std::string statement, const query_options& options) const
442
+ -> std::future<std::pair<error, query_result>>
428
443
  {
429
444
  auto barrier = std::make_shared<std::promise<std::pair<error, query_result>>>();
430
445
  auto future = barrier->get_future();
@@ -500,9 +515,8 @@ cluster::search(std::string index_name,
500
515
  }
501
516
 
502
517
  auto
503
- cluster::search(std::string index_name,
504
- search_request request,
505
- const search_options& options) const -> std::future<std::pair<error, search_result>>
518
+ cluster::search(std::string index_name, search_request request, const search_options& options) const
519
+ -> std::future<std::pair<error, search_result>>
506
520
  {
507
521
  auto barrier = std::make_shared<std::promise<std::pair<error, search_result>>>();
508
522
  search(
@@ -513,8 +527,8 @@ cluster::search(std::string index_name,
513
527
  }
514
528
 
515
529
  auto
516
- cluster::connect(const std::string& connection_string,
517
- const cluster_options& options) -> std::future<std::pair<error, cluster>>
530
+ cluster::connect(const std::string& connection_string, const cluster_options& options)
531
+ -> std::future<std::pair<error, cluster>>
518
532
  {
519
533
  auto barrier = std::make_shared<std::promise<std::pair<error, cluster>>>();
520
534
  auto future = barrier->get_future();
@@ -535,8 +549,8 @@ cluster::connect(const std::string& connection_string,
535
549
  auto barrier = std::make_shared<std::promise<std::pair<error, cluster>>>();
536
550
  auto future = barrier->get_future();
537
551
  {
538
- auto impl = std::make_shared<cluster_impl>();
539
- impl->open(connection_string, options, [barrier](auto err, auto c) {
552
+ auto impl = std::make_shared<cluster_impl>(connection_string, options);
553
+ impl->open([barrier](auto err, auto c) {
540
554
  barrier->set_value({ std::move(err), std::move(c) });
541
555
  });
542
556
  }
@@ -552,7 +566,30 @@ cluster::notify_fork(fork_event event) -> void
552
566
  if (!impl_) {
553
567
  return;
554
568
  }
555
- return impl_->notify_fork(event);
569
+ impl_->notify_fork(event);
570
+ if (event != fork_event::child) {
571
+ return;
572
+ }
573
+
574
+ auto new_impl = std::make_shared<cluster_impl>(impl_->connection_string(), impl_->options());
575
+ impl_.reset();
576
+
577
+ {
578
+ auto barrier = std::make_shared<std::promise<void>>();
579
+ auto future = barrier->get_future();
580
+
581
+ new_impl->open([this, barrier, new_impl](const auto& err, const auto& /* c */) {
582
+ if (err.ec()) {
583
+ // TODO(SA): we should fall to background reconnect loop similar to Columnar build
584
+ CB_LOG_ERROR("Unable to reconnect instance after fork: {}", err.ec().message());
585
+ return;
586
+ }
587
+ impl_ = new_impl;
588
+ barrier->set_value();
589
+ });
590
+
591
+ future.get();
592
+ }
556
593
  }
557
594
 
558
595
  void