couchbase 4.2.11 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +49 -2
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  3. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +51 -5
  4. package/deps/couchbase-cxx-client/core/impl/collection.cxx +224 -209
  5. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +2 -2
  6. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +1 -0
  7. package/deps/couchbase-cxx-client/core/io/dns_client.cxx +4 -0
  8. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +15 -4
  9. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +1 -1
  10. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +84 -53
  11. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx +1 -0
  12. package/deps/couchbase-cxx-client/core/meta/features.hxx +5 -0
  13. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +116 -105
  14. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +116 -108
  15. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +97 -81
  16. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +5 -0
  17. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +2 -1
  18. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +16 -7
  19. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +578 -483
  20. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.cxx +51 -50
  21. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.hxx +4 -2
  22. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.cxx +6 -6
  23. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.hxx +3 -2
  24. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +2 -0
  25. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +5 -1
  26. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +222 -179
  27. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +23 -12
  28. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +61 -24
  29. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +36 -16
  30. package/deps/couchbase-cxx-client/core/transactions/utils.cxx +9 -0
  31. package/deps/couchbase-cxx-client/core/transactions.hxx +40 -7
  32. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +19 -0
  33. package/deps/couchbase-cxx-client/couchbase/fork_event.hxx +39 -0
  34. package/dist/binding.d.ts +8 -0
  35. package/dist/bindingutilities.d.ts +6 -1
  36. package/dist/bindingutilities.js +15 -1
  37. package/dist/bucketmanager.d.ts +0 -12
  38. package/dist/cluster.d.ts +0 -2
  39. package/dist/cluster.js +0 -2
  40. package/dist/collection.d.ts +3 -3
  41. package/dist/collection.js +3 -1
  42. package/dist/querytypes.d.ts +0 -2
  43. package/dist/rangeScan.d.ts +0 -8
  44. package/dist/rangeScan.js +0 -8
  45. package/dist/scope.d.ts +0 -5
  46. package/dist/scope.js +0 -5
  47. package/dist/scopesearchindexmanager.d.ts +0 -2
  48. package/dist/scopesearchindexmanager.js +0 -2
  49. package/dist/searchexecutor.js +3 -1
  50. package/dist/searchtypes.d.ts +16 -6
  51. package/dist/searchtypes.js +2 -6
  52. package/dist/transactions.d.ts +23 -0
  53. package/dist/transactions.js +16 -10
  54. package/dist/vectorsearch.d.ts +8 -8
  55. package/dist/vectorsearch.js +7 -7
  56. package/package.json +7 -7
  57. package/src/instance.cpp +11 -1
  58. package/src/instance.hpp +1 -0
  59. package/src/jstocbpp_autogen.hpp +8 -0
  60. package/src/jstocbpp_transactions.hpp +40 -3
  61. package/src/transactions.cpp +12 -1
  62. package/tools/gen-bindings-json.py +0 -1
@@ -26,6 +26,8 @@
26
26
  #include "internal/transactions_cleanup.hxx"
27
27
  #include "internal/utils.hxx"
28
28
 
29
+ #include <system_error>
30
+
29
31
  namespace couchbase::core::transactions
