couchbase 4.4.6-dev.1 → 4.5.0
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.
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +3 -165
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/CMakeLists.txt +12 -1
- package/deps/couchbase-cxx-client/README.md +2 -2
- package/deps/couchbase-cxx-client/cmake/Profiler.cmake +15 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_address.cxx +55 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_address.hxx +39 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_meter.cxx +753 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_meter.hxx +198 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.cxx +895 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.hxx +59 -0
- package/deps/couchbase-cxx-client/core/bucket.cxx +77 -35
- package/deps/couchbase-cxx-client/core/bucket.hxx +17 -10
- package/deps/couchbase-cxx-client/core/cluster.cxx +54 -16
- package/deps/couchbase-cxx-client/core/cluster_credentials.cxx +27 -0
- package/deps/couchbase-cxx-client/core/cluster_credentials.hxx +36 -0
- package/deps/couchbase-cxx-client/core/cluster_options.hxx +12 -0
- package/deps/couchbase-cxx-client/core/collections_component.cxx +7 -5
- package/deps/couchbase-cxx-client/core/http_component.cxx +6 -0
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +9 -0
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/error.cxx +1 -0
- package/deps/couchbase-cxx-client/core/impl/logger.cxx +51 -0
- package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/transaction_get_multi_replicas_from_preferred_server_group_spec.cxx +32 -0
- package/deps/couchbase-cxx-client/core/impl/transaction_get_multi_spec.cxx +30 -0
- package/deps/couchbase-cxx-client/core/impl/transaction_op_error_category.cxx +2 -0
- package/deps/couchbase-cxx-client/core/io/config_tracker.cxx +6 -6
- package/deps/couchbase-cxx-client/core/io/http_command.hxx +35 -11
- package/deps/couchbase-cxx-client/core/io/http_session.cxx +10 -0
- package/deps/couchbase-cxx-client/core/io/http_session.hxx +4 -0
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +83 -34
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +41 -2
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +52 -19
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +3 -0
- package/deps/couchbase-cxx-client/core/logger/logger.cxx +46 -0
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +41 -1
- package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -0
- package/deps/couchbase-cxx-client/core/management/bucket_settings_json.hxx +4 -0
- package/deps/couchbase-cxx-client/core/meta/features.hxx +32 -0
- package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +9 -9
- package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +10 -2
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in.cxx +4 -0
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +14 -2
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +4 -0
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.cxx +4 -0
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +12 -10
- package/deps/couchbase-cxx-client/core/operations/http_noop.cxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +3 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +0 -5
- package/deps/couchbase-cxx-client/core/origin.hxx +2 -11
- package/deps/couchbase-cxx-client/core/platform/random.cc +6 -3
- package/deps/couchbase-cxx-client/core/platform/random.h +2 -2
- package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.hxx +9 -0
- package/deps/couchbase-cxx-client/core/timeout_defaults.hxx +4 -0
- package/deps/couchbase-cxx-client/core/topology/configuration.cxx +10 -13
- package/deps/couchbase-cxx-client/core/topology/configuration.hxx +14 -15
- package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +6 -0
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +22 -2
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +25 -7
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +688 -238
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +91 -12
- package/deps/couchbase-cxx-client/core/transactions/exceptions.cxx +5 -0
- package/deps/couchbase-cxx-client/core/transactions/exceptions.hxx +20 -0
- package/deps/couchbase-cxx-client/core/transactions/exceptions_fmt.hxx +3 -0
- package/deps/couchbase-cxx-client/core/transactions/forward_compat.cxx +71 -6
- package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +45 -59
- package/deps/couchbase-cxx-client/core/transactions/get_multi_orchestrator.cxx +616 -0
- package/deps/couchbase-cxx-client/core/transactions/get_multi_orchestrator.hxx +61 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +8 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +16 -5
- package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +12 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +13 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_fields.hxx +1 -0
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +277 -96
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +28 -76
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +33 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_mode.hxx +28 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_replicas_from_preferred_server_group_mode.hxx +27 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +71 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_multi_result.hxx +66 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +10 -0
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +8 -3
- package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +4 -0
- package/deps/couchbase-cxx-client/core/utils/url_codec.cxx +26 -0
- package/deps/couchbase-cxx-client/core/utils/url_codec.hxx +11 -0
- package/deps/couchbase-cxx-client/core/websocket_codec.cxx +647 -0
- package/deps/couchbase-cxx-client/core/websocket_codec.hxx +77 -0
- package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +70 -6
- package/deps/couchbase-cxx-client/couchbase/application_telemetry_options.hxx +124 -0
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +17 -0
- package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/logger.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +70 -6
- package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +29 -5
- package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +24 -7
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_mode.hxx +47 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_mode.hxx +46 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_options.hxx +48 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +109 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_spec.hxx +47 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_result.hxx +102 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_multi_spec.hxx +45 -0
- package/dist/analyticsindexmanager.d.ts +1 -0
- package/dist/binarycollection.d.ts +1 -0
- package/dist/binding.d.ts +85 -38
- package/dist/binding.js +14 -7
- package/dist/bindingutilities.d.ts +16 -4
- package/dist/bindingutilities.js +248 -43
- package/dist/cluster.d.ts +39 -0
- package/dist/cluster.js +21 -3
- package/dist/collection.d.ts +20 -1
- package/dist/collection.js +13 -0
- package/dist/errorcontexts.d.ts +24 -0
- package/dist/errorcontexts.js +12 -6
- package/dist/generaltypes.d.ts +16 -0
- package/dist/generaltypes.js +18 -1
- package/dist/httpexecutor.d.ts +1 -2
- package/dist/httpexecutor.js +0 -9
- package/dist/streamablepromises.d.ts +25 -7
- package/dist/streamablepromises.js +32 -7
- package/dist/transactions.d.ts +239 -1
- package/dist/transactions.js +318 -1
- package/dist/transcoders.d.ts +1 -0
- package/dist/utilities.d.ts +1 -0
- package/package.json +24 -24
- package/src/connection.cpp +34 -4
- package/src/constants.cpp +124 -0
- package/src/jstocbpp_autogen.hpp +22 -8
- package/src/jstocbpp_transactions.hpp +83 -7
- package/src/transaction.cpp +101 -0
- package/src/transaction.hpp +5 -0
- package/tools/gen-bindings-js.js +2 -1
- package/tools/gen-bindings-json.py +28 -3
package/src/jstocbpp_autogen.hpp
CHANGED
@@ -296,6 +296,7 @@ struct js_to_cbpp_t<couchbase::core::management::cluster::bucket_settings> {
|
|
296
296
|
js_to_cbpp<std::optional<std::uint32_t>>(
|
297
297
|
cppObj.history_retention_duration,
|
298
298
|
jsObj.Get("history_retention_duration"));
|
299
|
+
// num_vbuckets
|
299
300
|
js_to_cbpp<
|
300
301
|
couchbase::core::management::cluster::bucket_storage_backend>(
|
301
302
|
cppObj.storage_backend, jsObj.Get("storage_backend"));
|
@@ -353,6 +354,7 @@ struct js_to_cbpp_t<couchbase::core::management::cluster::bucket_settings> {
|
|
353
354
|
resObj.Set("history_retention_duration",
|
354
355
|
cbpp_to_js<std::optional<std::uint32_t>>(
|
355
356
|
env, cppObj.history_retention_duration));
|
357
|
+
// num_vbuckets
|
356
358
|
resObj.Set(
|
357
359
|
"storage_backend",
|
358
360
|
cbpp_to_js<
|
@@ -2025,7 +2027,8 @@ struct js_to_cbpp_t<couchbase::core::operations::get_all_replicas_request> {
|
|
2025
2027
|
js_to_cbpp<couchbase::core::document_id>(cppObj.id, jsObj.Get("id"));
|
2026
2028
|
js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
2027
2029
|
cppObj.timeout, jsObj.Get("timeout"));
|
2028
|
-
|
2030
|
+
js_to_cbpp<couchbase::read_preference>(cppObj.read_preference,
|
2031
|
+
jsObj.Get("read_preference"));
|
2029
2032
|
return cppObj;
|
2030
2033
|
}
|
2031
2034
|
static inline Napi::Value
|
@@ -2038,7 +2041,8 @@ struct js_to_cbpp_t<couchbase::core::operations::get_all_replicas_request> {
|
|
2038
2041
|
resObj.Set("timeout",
|
2039
2042
|
cbpp_to_js<std::optional<std::chrono::milliseconds>>(
|
2040
2043
|
env, cppObj.timeout));
|
2041
|
-
|
2044
|
+
resObj.Set("read_preference", cbpp_to_js<couchbase::read_preference>(
|
2045
|
+
env, cppObj.read_preference));
|
2042
2046
|
return resObj;
|
2043
2047
|
}
|
2044
2048
|
};
|
@@ -2213,7 +2217,8 @@ struct js_to_cbpp_t<couchbase::core::operations::get_any_replica_request> {
|
|
2213
2217
|
js_to_cbpp<couchbase::core::document_id>(cppObj.id, jsObj.Get("id"));
|
2214
2218
|
js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
2215
2219
|
cppObj.timeout, jsObj.Get("timeout"));
|
2216
|
-
|
2220
|
+
js_to_cbpp<couchbase::read_preference>(cppObj.read_preference,
|
2221
|
+
jsObj.Get("read_preference"));
|
2217
2222
|
return cppObj;
|
2218
2223
|
}
|
2219
2224
|
static inline Napi::Value
|
@@ -2226,7 +2231,8 @@ struct js_to_cbpp_t<couchbase::core::operations::get_any_replica_request> {
|
|
2226
2231
|
resObj.Set("timeout",
|
2227
2232
|
cbpp_to_js<std::optional<std::chrono::milliseconds>>(
|
2228
2233
|
env, cppObj.timeout));
|
2229
|
-
|
2234
|
+
resObj.Set("read_preference", cbpp_to_js<couchbase::read_preference>(
|
2235
|
+
env, cppObj.read_preference));
|
2230
2236
|
return resObj;
|
2231
2237
|
}
|
2232
2238
|
};
|
@@ -3146,7 +3152,8 @@ struct js_to_cbpp_t<
|
|
3146
3152
|
js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
3147
3153
|
cppObj.timeout, jsObj.Get("timeout"));
|
3148
3154
|
// parent_span
|
3149
|
-
|
3155
|
+
js_to_cbpp<couchbase::read_preference>(cppObj.read_preference,
|
3156
|
+
jsObj.Get("read_preference"));
|
3150
3157
|
return cppObj;
|
3151
3158
|
}
|
3152
3159
|
static inline Napi::Value
|
@@ -3165,7 +3172,8 @@ struct js_to_cbpp_t<
|
|
3165
3172
|
cbpp_to_js<std::optional<std::chrono::milliseconds>>(
|
3166
3173
|
env, cppObj.timeout));
|
3167
3174
|
// parent_span
|
3168
|
-
|
3175
|
+
resObj.Set("read_preference", cbpp_to_js<couchbase::read_preference>(
|
3176
|
+
env, cppObj.read_preference));
|
3169
3177
|
return resObj;
|
3170
3178
|
}
|
3171
3179
|
};
|
@@ -4797,7 +4805,8 @@ struct js_to_cbpp_t<
|
|
4797
4805
|
js_to_cbpp<std::optional<std::chrono::milliseconds>>(
|
4798
4806
|
cppObj.timeout, jsObj.Get("timeout"));
|
4799
4807
|
// parent_span
|
4800
|
-
|
4808
|
+
js_to_cbpp<couchbase::read_preference>(cppObj.read_preference,
|
4809
|
+
jsObj.Get("read_preference"));
|
4801
4810
|
return cppObj;
|
4802
4811
|
}
|
4803
4812
|
static inline Napi::Value
|
@@ -4816,7 +4825,8 @@ struct js_to_cbpp_t<
|
|
4816
4825
|
cbpp_to_js<std::optional<std::chrono::milliseconds>>(
|
4817
4826
|
env, cppObj.timeout));
|
4818
4827
|
// parent_span
|
4819
|
-
|
4828
|
+
resObj.Set("read_preference", cbpp_to_js<couchbase::read_preference>(
|
4829
|
+
env, cppObj.read_preference));
|
4820
4830
|
return resObj;
|
4821
4831
|
}
|
4822
4832
|
};
|
@@ -4907,6 +4917,7 @@ struct js_to_cbpp_t<couchbase::core::operations::mutate_in_request> {
|
|
4907
4917
|
js_to_cbpp<bool>(cppObj.access_deleted, jsObj.Get("access_deleted"));
|
4908
4918
|
js_to_cbpp<bool>(cppObj.create_as_deleted,
|
4909
4919
|
jsObj.Get("create_as_deleted"));
|
4920
|
+
// revive_document
|
4910
4921
|
js_to_cbpp<std::optional<std::uint32_t>>(cppObj.expiry,
|
4911
4922
|
jsObj.Get("expiry"));
|
4912
4923
|
js_to_cbpp<couchbase::store_semantics>(cppObj.store_semantics,
|
@@ -4939,6 +4950,7 @@ struct js_to_cbpp_t<couchbase::core::operations::mutate_in_request> {
|
|
4939
4950
|
cbpp_to_js<bool>(env, cppObj.access_deleted));
|
4940
4951
|
resObj.Set("create_as_deleted",
|
4941
4952
|
cbpp_to_js<bool>(env, cppObj.create_as_deleted));
|
4953
|
+
// revive_document
|
4942
4954
|
resObj.Set("expiry", cbpp_to_js<std::optional<std::uint32_t>>(
|
4943
4955
|
env, cppObj.expiry));
|
4944
4956
|
resObj.Set("store_semantics", cbpp_to_js<couchbase::store_semantics>(
|
@@ -4979,6 +4991,7 @@ struct js_to_cbpp_t<
|
|
4979
4991
|
js_to_cbpp<bool>(cppObj.access_deleted, jsObj.Get("access_deleted"));
|
4980
4992
|
js_to_cbpp<bool>(cppObj.create_as_deleted,
|
4981
4993
|
jsObj.Get("create_as_deleted"));
|
4994
|
+
// revive_document
|
4982
4995
|
js_to_cbpp<std::optional<std::uint32_t>>(cppObj.expiry,
|
4983
4996
|
jsObj.Get("expiry"));
|
4984
4997
|
js_to_cbpp<couchbase::store_semantics>(cppObj.store_semantics,
|
@@ -5013,6 +5026,7 @@ struct js_to_cbpp_t<
|
|
5013
5026
|
cbpp_to_js<bool>(env, cppObj.access_deleted));
|
5014
5027
|
resObj.Set("create_as_deleted",
|
5015
5028
|
cbpp_to_js<bool>(env, cppObj.create_as_deleted));
|
5029
|
+
// revive_document
|
5016
5030
|
resObj.Set("expiry", cbpp_to_js<std::optional<std::uint32_t>>(
|
5017
5031
|
env, cppObj.expiry));
|
5018
5032
|
resObj.Set("store_semantics", cbpp_to_js<couchbase::store_semantics>(
|
@@ -8,6 +8,8 @@
|
|
8
8
|
#include <core/error_context/transaction_error_context.hxx>
|
9
9
|
#include <core/transactions.hxx>
|
10
10
|
#include <core/transactions/internal/exceptions_internal.hxx>
|
11
|
+
#include <core/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx>
|
12
|
+
#include <core/transactions/transaction_get_multi_result.hxx>
|
11
13
|
#include <core/utils/json.hxx>
|
12
14
|
|
13
15
|
namespace cbtxns = couchbase::transactions;
|
@@ -263,6 +265,55 @@ struct js_to_cbpp_t<cbcoretxns::transaction_get_result> {
|
|
263
265
|
}
|
264
266
|
};
|
265
267
|
|
268
|
+
template <>
|
269
|
+
struct js_to_cbpp_t<cbcoretxns::transaction_get_multi_result> {
|
270
|
+
static inline cbcoretxns::transaction_get_multi_result
|
271
|
+
from_js(Napi::Value jsVal)
|
272
|
+
{
|
273
|
+
auto jsObj = jsVal.ToObject();
|
274
|
+
return cbcoretxns::transaction_get_multi_result(
|
275
|
+
js_to_cbpp<
|
276
|
+
std::vector<std::optional<couchbase::codec::encoded_value>>>(
|
277
|
+
jsObj.Get("content")));
|
278
|
+
}
|
279
|
+
|
280
|
+
static inline Napi::Value
|
281
|
+
to_js(Napi::Env env, const cbcoretxns::transaction_get_multi_result &res)
|
282
|
+
{
|
283
|
+
auto resObj = Napi::Object::New(env);
|
284
|
+
resObj.Set("content", cbpp_to_js(env, res.content()));
|
285
|
+
return resObj;
|
286
|
+
}
|
287
|
+
};
|
288
|
+
|
289
|
+
template <>
|
290
|
+
struct js_to_cbpp_t<
|
291
|
+
cbcoretxns::
|
292
|
+
transaction_get_multi_replicas_from_preferred_server_group_result> {
|
293
|
+
static inline cbcoretxns::
|
294
|
+
transaction_get_multi_replicas_from_preferred_server_group_result
|
295
|
+
from_js(Napi::Value jsVal)
|
296
|
+
{
|
297
|
+
auto jsObj = jsVal.ToObject();
|
298
|
+
return cbcoretxns::
|
299
|
+
transaction_get_multi_replicas_from_preferred_server_group_result(
|
300
|
+
js_to_cbpp<std::vector<
|
301
|
+
std::optional<couchbase::codec::encoded_value>>>(
|
302
|
+
jsObj.Get("content")));
|
303
|
+
}
|
304
|
+
|
305
|
+
static inline Napi::Value
|
306
|
+
to_js(Napi::Env env,
|
307
|
+
const cbcoretxns::
|
308
|
+
transaction_get_multi_replicas_from_preferred_server_group_result
|
309
|
+
&res)
|
310
|
+
{
|
311
|
+
auto resObj = Napi::Object::New(env);
|
312
|
+
resObj.Set("content", cbpp_to_js(env, res.content()));
|
313
|
+
return resObj;
|
314
|
+
}
|
315
|
+
};
|
316
|
+
|
266
317
|
template <>
|
267
318
|
struct js_to_cbpp_t<cbtxns::transaction_query_options> {
|
268
319
|
static inline cbtxns::transaction_query_options from_js(Napi::Value jsVal)
|
@@ -368,12 +419,36 @@ struct js_to_cbpp_t<cbcoretxns::transaction_operation_failed> {
|
|
368
419
|
to_js(Napi::Env env, const cbcoretxns::transaction_operation_failed &err)
|
369
420
|
{
|
370
421
|
Napi::Error jsErr = Napi::Error::New(env, "transaction_exception");
|
371
|
-
|
372
|
-
Napi::String::New(env, "transaction_operation_failed"));
|
422
|
+
|
373
423
|
jsErr.Set("should_not_retry", cbpp_to_js(env, !err.should_retry()));
|
374
424
|
jsErr.Set("should_not_rollback",
|
375
425
|
cbpp_to_js(env, !err.should_rollback()));
|
426
|
+
if (err.cause() == cbcoretxns::external_exception::UNKNOWN) {
|
427
|
+
if (err.to_raise() == cbcoretxns::final_error::EXPIRED) {
|
428
|
+
jsErr.Set("ctxtype",
|
429
|
+
Napi::String::New(env, "transaction_exception"));
|
430
|
+
jsErr.Set("type",
|
431
|
+
cbpp_to_js(env, cbcoretxns::failure_type::EXPIRY));
|
432
|
+
} else if (err.to_raise() == cbcoretxns::final_error::AMBIGUOUS) {
|
433
|
+
jsErr.Set("ctxtype",
|
434
|
+
Napi::String::New(env, "transaction_exception"));
|
435
|
+
jsErr.Set("type",
|
436
|
+
cbpp_to_js(
|
437
|
+
env, cbcoretxns::failure_type::COMMIT_AMBIGUOUS));
|
438
|
+
} else {
|
439
|
+
jsErr.Set("ctxtype", Napi::String::New(
|
440
|
+
env, "transaction_operation_failed"));
|
441
|
+
}
|
442
|
+
} else if (err.cause() == cbcoretxns::external_exception::
|
443
|
+
DOCUMENT_UNRETRIEVABLE_EXCEPTION) {
|
444
|
+
jsErr.Set("ctxtype",
|
445
|
+
Napi::String::New(env, "transaction_op_exception"));
|
446
|
+
} else {
|
447
|
+
jsErr.Set("ctxtype",
|
448
|
+
Napi::String::New(env, "transaction_operation_failed"));
|
449
|
+
}
|
376
450
|
jsErr.Set("cause", cbpp_to_js(env, err.cause()));
|
451
|
+
jsErr.Set("message", cbpp_to_js(env, std::string(err.what())));
|
377
452
|
return jsErr.Value();
|
378
453
|
}
|
379
454
|
};
|
@@ -436,16 +511,17 @@ struct js_to_cbpp_t<cbcoretxns::op_exception> {
|
|
436
511
|
template <>
|
437
512
|
struct js_to_cbpp_t<couchbase::core::transaction_op_error_context> {
|
438
513
|
static inline Napi::Value
|
439
|
-
to_js(Napi::Env env,
|
514
|
+
to_js(Napi::Env env,
|
515
|
+
const couchbase::core::transaction_op_error_context &res)
|
440
516
|
{
|
441
517
|
auto resObj = Napi::Object::New(env);
|
442
518
|
resObj.Set("code", cbpp_to_js(env, res.ec()));
|
443
519
|
resObj.Set(
|
444
520
|
"cause",
|
445
|
-
cbpp_to_js<
|
446
|
-
|
447
|
-
|
448
|
-
|
521
|
+
cbpp_to_js<std::variant<std::monostate,
|
522
|
+
couchbase::core::key_value_error_context,
|
523
|
+
couchbase::core::query_error_context>>(
|
524
|
+
env, res.cause()));
|
449
525
|
return resObj;
|
450
526
|
}
|
451
527
|
};
|
package/src/transaction.cpp
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
#include "transactions.hpp"
|
5
5
|
#include <core/transactions/internal/exceptions_internal.hxx>
|
6
6
|
#include <core/transactions/internal/utils.hxx>
|
7
|
+
#include <core/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx>
|
8
|
+
#include <core/transactions/transaction_get_multi_result.hxx>
|
7
9
|
#include <type_traits>
|
8
10
|
|
9
11
|
namespace couchnode
|
@@ -39,6 +41,12 @@ void Transaction::Init(Napi::Env env, Napi::Object exports)
|
|
39
41
|
{
|
40
42
|
InstanceMethod<&Transaction::jsNewAttempt>("newAttempt"),
|
41
43
|
InstanceMethod<&Transaction::jsGet>("get"),
|
44
|
+
InstanceMethod<&Transaction::jsGetReplicaFromPreferredServerGroup>(
|
45
|
+
"getReplicaFromPreferredServerGroup"),
|
46
|
+
InstanceMethod<&Transaction::jsGetMulti>("getMulti"),
|
47
|
+
InstanceMethod<
|
48
|
+
&Transaction::jsGetMultiReplicasFromPreferredServerGroup>(
|
49
|
+
"getMultiReplicasFromPreferredServerGroup"),
|
42
50
|
InstanceMethod<&Transaction::jsInsert>("insert"),
|
43
51
|
InstanceMethod<&Transaction::jsReplace>("replace"),
|
44
52
|
InstanceMethod<&Transaction::jsRemove>("remove"),
|
@@ -121,6 +129,99 @@ Napi::Value Transaction::jsGet(const Napi::CallbackInfo &info)
|
|
121
129
|
return info.Env().Null();
|
122
130
|
}
|
123
131
|
|
132
|
+
Napi::Value Transaction::jsGetReplicaFromPreferredServerGroup(
|
133
|
+
const Napi::CallbackInfo &info)
|
134
|
+
{
|
135
|
+
auto optsJsObj = info[0].As<Napi::Object>();
|
136
|
+
auto callbackJsFn = info[1].As<Napi::Function>();
|
137
|
+
auto cookie = RefCallCookie(info.Env(), callbackJsFn, "txnGetCallback");
|
138
|
+
|
139
|
+
auto docId = jsToCbpp<couchbase::core::document_id>(optsJsObj.Get("id"));
|
140
|
+
|
141
|
+
_impl->get_replica_from_preferred_server_group(
|
142
|
+
docId,
|
143
|
+
[this, cookie = std::move(cookie)](
|
144
|
+
std::exception_ptr err,
|
145
|
+
std::optional<cbcoretxns::transaction_get_result> res) mutable {
|
146
|
+
cookie.invoke([err = std::move(err), res = std::move(res)](
|
147
|
+
Napi::Env env, Napi::Function callback) mutable {
|
148
|
+
// BUG(JSCBC-1024): We should revert to using direct get
|
149
|
+
// operations once the underlying issue has been resolved.
|
150
|
+
if (!err && !res.has_value()) {
|
151
|
+
callback.Call(
|
152
|
+
{cbpp_to_js(env, couchbase::errc::make_error_code(
|
153
|
+
couchbase::errc::key_value::
|
154
|
+
document_irretrievable))});
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
|
158
|
+
callback.Call({cbpp_to_js(env, err), cbpp_to_js(env, res)});
|
159
|
+
});
|
160
|
+
});
|
161
|
+
|
162
|
+
return info.Env().Null();
|
163
|
+
}
|
164
|
+
|
165
|
+
Napi::Value Transaction::jsGetMulti(const Napi::CallbackInfo &info)
|
166
|
+
{
|
167
|
+
auto optsJsObj = info[0].As<Napi::Object>();
|
168
|
+
auto callbackJsFn = info[1].As<Napi::Function>();
|
169
|
+
auto cookie =
|
170
|
+
RefCallCookie(info.Env(), callbackJsFn, "txnGetMultiCallback");
|
171
|
+
|
172
|
+
auto docIds = jsToCbpp<std::vector<couchbase::core::document_id>>(
|
173
|
+
optsJsObj.Get("ids"));
|
174
|
+
auto mode =
|
175
|
+
jsToCbpp<cbcoretxns::transaction_get_multi_mode>(optsJsObj.Get("mode"));
|
176
|
+
|
177
|
+
_impl->get_multi(
|
178
|
+
docIds, mode,
|
179
|
+
[this, cookie = std::move(cookie)](
|
180
|
+
std::exception_ptr err,
|
181
|
+
std::optional<cbcoretxns::transaction_get_multi_result>
|
182
|
+
res) mutable {
|
183
|
+
cookie.invoke([err = std::move(err), res = std::move(res)](
|
184
|
+
Napi::Env env, Napi::Function callback) mutable {
|
185
|
+
callback.Call({cbpp_to_js(env, err), cbpp_to_js(env, res)});
|
186
|
+
});
|
187
|
+
});
|
188
|
+
|
189
|
+
return info.Env().Null();
|
190
|
+
}
|
191
|
+
|
192
|
+
Napi::Value Transaction::jsGetMultiReplicasFromPreferredServerGroup(
|
193
|
+
const Napi::CallbackInfo &info)
|
194
|
+
{
|
195
|
+
auto optsJsObj = info[0].As<Napi::Object>();
|
196
|
+
auto callbackJsFn = info[1].As<Napi::Function>();
|
197
|
+
auto cookie =
|
198
|
+
RefCallCookie(info.Env(), callbackJsFn,
|
199
|
+
"txnGetMultiReplicasFromPreferredServerGroupCallback");
|
200
|
+
|
201
|
+
auto docIds = jsToCbpp<std::vector<couchbase::core::document_id>>(
|
202
|
+
optsJsObj.Get("ids"));
|
203
|
+
auto mode = jsToCbpp<
|
204
|
+
cbcoretxns::
|
205
|
+
transaction_get_multi_replicas_from_preferred_server_group_mode>(
|
206
|
+
optsJsObj.Get("mode"));
|
207
|
+
|
208
|
+
_impl->get_multi_replicas_from_preferred_server_group(
|
209
|
+
docIds, mode,
|
210
|
+
[this, cookie = std::move(cookie)](
|
211
|
+
std::exception_ptr err,
|
212
|
+
std::optional<
|
213
|
+
cbcoretxns::
|
214
|
+
transaction_get_multi_replicas_from_preferred_server_group_result>
|
215
|
+
res) mutable {
|
216
|
+
cookie.invoke([err = std::move(err), res = std::move(res)](
|
217
|
+
Napi::Env env, Napi::Function callback) mutable {
|
218
|
+
callback.Call({cbpp_to_js(env, err), cbpp_to_js(env, res)});
|
219
|
+
});
|
220
|
+
});
|
221
|
+
|
222
|
+
return info.Env().Null();
|
223
|
+
}
|
224
|
+
|
124
225
|
Napi::Value Transaction::jsInsert(const Napi::CallbackInfo &info)
|
125
226
|
{
|
126
227
|
auto optsJsObj = info[0].As<Napi::Object>();
|
package/src/transaction.hpp
CHANGED
@@ -26,6 +26,11 @@ public:
|
|
26
26
|
Napi::Value jsNewAttempt(const Napi::CallbackInfo &info);
|
27
27
|
Napi::Value jsFinalizeAttempt(const Napi::CallbackInfo &info);
|
28
28
|
Napi::Value jsGet(const Napi::CallbackInfo &info);
|
29
|
+
Napi::Value
|
30
|
+
jsGetReplicaFromPreferredServerGroup(const Napi::CallbackInfo &info);
|
31
|
+
Napi::Value jsGetMulti(const Napi::CallbackInfo &info);
|
32
|
+
Napi::Value
|
33
|
+
jsGetMultiReplicasFromPreferredServerGroup(const Napi::CallbackInfo &info);
|
29
34
|
Napi::Value jsInsert(const Napi::CallbackInfo &info);
|
30
35
|
Napi::Value jsReplace(const Napi::CallbackInfo &info);
|
31
36
|
Napi::Value jsRemove(const Napi::CallbackInfo &info);
|
package/tools/gen-bindings-js.js
CHANGED
@@ -248,7 +248,8 @@ function isIgnoredField(st, fieldName) {
|
|
248
248
|
fieldName === 'parent_span' ||
|
249
249
|
fieldName === 'retry_strategy' ||
|
250
250
|
fieldName === 'internal' ||
|
251
|
-
fieldName === '
|
251
|
+
fieldName === 'revive_document' ||
|
252
|
+
fieldName === 'num_vbuckets' ||
|
252
253
|
(fieldName.endsWith('_') &&
|
253
254
|
!StructsWithAllowedPrivateField.includes(st.name))
|
254
255
|
) {
|
@@ -88,6 +88,9 @@ FILE_LIST = [
|
|
88
88
|
"core/range_scan_orchestrator_options.hxx",
|
89
89
|
"core/query_context.hxx",
|
90
90
|
"core/vector_query_combination.hxx",
|
91
|
+
"core/transactions/exceptions.hxx",
|
92
|
+
"core/transactions/transaction_get_multi_mode.hxx",
|
93
|
+
"core/transactions/transaction_get_multi_replicas_from_preferred_server_group_mode.hxx"
|
91
94
|
]
|
92
95
|
|
93
96
|
TYPE_LIST = [
|
@@ -182,7 +185,11 @@ TYPE_LIST = [
|
|
182
185
|
"couchbase::core::range_scan_cancel_result",
|
183
186
|
"couchbase::core::query_context",
|
184
187
|
"couchbase::core::vector_query_combination",
|
185
|
-
"couchbase::read_preference"
|
188
|
+
"couchbase::read_preference",
|
189
|
+
"couchbase::core::transactions::failure_type",
|
190
|
+
"couchbase::core::transactions::external_exception",
|
191
|
+
"couchbase::core::transactions::transaction_get_multi_mode",
|
192
|
+
"couchbase::core::transactions::transaction_get_multi_replicas_from_preferred_server_group_mode",
|
186
193
|
]
|
187
194
|
|
188
195
|
STD_COMPARATOR_TEMPLATES = ["std::less<{0}>", "std::greater<{0}>", "std::less_equal<{0}>", "std::greater_equal<{0}>"]
|
@@ -242,6 +249,20 @@ class BindingsGenerator:
|
|
242
249
|
if version is None:
|
243
250
|
raise ValueError('Missing LLVM version.')
|
244
251
|
|
252
|
+
print(f'Using version={version}')
|
253
|
+
llvm_root_dir = f'/opt/homebrew/Cellar/llvm/{version}'
|
254
|
+
if not os.path.exists(llvm_root_dir):
|
255
|
+
print(f'LLVM root directory ({llvm_root_dir}) does not exist. Attempting to find it.')
|
256
|
+
llvm_root_dir = None
|
257
|
+
for d in os.listdir(f'/opt/homebrew/Cellar/llvm'):
|
258
|
+
if d.startswith(version):
|
259
|
+
llvm_root_dir = os.path.join('/opt/homebrew/Cellar/llvm', d)
|
260
|
+
print(f'Found LLVM root directory: {llvm_root_dir}')
|
261
|
+
break
|
262
|
+
if llvm_root_dir is None:
|
263
|
+
raise ValueError((f'Unable to find LLVM root directory for version {version}.'
|
264
|
+
'Please use CN_LLVM_VERSION to override.'))
|
265
|
+
|
245
266
|
if includedir is None:
|
246
267
|
includedir = os.environ.get('CN_LLVM_INCLUDE')
|
247
268
|
if includedir is None:
|
@@ -270,7 +291,7 @@ class BindingsGenerator:
|
|
270
291
|
self._include_paths = [
|
271
292
|
'-I/opt/homebrew/opt/llvm/include/c++/v1',
|
272
293
|
f'-I{CXX_CLIENT_ROOT}/',
|
273
|
-
f'-I
|
294
|
+
f'-I{llvm_root_dir}/lib/clang/{version[:2]}/include',
|
274
295
|
f'-I{system_headers}/usr/include'
|
275
296
|
]
|
276
297
|
|
@@ -731,12 +752,16 @@ if __name__ == '__main__':
|
|
731
752
|
ap.add_argument('-s',
|
732
753
|
'--system-headers',
|
733
754
|
help='SET CN_SYS_HEADERS, or use command: xcrun --show-sdk-path')
|
755
|
+
ap.add_argument('--verbose',
|
756
|
+
action='store_true',
|
757
|
+
help='Run in verbose mode',)
|
734
758
|
options = ap.parse_args()
|
735
759
|
|
736
760
|
generator = BindingsGenerator(options.version,
|
737
761
|
options.libdir,
|
738
762
|
options.includedir,
|
739
|
-
options.system_headers
|
763
|
+
options.system_headers,
|
764
|
+
options.verbose)
|
740
765
|
generator.gen_bindings()
|
741
766
|
|
742
767
|
|