30
32
  {
31
33
  transactions::transactions(core::cluster cluster, const couchbase::transactions::transactions_config& config)
@@ -38,35 +40,60 @@ transactions::transactions(core::cluster cluster, const couchbase::transactions:
38
40
  , config_(config)
39
41
  , cleanup_(new transactions_cleanup(cluster_, config_))
40
42
  {
41
- CB_TXN_LOG_DEBUG(
42
- "couchbase transactions {} ({}) creating new transaction object", couchbase::core::meta::sdk_id(), couchbase::core::meta::os());
43
- // if the config specifies custom metadata collection, lets be sure to open that bucket
44
- // on the cluster before we start. NOTE: we actually do call get_and_open_buckets which opens all the buckets
45
- // on the cluster (that we have permissions to open) in the cleanup. However, that is happening asynchronously
46
- // so there's a chance we will fail to have opened the custom metadata collection bucket before trying to make a
47
- // transaction. We have to open this one _now_.
48
- if (config_.metadata_collection) {
49
- auto barrier = std::make_shared<std::promise<std::error_code>>();
50
- auto f = barrier->get_future();
51
- std::atomic<bool> callback_called{ false };
52
- cluster_.open_bucket(config_.metadata_collection->bucket, [&callback_called, barrier](std::error_code ec) {
53
- if (callback_called.load()) {
54
- return;
43
+ }
44
+
45
+ transactions::~transactions() = default;
46
+
47
+ void
48
+ transactions::create(core::cluster cluster,
49
+ const couchbase::transactions::transactions_config::built& config,
50
+ utils::movable_function<void(std::error_code, std::shared_ptr<transactions>)>&& cb)
51
+ {
52
+ if (config.metadata_collection) {
53
+ // if the config specifies custom metadata collection, lets be sure to open that bucket
54
+ // on the cluster before we start. NOTE: we actually do call get_and_open_buckets which opens all the buckets
55
+ // on the cluster (that we have permissions to open) in the cleanup. However, that is happening asynchronously
56
+ // so there's a chance we will fail to have opened the custom metadata collection bucket before trying to make a
57
+ // transaction. We have to open this one _now_.
58
+
59
+ auto bucket_name = config.metadata_collection->bucket;
60
+ return cluster.open_bucket(bucket_name, [cluster, config, bucket_name, cb = std::move(cb)](std::error_code ec) mutable {
61
+ if (ec) {
62
+ CB_TXN_LOG_ERROR("error opening metadata_collection bucket '{}' specified in the config!", bucket_name);
63
+ return cb(ec, {});
55
64
  }
56
- callback_called = true;
57
- barrier->set_value(ec);
65
+
66
+ CB_TXN_LOG_DEBUG("couchbase transactions {} ({}) creating new transaction object",
67
+ couchbase::core::meta::sdk_id(),
68
+ couchbase::core::meta::os());
69
+ return cb({}, std::make_shared<transactions>(std::move(cluster), config));
58
70
  });
59
- auto err = f.get();
60
- if (err) {
61
- auto err_msg =
62
- fmt::format("error opening metadata_collection bucket '{}' specified in the config!", config_.metadata_collection->bucket);
63
- CB_TXN_LOG_DEBUG("{}", err_msg);
64
- throw std::runtime_error(err_msg);
65
- }
66
71
  }
72
+
73
+ return cb({}, std::make_shared<transactions>(std::move(cluster), config));
67
74
  }
68
75
 
69
- transactions::~transactions() = default;
76
+ void
77
+ transactions::create(core::cluster cluster,
78
+ const couchbase::transactions::transactions_config& config,
79
+ utils::movable_function<void(std::error_code, std::shared_ptr<transactions>)>&& cb)
80
+ {
81
+ return create(std::move(cluster), config.build(), std::move(cb));
82
+ }
83
+
84
+ std::future<std::pair<std::error_code, std::shared_ptr<transactions>>>
85
+ transactions::create(core::cluster cluster, const couchbase::transactions::transactions_config::built& config)
86
+ {
87
+ auto barrier = std::make_shared<std::promise<std::pair<std::error_code, std::shared_ptr<transactions>>>>();
88
+ create(std::move(cluster), config, [barrier](auto ec, auto txns) mutable { barrier->set_value({ ec, txns }); });
89
+ return barrier->get_future();
90
+ }
91
+
92
+ std::future<std::pair<std::error_code, std::shared_ptr<transactions>>>
93
+ transactions::create(core::cluster cluster, const couchbase::transactions::transactions_config& config)
94
+ {
95
+ return create(std::move(cluster), config.build());
96
+ }
70
97
 
71
98
  template<typename Handler>
72
99
  ::couchbase::transactions::transaction_result
@@ -175,6 +202,16 @@ transactions::run(async_logic&& code, txn_complete_callback&& cb)
175
202
  return run(config, std::move(code), std::move(cb));
176
203
  }
177
204
 
205
+ void
206
+ transactions::notify_fork(fork_event event)
207
+ {
208
+ if (event == fork_event::prepare) {
209
+ cleanup_->stop();
210
+ } else {
211
+ cleanup_->start();
212
+ }
213
+ }
214
+
178
215
  void
179
216
  transactions::close()
180
217
  {
@@ -45,18 +45,8 @@ transactions_cleanup::transactions_cleanup(core::cluster cluster, const couchbas
45
45
  : cluster_(std::move(cluster))
46
46
  , config_(config)
47
47
  , client_uuid_(uid_generator::next())
48
- , running_(config.cleanup_config.cleanup_client_attempts || config.cleanup_config.cleanup_lost_attempts)
49
48
  {
50
- if (config.cleanup_config.cleanup_client_attempts) {
51
- cleanup_thr_ = std::thread(std::bind(&transactions_cleanup::attempts_loop, this));
52
- }
53
- if (config_.metadata_collection) {
54
- add_collection(
55
- { config_.metadata_collection->bucket, config_.metadata_collection->scope, config_.metadata_collection->collection });
56
- }
57
- for (auto& k : config_.cleanup_config.collections) {
58
- add_collection(k);
59
- }
49
+ start();
60
50
  }
61
51
 
62
52
  static std::uint64_t
@@ -249,7 +239,9 @@ transactions_cleanup::create_client_record(const couchbase::transactions::transa
249
239
  wrap_durable_request(req, config_);
250
240
  auto barrier = std::make_shared<std::promise<result>>();
251
241
  auto f = barrier->get_future();
252
- auto ec = config_.cleanup_hooks->client_record_before_create(keyspace.bucket);
242
+ auto ec = wait_for_hook([this, bucket = keyspace.bucket](auto handler) mutable {
243
+ return config_.cleanup_hooks->client_record_before_create(bucket, std::move(handler));
244
+ });
253
245
  if (ec) {
254
246
  throw client_error(*ec, "client_record_before_create hook raised error");
255
247
  }
@@ -285,7 +277,9 @@ transactions_cleanup::get_active_clients(const couchbase::transactions::transact
285
277
  .specs();
286
278
  auto barrier = std::make_shared<std::promise<result>>();
287
279
  auto f = barrier->get_future();
288
- auto ec = config_.cleanup_hooks->client_record_before_get(keyspace.bucket);
280
+ auto ec = wait_for_hook([this, bucket = keyspace.bucket](auto handler) mutable {
281
+ return config_.cleanup_hooks->client_record_before_get(bucket, std::move(handler));
282
+ });
289
283
  if (ec) {
290
284
  throw client_error(*ec, "client_record_before_get hook raised error");
291
285
  }
@@ -363,7 +357,9 @@ transactions_cleanup::get_active_clients(const couchbase::transactions::transact
363
357
  mut_specs.push_back(couchbase::mutate_in_specs::remove(FIELD_CLIENTS + "." + details.expired_client_ids[idx]).xattr());
364
358
  }
365
359
  mutate_req.specs = mut_specs.specs();
366
- ec = config_.cleanup_hooks->client_record_before_update(keyspace.bucket);
360
+ ec = wait_for_hook([this, bucket = keyspace.bucket](auto handler) mutable {
361
+ return config_.cleanup_hooks->client_record_before_update(bucket, std::move(handler));
362
+ });
367
363
  if (ec) {
368
364
  throw client_error(*ec, "client_record_before_update hook raised error");
369
365
  }
@@ -401,7 +397,9 @@ transactions_cleanup::remove_client_record_from_all_buckets(const std::string& u
401
397
  std::chrono::milliseconds(10), std::chrono::milliseconds(250), std::chrono::milliseconds(500), [this, keyspace, uuid]() {
402
398
  try {
403
399
  // proceed to remove the client uuid if it exists
404
- auto ec = config_.cleanup_hooks->client_record_before_remove_client(keyspace.bucket);
400
+ auto ec = wait_for_hook([this, bucket = keyspace.bucket](auto handler) mutable {
401
+ return config_.cleanup_hooks->client_record_before_remove_client(bucket, std::move(handler));
402
+ });
405
403
  if (ec) {
406
404
  throw client_error(*ec, "client_record_before_remove_client hook raised error");
407
405
  }
@@ -546,7 +544,23 @@ transactions_cleanup::add_collection(couchbase::transactions::transaction_keyspa
546
544
  }
547
545
 
548
546
  void
549
- transactions_cleanup::close()
547
+ transactions_cleanup::start()
548
+ {
549
+ running_ = config_.cleanup_config.cleanup_client_attempts || config_.cleanup_config.cleanup_lost_attempts;
550
+ if (config_.cleanup_config.cleanup_client_attempts) {
551
+ cleanup_thr_ = std::thread(std::bind(&transactions_cleanup::attempts_loop, this));
552
+ }
553
+ if (config_.metadata_collection) {
554
+ add_collection(
555
+ { config_.metadata_collection->bucket, config_.metadata_collection->scope, config_.metadata_collection->collection });
556
+ }
557
+ for (const auto& k : config_.cleanup_config.collections) {
558
+ add_collection(k);
559
+ }
560
+ }
561
+
562
+ void
563
+ transactions_cleanup::stop()
550
564
  {
551
565
  {
552
566
  std::unique_lock<std::mutex> lock(mutex_);
@@ -563,6 +577,12 @@ transactions_cleanup::close()
563
577
  t.join();
564
578
  }
565
579
  }
580
+ }
581
+
582
+ void
583
+ transactions_cleanup::close()
584
+ {
585
+ stop();
566
586
  CB_LOST_ATTEMPT_CLEANUP_LOG_DEBUG("all lost attempt cleanup threads closed");
567
587
  remove_client_record_from_all_buckets(client_uuid_);
568
588
  }
@@ -92,6 +92,15 @@ wrap_operation_future(std::future<result>& fut, bool ignore_subdoc_errors)
92
92
  return res;
93
93
  }
94
94
 
95
+ std::optional<error_class>
96
+ wait_for_hook(std::function<void(utils::movable_function<void(std::optional<error_class>)>)> hook)
97
+ {
98
+ auto hook_barrier = std::make_shared<std::promise<std::optional<error_class>>>();
99
+ auto hook_future = hook_barrier->get_future();
100
+ hook([hook_barrier](std::optional<error_class> ec) mutable { return hook_barrier->set_value(ec); });
101
+ return hook_future.get();
102
+ }
103
+
95
104
  template<>
96
105
  bool
97
106
  is_error(const core::operations::mutate_in_response& resp)
@@ -18,20 +18,24 @@
18
18
 
19
19
  #include <couchbase/transactions.hxx>
20
20
 
21
- #include "couchbase/transactions/transaction_options.hxx"
22
- #include "couchbase/transactions/transaction_result.hxx"
23
- #include "couchbase/transactions/transactions_config.hxx"
21
+ #include <couchbase/fork_event.hxx>
22
+ #include <couchbase/transactions/transaction_options.hxx>
23
+ #include <couchbase/transactions/transaction_result.hxx>
24
+ #include <couchbase/transactions/transactions_config.hxx>
25
+
24
26
  #include "transactions/async_attempt_context.hxx"
25
27
  #include "transactions/attempt_context.hxx"
26
28
  #include "transactions/exceptions.hxx"
27
29
 
28
30
  #include "core/cluster.hxx"
29
31
  #include "core/logger/logger.hxx"
32
+ #include "core/utils/movable_function.hxx"
30
33
 
31
34
  #include <spdlog/common.h>
32
35
 
33
36
  #include <cmath>
34
37
  #include <functional>
38
+ #include <system_error>
35
39
  #include <thread>
36
40
 
37
41
  // workaround for MSVC define overlap with log levels
@@ -127,6 +131,11 @@ using txn_complete_callback =
127
131
  class transactions : public couchbase::transactions::transactions
128
132
  {
129
133
  public:
134
+ /**
135
+ * @brief Destructor
136
+ */
137
+ ~transactions();
138
+
130
139
  /**
131
140
  * @brief Create a transactions object.
132
141
  *
@@ -134,14 +143,30 @@ class transactions : public couchbase::transactions::transactions
134
143
  *
135
144
  * @param cluster The cluster to use for the transactions.
136
145
  * @param config The configuration parameters to use for the transactions.
146
+ * @param cb Called when the transactions object has been created or an error has occurred during the creation.
137
147
  */
138
- transactions(core::cluster cluster, const couchbase::transactions::transactions_config::built& config);
139
- transactions(core::cluster cluster, const couchbase::transactions::transactions_config& config);
148
+ static void create(core::cluster cluster,
149
+ const couchbase::transactions::transactions_config::built&,
150
+ utils::movable_function<void(std::error_code, std::shared_ptr<transactions>)>&& cb);
151
+ static void create(core::cluster cluster,
152
+ const couchbase::transactions::transactions_config&,
153
+ utils::movable_function<void(std::error_code, std::shared_ptr<transactions>)>&& cb);
140
154
 
141
155
  /**
142
- * @brief Destructor
156
+ * @brief Create a transactions object.
157
+ *
158
+ * Creates a transactions object, which can be used to run transactions within the current thread.
159
+ *
160
+ * @param cluster The cluster to use for the transactions.
161
+ * @param config The configuration parameters to use for the transactions.
162
+ * @return a future containing the error that occurred or the transactions object.
143
163
  */
144
- ~transactions();
164
+ static std::future<std::pair<std::error_code, std::shared_ptr<transactions>>> create(
165
+ core::cluster cluster,
166
+ const couchbase::transactions::transactions_config::built& config);
167
+ static std::future<std::pair<std::error_code, std::shared_ptr<transactions>>> create(
168
+ core::cluster cluster,
169
+ const couchbase::transactions::transactions_config& config);
145
170
 
146
171
  /**
147
172
  * @brief Run a transaction
@@ -199,6 +224,8 @@ class transactions : public couchbase::transactions::transactions
199
224
  ctx.rollback();
200
225
  }
201
226
 
227
+ void notify_fork(fork_event event);
228
+
202
229
  /**
203
230
  * @brief Shut down the transactions object
204
231
  *
@@ -245,6 +272,12 @@ class transactions : public couchbase::transactions::transactions
245
272
  return cluster_;
246
273
  }
247
274
 
275
+ /**
276
+ * @internal
277
+ */
278
+ transactions(core::cluster cluster, const couchbase::transactions::transactions_config::built& config);
279
+ transactions(core::cluster cluster, const couchbase::transactions::transactions_config& config);
280
+
248
281
  private:
249
282
  core::cluster cluster_;
250
283
  couchbase::transactions::transactions_config::built config_;
@@ -23,6 +23,7 @@
23
23
  #include <couchbase/bucket_manager.hxx>
24
24
  #include <couchbase/cluster_options.hxx>
25
25
  #include <couchbase/diagnostics_options.hxx>
26
+ #include <couchbase/fork_event.hxx>
26
27
  #include <couchbase/ping_options.hxx>
27
28
  #include <couchbase/query_index_manager.hxx>
28
29
  #include <couchbase/query_options.hxx>
@@ -40,6 +41,11 @@ namespace couchbase
40
41
  namespace core
41
42
  {
42
43
  class cluster;
44
+
45
+ namespace transactions
46
+ {
47
+ class transactions;
48
+ }
43
49
  } // namespace core
44
50
  class cluster_impl;
45
51
  #endif
@@ -90,6 +96,8 @@ class cluster
90
96
  auto operator=(const cluster& other) -> cluster& = default;
91
97
  auto operator=(cluster&& other) -> cluster& = default;
92
98
 
99
+ void notify_fork(fork_event event);
100
+
93
101
  void close() const;
94
102
 
95
103
  /**
@@ -102,6 +110,17 @@ class cluster
102
110
  */
103
111
  explicit cluster(core::cluster core);
104
112
 
113
+ /**
114
+ * Wraps low-level implementation of the SDK & transactions
115
+ *
116
+ * @param core pointer to the low-level SDK handle
117
+ * @param transactions pointer to the lowe-level transactions handle
118
+ *
119
+ * @since 1.0.0
120
+ * @volatile
121
+ */
122
+ explicit cluster(core::cluster core, std::shared_ptr<core::transactions::transactions> transactions);
123
+
105
124
  /**
106
125
  * Opens a {@link bucket} with the given name.
107
126
  *
@@ -0,0 +1,39 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ namespace couchbase
21
+ {
22
+ enum class fork_event {
23
+ /**
24
+ * Notify the cluster that the process is about to fork.
25
+ */
26
+ prepare,
27
+
28
+ /**
29
+ * Notify the context that the process has forked and is the parent.
30
+ */
31
+ parent,
32
+
33
+ /**
34
+ * Notify the context that the process has forked and is the child.
35
+ */
36
+ child,
37
+ };
38
+
39
+ } // namespace couchbase
package/dist/binding.d.ts CHANGED
@@ -885,6 +885,8 @@ export interface CppSearchRequest {
885
885
  };
886
886
  client_context_id?: string;
887
887
  timeout?: CppMilliseconds;
888
+ log_request?: boolean;
889
+ log_response?: boolean;
888
890
  body_str: string;
889
891
  }
890
892
  export interface CppTouchResponse {
@@ -2670,6 +2672,11 @@ export interface CppConnection extends CppConnectionAutogen {
2670
2672
  result: CppScanIterator;
2671
2673
  };
2672
2674
  }
2675
+ export interface CppTransactionKeyspace {
2676
+ bucket_name: string;
2677
+ scope_name?: string;
2678
+ collection_name?: string;
2679
+ }
2673
2680
  export interface CppTransactionsConfig {
2674
2681
  durability_level?: CppDurabilityLevel;
2675
2682
  timeout?: CppMilliseconds;
@@ -2677,6 +2684,7 @@ export interface CppTransactionsConfig {
2677
2684
  cleanup_window?: CppMilliseconds;
2678
2685
  cleanup_lost_attempts?: boolean;
2679
2686
  cleanup_client_attempts?: boolean;
2687
+ metadata_collection?: CppTransactionKeyspace;
2680
2688
  }
2681
2689
  export interface CppTransactionOptions {
2682
2690
  durability_level?: CppDurabilityLevel;
@@ -1,5 +1,5 @@
1
1
  import { AnalyticsScanConsistency, AnalyticsStatus } from './analyticstypes';
2
- import { CppAnalyticsResponseAnalyticsStatus, CppAnalyticsScanConsistency, CppDesignDocumentNamespace, CppDiagEndpointState, CppDiagPingState, CppDurabilityLevel, CppError, CppManagementClusterBucketCompression, CppManagementClusterBucketConflictResolution, CppManagementClusterBucketEvictionPolicy, CppManagementClusterBucketStorageBackend, CppManagementClusterBucketType, CppMutationState, CppPersistTo, CppPrefixScan, CppQueryProfile, CppQueryScanConsistency, CppRangeScan, CppReplicateTo, CppSamplingScan, CppSearchHighlightStyle, CppSearchScanConsistency, CppServiceType, CppStoreSemantics, CppTxnExternalException, CppTxnOpException, CppVectorQueryCombination, CppViewScanConsistency, CppViewSortOrder } from './binding';
2
+ import { CppAnalyticsResponseAnalyticsStatus, CppAnalyticsScanConsistency, CppDesignDocumentNamespace, CppDiagEndpointState, CppDiagPingState, CppDurabilityLevel, CppError, CppManagementClusterBucketCompression, CppManagementClusterBucketConflictResolution, CppManagementClusterBucketEvictionPolicy, CppManagementClusterBucketStorageBackend, CppManagementClusterBucketType, CppMutationState, CppPersistTo, CppPrefixScan, CppQueryProfile, CppQueryScanConsistency, CppRangeScan, CppReplicateTo, CppSamplingScan, CppSearchHighlightStyle, CppSearchScanConsistency, CppServiceType, CppStoreSemantics, CppTransactionKeyspace, CppTxnExternalException, CppTxnOpException, CppVectorQueryCombination, CppViewScanConsistency, CppViewSortOrder } from './binding';
3
3
  import { BucketType, CompressionMode, ConflictResolutionType, EvictionPolicy, StorageBackend } from './bucketmanager';
4
4
  import { EndpointState, PingState } from './diagnosticstypes';
5
5
  import { ErrorContext } from './errorcontexts';
@@ -8,6 +8,7 @@ import { MutationState } from './mutationstate';
8
8
  import { QueryProfileMode, QueryScanConsistency } from './querytypes';
9
9
  import { PrefixScan, RangeScan, SamplingScan } from './rangeScan';
10
10
  import { HighlightStyle, SearchScanConsistency } from './searchtypes';
11
+ import { TransactionKeyspace } from './transactions';
11
12
  import { VectorQueryCombination } from './vectorsearch';
12
13
  import { DesignDocumentNamespace, ViewOrdering, ViewScanConsistency } from './viewtypes';
13
14
  /**
@@ -154,3 +155,7 @@ export declare function designDocumentNamespaceFromCpp(namespace: CppDesignDocum
154
155
  * @internal
155
156
  */
156
157
  export declare function designDocumentNamespaceToCpp(namespace: DesignDocumentNamespace): CppDesignDocumentNamespace;
158
+ /**
159
+ * @internal
160
+ */
161
+ export declare function transactionKeyspaceToCpp(keyspace?: TransactionKeyspace): CppTransactionKeyspace | undefined;
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.designDocumentNamespaceToCpp = exports.designDocumentNamespaceFromCpp = exports.vectorQueryCombinationToCpp = exports.bucketConflictResolutionTypeFromCpp = exports.bucketConflictResolutionTypeToCpp = exports.bucketStorageBackendFromCpp = exports.bucketStorageBackendToCpp = exports.bucketEvictionPolicyFromCpp = exports.bucketEvictionPolicyToCpp = exports.bucketCompressionModeFromCpp = exports.bucketCompressionModeToCpp = exports.bucketTypeFromCpp = exports.bucketTypeToCpp = exports.scanTypeToCpp = exports.errorFromCpp = exports.contextFromCpp = exports.pingStateFromCpp = exports.txnOpExeptionFromCpp = exports.txnExternalExceptionStringFromCpp = exports.endpointStateFromCpp = exports.serviceTypeFromCpp = exports.serviceTypeToCpp = exports.mutationStateToCpp = exports.searchHighlightStyleToCpp = exports.searchScanConsistencyToCpp = exports.analyticsStatusFromCpp = exports.analyticsScanConsistencyToCpp = exports.queryProfileToCpp = exports.queryScanConsistencyToCpp = exports.viewOrderingToCpp = exports.viewScanConsistencyToCpp = exports.storeSemanticToCpp = exports.replicateToToCpp = exports.persistToToCpp = exports.durabilityFromCpp = exports.durabilityToCpp = void 0;
29
+ exports.transactionKeyspaceToCpp = exports.designDocumentNamespaceToCpp = exports.designDocumentNamespaceFromCpp = exports.vectorQueryCombinationToCpp = exports.bucketConflictResolutionTypeFromCpp = exports.bucketConflictResolutionTypeToCpp = exports.bucketStorageBackendFromCpp = exports.bucketStorageBackendToCpp = exports.bucketEvictionPolicyFromCpp = exports.bucketEvictionPolicyToCpp = exports.bucketCompressionModeFromCpp = exports.bucketCompressionModeToCpp = exports.bucketTypeFromCpp = exports.bucketTypeToCpp = exports.scanTypeToCpp = exports.errorFromCpp = exports.contextFromCpp = exports.pingStateFromCpp = exports.txnOpExeptionFromCpp = exports.txnExternalExceptionStringFromCpp = exports.endpointStateFromCpp = exports.serviceTypeFromCpp = exports.serviceTypeToCpp = exports.mutationStateToCpp = exports.searchHighlightStyleToCpp = exports.searchScanConsistencyToCpp = exports.analyticsStatusFromCpp = exports.analyticsScanConsistencyToCpp = exports.queryProfileToCpp = exports.queryScanConsistencyToCpp = exports.viewOrderingToCpp = exports.viewScanConsistencyToCpp = exports.storeSemanticToCpp = exports.replicateToToCpp = exports.persistToToCpp = exports.durabilityFromCpp = exports.durabilityToCpp = void 0;
30
30
  const analyticstypes_1 = require("./analyticstypes");
31
31
  const binding_1 = __importDefault(require("./binding"));
32
32
  const bucketmanager_1 = require("./bucketmanager");
@@ -1051,3 +1051,17 @@ function designDocumentNamespaceToCpp(namespace) {
1051
1051
  throw new errs.InvalidArgumentError(new Error('Unrecognized DesignDocumentNamespace.'));
1052
1052
  }
1053
1053
  exports.designDocumentNamespaceToCpp = designDocumentNamespaceToCpp;
1054
+ /**
1055
+ * @internal
1056
+ */
1057
+ function transactionKeyspaceToCpp(keyspace) {
1058
+ var _a, _b;
1059
+ if (!keyspace)
1060
+ return undefined;
1061
+ return {
1062
+ bucket_name: keyspace.bucket,
1063
+ scope_name: (_a = keyspace.scope) !== null && _a !== void 0 ? _a : '_default',
1064
+ collection_name: (_b = keyspace.collection) !== null && _b !== void 0 ? _b : '_default',
1065
+ };
1066
+ }
1067
+ exports.transactionKeyspaceToCpp = transactionKeyspaceToCpp;
@@ -163,8 +163,6 @@ export interface IBucketSettings {
163
163
  */
164
164
  minimumDurabilityLevel?: DurabilityLevel | string;
165
165
  /**
166
- * Uncommitted: This API is subject to change in the future.
167
- *
168
166
  * Specifies the default history retention on all collections in this bucket.
169
167
  * Only available on Magma Buckets.
170
168
  *
@@ -172,14 +170,10 @@ export interface IBucketSettings {
172
170
  */
173
171
  historyRetentionCollectionDefault?: boolean;
174
172
  /**
175
- * Uncommitted: This API is subject to change in the future.
176
- *
177
173
  * Specifies the maximum history retention in bytes on all collections in this bucket.
178
174
  */
179
175
  historyRetentionBytes?: number;
180
176
  /**
181
- * Uncommitted: This API is subject to change in the future.
182
- *
183
177
  * Specifies the maximum duration in seconds to be covered by the change history that is written
184
178
  * to disk for all collections in this bucket.
185
179
  */
@@ -261,8 +255,6 @@ export declare class BucketSettings implements IBucketSettings {
261
255
  */
262
256
  minimumDurabilityLevel?: DurabilityLevel;
263
257
  /**
264
- * Uncommitted: This API is subject to change in the future.
265
- *
266
258
  * Specifies the default history retention on all collections in this bucket.
267
259
  * Only available on Magma Buckets.
268
260
  *
@@ -270,14 +262,10 @@ export declare class BucketSettings implements IBucketSettings {
270
262
  */
271
263
  historyRetentionCollectionDefault?: boolean;
272
264
  /**
273
- * Uncommitted: This API is subject to change in the future.
274
- *
275
265
  * Specifies the maximum history retention in bytes on all collections in this bucket.
276
266
  */
277
267
  historyRetentionBytes?: number;
278
268
  /**
279
- * Uncommitted: This API is subject to change in the future.
280
- *
281
269
  * Specifies the maximum duration in seconds to be covered by the change history that is written
282
270
  * to disk for all collections in this bucket.
283
271
  */
package/dist/cluster.d.ts CHANGED
@@ -303,8 +303,6 @@ export declare class Cluster {
303
303
  /**
304
304
  * Executes a search query against the cluster.
305
305
  *
306
- * Volatile: This API is subject to change at any time.
307
- *
308
306
  * @param indexName The name of the index to query.
309
307
  * @param request The SearchRequest describing the search to execute.
310
308
  * @param options Optional parameters for this operation.
package/dist/cluster.js CHANGED
@@ -320,8 +320,6 @@ class Cluster {
320
320
  /**
321
321
  * Executes a search query against the cluster.
322
322
  *
323
- * Volatile: This API is subject to change at any time.
324
- *
325
323
  * @param indexName The name of the index to query.
326
324
  * @param request The SearchRequest describing the search to execute.
327
325
  * @param options Optional parameters for this operation.
@@ -345,8 +345,6 @@ export interface MutateInOptions {
345
345
  upsertDocument?: boolean;
346
346
  }
347
347
  /**
348
- * Volatile: This API is subject to change at any time.
349
- *
350
348
  * @category Key-Value
351
349
  */
352
350
  export interface ScanOptions {
@@ -574,7 +572,9 @@ export declare class Collection {
574
572
  /**
575
573
  * Performs a key-value scan operation.
576
574
  *
577
- * Volatile: This API is subject to change at any time.
575
+ * Use this API for low concurrency batch queries where latency is not a critical as the system
576
+ * may have to scan a lot of documents to find the matching documents.
577
+ * For low latency range queries, it is recommended that you use SQL++ with the necessary indexes.
578
578
  *
579
579
  * @param scanType The type of scan to execute.
580
580
  * @param options Optional parameters for the scan operation.
@@ -876,7 +876,9 @@ class Collection {
876
876
  /**
877
877
  * Performs a key-value scan operation.
878
878
  *
879
- * Volatile: This API is subject to change at any time.
879
+ * Use this API for low concurrency batch queries where latency is not a critical as the system
880
+ * may have to scan a lot of documents to find the matching documents.
881
+ * For low latency range queries, it is recommended that you use SQL++ with the necessary indexes.
880
882
  *
881
883
  * @param scanType The type of scan to execute.
882
884
  * @param options Optional parameters for the scan operation.
@@ -281,8 +281,6 @@ export interface QueryOptions {
281
281
  */
282
282
  readOnly?: boolean;
283
283
  /**
284
- * Uncommitted: This API is subject to change in the future.
285
- *
286
284
  * Specifies whether the query engine should use replica nodes for kv fetches,
287
285
  * if the active node is down.
288
286
  */
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * Represents a search term for a RangeScan.
3
3
  *
4
- * Volatile: This API is subject to change at any time.
5
- *
6
4
  * @see {@link RangeScan}
7
5
  * @category Key-Value
8
6
  */
@@ -36,8 +34,6 @@ export interface ScanType {
36
34
  * A RangeScan performs a scan on a range of keys with the range specified through
37
35
  * a start and end ScanTerm.
38
36
  *
39
- * Volatile: This API is subject to change at any time.
40
- *
41
37
  * @category Key-Value
42
38
  */
43
39
  export declare class RangeScan implements ScanType {
@@ -62,8 +58,6 @@ export declare class RangeScan implements ScanType {
62
58
  * A SamplingScan performs a scan on a random sampling of keys with the sampling bounded by
63
59
  * a limit.
64
60
  *
65
- * Volatile: This API is subject to change at any time.
66
- *
67
61
  * @category Key-Value
68
62
  */
69
63
  export declare class SamplingScan implements ScanType {
@@ -87,8 +81,6 @@ export declare class SamplingScan implements ScanType {
87
81
  /**
88
82
  * A PrefixScan scan type selects every document whose ID starts with a certain prefix.
89
83
  *
90
- * Volatile: This API is subject to change at any time.
91
- *
92
84
  * @category key-value
93
85
  */
94
86
  export declare class PrefixScan implements ScanType {