couchbase 4.2.1 → 4.2.2
Sign up to get free protection for your applications and to get access to all the features.
- package/CMakeLists.txt +1 -0
- package/deps/couchbase-cxx-client/.gitmodules +3 -0
- package/deps/couchbase-cxx-client/.idea/misc.xml +1 -0
- package/deps/couchbase-cxx-client/.idea/vcs.xml +1 -0
- package/deps/couchbase-cxx-client/CMakeLists.txt +11 -1
- package/deps/couchbase-cxx-client/README.md +3 -3
- package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +4 -1
- package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +13 -1
- package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
- package/deps/couchbase-cxx-client/core/cluster.hxx +15 -5
- package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +17 -6
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/collection_query_index_manager.cxx +93 -0
- package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +11 -0
- package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +119 -0
- package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +108 -0
- package/deps/couchbase-cxx-client/core/impl/get.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +76 -0
- package/deps/couchbase-cxx-client/core/impl/query.cxx +5 -7
- package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +168 -0
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +15 -1
- package/deps/couchbase-cxx-client/core/logger/configuration.hxx +3 -0
- package/deps/couchbase-cxx-client/core/logger/level.hxx +21 -0
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -6
- package/deps/couchbase-cxx-client/core/meta/CMakeLists.txt +4 -2
- package/deps/couchbase-cxx-client/core/meta/features.hxx +31 -0
- package/deps/couchbase-cxx-client/core/meta/version.cxx +67 -5
- package/deps/couchbase-cxx-client/core/meta/version.hxx +12 -1
- package/deps/couchbase-cxx-client/core/metrics/CMakeLists.txt +4 -1
- package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +46 -5
- package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +10 -26
- package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +10 -12
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -3
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +8 -14
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +15 -8
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +7 -14
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +11 -16
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +8 -12
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +4 -3
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +21 -12
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +3 -2
- package/deps/couchbase-cxx-client/core/origin.hxx +1 -1
- package/deps/couchbase-cxx-client/core/platform/uuid.cc +1 -2
- package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -1
- package/deps/couchbase-cxx-client/core/query_context.hxx +79 -0
- package/deps/couchbase-cxx-client/core/tracing/CMakeLists.txt +3 -1
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +19 -4
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +2 -2
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +10 -4
- package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +52 -63
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +8 -3
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +163 -126
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +24 -37
- package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +51 -13
- package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +26 -1
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +21 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +40 -18
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +5 -0
- package/deps/couchbase-cxx-client/core/transactions/result.hxx +26 -0
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +48 -47
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +6 -6
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +33 -19
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +18 -2
- package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +25 -2
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +49 -56
- package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +7 -7
- package/deps/couchbase-cxx-client/core/transactions.hxx +0 -12
- package/deps/couchbase-cxx-client/core/utils/binary.hxx +1 -1
- package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +55 -0
- package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +12 -45
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +6 -7
- package/deps/couchbase-cxx-client/couchbase/collection.hxx +8 -0
- package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +218 -0
- package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +3 -0
- package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +166 -0
- package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +172 -0
- package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +129 -0
- package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +116 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +46 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +70 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +46 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +100 -0
- package/deps/couchbase-cxx-client/{core → couchbase}/management/query_index.hxx +2 -2
- package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +178 -6
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +1 -18
- package/deps/couchbase-cxx-client/couchbase/scope.hxx +5 -2
- package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +11 -4
- package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +5 -3
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +0 -6
- package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +115 -0
- package/deps/couchbase-cxx-client/examples/minimal.cxx +3 -1
- package/deps/couchbase-cxx-client/test/test_integration_crud.cxx +72 -0
- package/deps/couchbase-cxx-client/test/test_integration_management.cxx +727 -310
- package/deps/couchbase-cxx-client/test/test_integration_query.cxx +4 -8
- package/deps/couchbase-cxx-client/test/test_integration_transcoders.cxx +14 -0
- package/deps/couchbase-cxx-client/test/test_transaction_transaction_public_blocking_api.cxx +34 -19
- package/deps/couchbase-cxx-client/test/test_unit_transaction_logging.cxx +66 -22
- package/deps/couchbase-cxx-client/test/test_unit_utils.cxx +51 -0
- package/deps/couchbase-cxx-client/test/tools/tool_kv_loader.cxx +2 -2
- package/deps/couchbase-cxx-client/test/utils/integration_test_guard.cxx +2 -0
- package/deps/couchbase-cxx-client/test/utils/wait_until.cxx +4 -4
- package/deps/couchbase-cxx-client/third_party/docopt/.travis.yml +103 -0
- package/deps/couchbase-cxx-client/third_party/docopt/CMakeLists.txt +129 -0
- package/deps/couchbase-cxx-client/third_party/docopt/LICENSE-Boost-1.0 +23 -0
- package/deps/couchbase-cxx-client/third_party/docopt/LICENSE-MIT +23 -0
- package/deps/couchbase-cxx-client/third_party/docopt/README.rst +479 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt-config.cmake +1 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt.cpp +687 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt.h +98 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt.pc.in +9 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt_private.h +676 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt_util.h +122 -0
- package/deps/couchbase-cxx-client/third_party/docopt/docopt_value.h +341 -0
- package/deps/couchbase-cxx-client/third_party/docopt/examples/naval_fate.cpp +36 -0
- package/deps/couchbase-cxx-client/third_party/docopt/main.cpp +16 -0
- package/deps/couchbase-cxx-client/third_party/docopt/run_testcase.cpp +40 -0
- package/deps/couchbase-cxx-client/third_party/docopt/run_tests.py +72 -0
- package/deps/couchbase-cxx-client/third_party/docopt/testcases.docopt +957 -0
- package/deps/couchbase-cxx-client/tools/CMakeLists.txt +14 -0
- package/deps/couchbase-cxx-client/tools/cbc.cxx +65 -0
- package/deps/couchbase-cxx-client/tools/command.hxx +31 -0
- package/deps/couchbase-cxx-client/tools/command_registry.cxx +43 -0
- package/deps/couchbase-cxx-client/tools/command_registry.hxx +39 -0
- package/deps/couchbase-cxx-client/tools/get.cxx +267 -0
- package/deps/couchbase-cxx-client/tools/get.hxx +26 -0
- package/deps/couchbase-cxx-client/tools/query.cxx +441 -0
- package/deps/couchbase-cxx-client/tools/query.hxx +26 -0
- package/deps/couchbase-cxx-client/tools/utils.cxx +418 -0
- package/deps/couchbase-cxx-client/tools/utils.hxx +150 -0
- package/deps/couchbase-cxx-client/tools/version.cxx +82 -0
- package/deps/couchbase-cxx-client/tools/version.hxx +26 -0
- package/dist/authenticators.d.ts +2 -2
- package/dist/authenticators.js +1 -2
- package/dist/binding.d.ts +32 -16
- package/dist/cluster.js +14 -7
- package/dist/collection.d.ts +6 -0
- package/dist/collection.js +8 -0
- package/dist/queryexecutor.js +1 -1
- package/dist/queryindexmanager.d.ts +100 -4
- package/dist/queryindexmanager.js +344 -118
- package/dist/transactions.js +0 -2
- package/package.json +1 -1
- package/src/connection.cpp +2 -0
- package/src/connection.hpp +1 -0
- package/src/connection_autogen.cpp +16 -0
- package/src/jstocbpp_autogen.hpp +93 -23
- package/src/jstocbpp_basic.hpp +24 -0
- package/src/jstocbpp_transactions.hpp +0 -8
- package/tools/gen-bindings-js.js +1 -0
- package/tools/gen-bindings-json.py +4 -2
- package/deps/couchbase-cxx-client/core/transactions/logging.cxx +0 -107
package/CMakeLists.txt
CHANGED
@@ -17,6 +17,7 @@ include_directories(${CMAKE_JS_INC})
|
|
17
17
|
|
18
18
|
set(COUCHBASE_CXX_CLIENT_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
19
19
|
set(COUCHBASE_CXX_CLIENT_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
20
|
+
set(COUCHBASE_CXX_CLIENT_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
|
20
21
|
set(COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL ON CACHE BOOL "" FORCE)
|
21
22
|
set(COUCHBASE_CXX_CLIENT_STATIC_STDLIB ON CACHE BOOL "" FORCE)
|
22
23
|
add_subdirectory(deps/couchbase-cxx-client)
|
@@ -4,6 +4,7 @@
|
|
4
4
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
5
5
|
<mapping directory="$PROJECT_DIR$/third_party/asio" vcs="Git" />
|
6
6
|
<mapping directory="$PROJECT_DIR$/third_party/catch2" vcs="Git" />
|
7
|
+
<mapping directory="$PROJECT_DIR$/third_party/docopt" vcs="Git" />
|
7
8
|
<mapping directory="$PROJECT_DIR$/third_party/fmt" vcs="Git" />
|
8
9
|
<mapping directory="$PROJECT_DIR$/third_party/gsl" vcs="Git" />
|
9
10
|
<mapping directory="$PROJECT_DIR$/third_party/hdr_histogram_c" vcs="Git" />
|
@@ -259,11 +259,14 @@ set(couchbase_cxx_client_FILES
|
|
259
259
|
core/impl/append.cxx
|
260
260
|
core/impl/best_effort_retry_strategy.cxx
|
261
261
|
core/impl/build_deferred_query_indexes.cxx
|
262
|
+
core/impl/collection_query_index_manager.cxx
|
262
263
|
core/impl/cluster.cxx
|
263
264
|
core/impl/common_error_category.cxx
|
264
265
|
core/impl/configuration_profiles_registry.cxx
|
266
|
+
core/impl/create_query_index.cxx
|
265
267
|
core/impl/decrement.cxx
|
266
268
|
core/impl/dns_srv_tracker.cxx
|
269
|
+
core/impl/drop_query_index.cxx
|
267
270
|
core/impl/exists.cxx
|
268
271
|
core/impl/expiry.cxx
|
269
272
|
core/impl/fail_fast_retry_strategy.cxx
|
@@ -272,6 +275,7 @@ set(couchbase_cxx_client_FILES
|
|
272
275
|
core/impl/get_all_replicas.cxx
|
273
276
|
core/impl/get_and_lock.cxx
|
274
277
|
core/impl/get_and_touch.cxx
|
278
|
+
core/impl/get_all_query_indexes.cxx
|
275
279
|
core/impl/get_any_replica.cxx
|
276
280
|
core/impl/get_replica.cxx
|
277
281
|
core/impl/increment.cxx
|
@@ -293,6 +297,7 @@ set(couchbase_cxx_client_FILES
|
|
293
297
|
core/impl/search_error_category.cxx
|
294
298
|
core/impl/streaming_json_lexter_error_category.cxx
|
295
299
|
core/impl/unlock.cxx
|
300
|
+
core/impl/watch_query_indexes.cxx
|
296
301
|
core/impl/subdoc/array_add_unique.cxx
|
297
302
|
core/impl/subdoc/array_append.cxx
|
298
303
|
core/impl/subdoc/array_insert.cxx
|
@@ -325,7 +330,6 @@ set(couchbase_cxx_client_FILES
|
|
325
330
|
core/transactions/attempt_context_impl.cxx
|
326
331
|
core/transactions/binary.cxx
|
327
332
|
core/transactions/exceptions.cxx
|
328
|
-
core/transactions/logging.cxx
|
329
333
|
core/transactions/result.cxx
|
330
334
|
core/transactions/staged_mutation.cxx
|
331
335
|
core/transactions/utils.cxx
|
@@ -411,3 +415,9 @@ option(COUCHBASE_CXX_CLIENT_BUILD_EXAMPLES "Build example programs" TRUE)
|
|
411
415
|
if (COUCHBASE_CXX_CLIENT_BUILD_EXAMPLES)
|
412
416
|
add_subdirectory(examples)
|
413
417
|
endif ()
|
418
|
+
|
419
|
+
option(COUCHBASE_CXX_CLIENT_BUILD_TOOLS "Build tools" TRUE)
|
420
|
+
if (COUCHBASE_CXX_CLIENT_BUILD_TOOLS)
|
421
|
+
add_subdirectory(third_party/docopt)
|
422
|
+
add_subdirectory(tools)
|
423
|
+
endif ()
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# Couchbase C++ Client
|
2
2
|
|
3
3
|
[![license](https://img.shields.io/github/license/couchbaselabs/couchbase-cxx-client?color=brightgreen)](https://opensource.org/licenses/Apache-2.0)
|
4
|
-
[![linters](https://img.shields.io/github/actions/workflow/status/couchbaselabs/couchbase-cxx-client/linters.yml?branch=main&label=linters)](https://github.com/couchbaselabs/couchbase-cxx-client/actions?query=workflow%3Alinters)
|
5
|
-
[![sanitizers](https://img.shields.io/github/actions/workflow/status/couchbaselabs/couchbase-cxx-client/sanitizers.yml?branch=main&label=sanitizers)](https://github.com/couchbaselabs/couchbase-cxx-client/actions?query=workflow%3Asanitizers)
|
6
|
-
[![tests](https://img.shields.io/github/actions/workflow/status/couchbaselabs/couchbase-cxx-client/tests.yml?branch=main&label=tests)](https://github.com/couchbaselabs/couchbase-cxx-client/actions?query=workflow%3Atests)
|
4
|
+
[![linters](https://img.shields.io/github/actions/workflow/status/couchbaselabs/couchbase-cxx-client/linters.yml?branch=main&label=linters)](https://github.com/couchbaselabs/couchbase-cxx-client/actions?query=workflow%3Alinters+branch%3Amain)
|
5
|
+
[![sanitizers](https://img.shields.io/github/actions/workflow/status/couchbaselabs/couchbase-cxx-client/sanitizers.yml?branch=main&label=sanitizers)](https://github.com/couchbaselabs/couchbase-cxx-client/actions?query=workflow%3Asanitizers+branch%3Amain)
|
6
|
+
[![tests](https://img.shields.io/github/actions/workflow/status/couchbaselabs/couchbase-cxx-client/tests.yml?branch=main&label=tests)](https://github.com/couchbaselabs/couchbase-cxx-client/actions?query=workflow%3Atests+branch%3Amain)
|
7
7
|
|
8
8
|
This repo is under active development and is not yet ready for release as a public SDK.
|
9
9
|
|
@@ -67,7 +67,6 @@ function(set_project_warnings project_name)
|
|
67
67
|
-Wuseless-cast # warn if you perform a cast to the same type
|
68
68
|
-Wdeprecated-declarations # warn if [[deprecated]] elements being used
|
69
69
|
)
|
70
|
-
|
71
70
|
set(CLANG_WARNINGS ${COMMON_WARNINGS}
|
72
71
|
-Wshadow # warn the user if a variable declaration shadows one from a parent context
|
73
72
|
)
|
@@ -77,6 +76,10 @@ function(set_project_warnings project_name)
|
|
77
76
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
78
77
|
set(PROJECT_WARNINGS ${CLANG_WARNINGS})
|
79
78
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
79
|
+
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.0.0" AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
80
|
+
# One of the occurrences: https://github.com/chriskohlhoff/asio/pull/1176
|
81
|
+
set(GCC_WARNINGS ${GCC_WARNINGS} -Wno-error=null-dereference -Wno-error=array-bounds)
|
82
|
+
endif()
|
80
83
|
set(PROJECT_WARNINGS ${GCC_WARNINGS})
|
81
84
|
else()
|
82
85
|
message(AUTHOR_WARNING "No compiler warnings set for '${CMAKE_CXX_COMPILER_ID}' compiler.")
|
@@ -9,7 +9,19 @@ if(NOT COUCHBASE_CXX_CLIENT_GIT_REVISION)
|
|
9
9
|
else()
|
10
10
|
set(COUCHBASE_CXX_CLIENT_GIT_REVISION "unknown")
|
11
11
|
endif()
|
12
|
-
|
12
|
+
endif()
|
13
|
+
string(SUBSTRING "${COUCHBASE_CXX_CLIENT_GIT_REVISION}" 0 7 COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT)
|
14
|
+
|
15
|
+
if(NOT COUCHBASE_CXX_CLIENT_GIT_DESCRIBE)
|
16
|
+
if(GIT)
|
17
|
+
execute_process(
|
18
|
+
COMMAND git describe --always --long HEAD
|
19
|
+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
20
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE
|
21
|
+
OUTPUT_VARIABLE COUCHBASE_CXX_CLIENT_GIT_DESCRIBE)
|
22
|
+
else()
|
23
|
+
set(COUCHBASE_CXX_CLIENT_GIT_DESCRIBE "unknown")
|
24
|
+
endif()
|
13
25
|
endif()
|
14
26
|
|
15
27
|
string(TIMESTAMP COUCHBASE_CXX_CLIENT_BUILD_TIMESTAMP "%Y-%m-%d %H:%M:%S" UTC)
|
@@ -30,5 +30,6 @@ constexpr auto COUCHBASE_CXX_CLIENT_VERSION_PATCH = @couchbase_cxx_client_VERSIO
|
|
30
30
|
constexpr auto COUCHBASE_CXX_CLIENT_VERSION_BUILD = @couchbase_cxx_client_BUILD_NUMBER@;
|
31
31
|
constexpr auto COUCHBASE_CXX_CLIENT_GIT_REVISION = "@COUCHBASE_CXX_CLIENT_GIT_REVISION@";
|
32
32
|
constexpr auto COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT = "@COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT@";
|
33
|
+
constexpr auto COUCHBASE_CXX_CLIENT_GIT_DESCRIBE = "@COUCHBASE_CXX_CLIENT_GIT_DESCRIBE@";
|
33
34
|
#cmakedefine COUCHBASE_CXX_CLIENT_STATIC_STDLIB 1
|
34
35
|
#cmakedefine COUCHBASE_CXX_CLIENT_STATIC_OPENSSL 1
|
@@ -88,17 +88,18 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
88
88
|
tracer_ = std::make_shared<tracing::noop_tracer>();
|
89
89
|
}
|
90
90
|
}
|
91
|
+
tracer_->start();
|
91
92
|
// ignore the metrics options if a meter was passed in.
|
92
93
|
if (nullptr != origin_.options().meter) {
|
93
94
|
meter_ = origin_.options().meter;
|
94
95
|
} else {
|
95
|
-
|
96
96
|
if (origin_.options().enable_metrics) {
|
97
97
|
meter_ = std::make_shared<metrics::logging_meter>(ctx_, origin_.options().metrics_options);
|
98
98
|
} else {
|
99
99
|
meter_ = std::make_shared<metrics::noop_meter>();
|
100
100
|
}
|
101
101
|
}
|
102
|
+
meter_->start();
|
102
103
|
session_manager_->set_tracer(tracer_);
|
103
104
|
if (origin_.options().enable_dns_srv) {
|
104
105
|
auto [hostname, _] = origin_.next_address();
|
@@ -110,7 +111,7 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
110
111
|
[self, hostname = std::move(hostname), handler = std::forward<Handler>(handler)](origin::node_list nodes,
|
111
112
|
std::error_code ec) mutable {
|
112
113
|
if (ec) {
|
113
|
-
return handler(ec);
|
114
|
+
return self->close([ec, handler = std::forward<Handler>(handler)]() mutable { handler(ec); });
|
114
115
|
}
|
115
116
|
if (!nodes.empty()) {
|
116
117
|
self->origin_.set_nodes(std::move(nodes));
|
@@ -141,7 +142,13 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
141
142
|
self->session_manager_->close();
|
142
143
|
handler();
|
143
144
|
self->work_.reset();
|
145
|
+
if (self->tracer_) {
|
146
|
+
self->tracer_->stop();
|
147
|
+
}
|
144
148
|
self->tracer_.reset();
|
149
|
+
if (self->meter_) {
|
150
|
+
self->meter_->stop();
|
151
|
+
}
|
145
152
|
self->meter_.reset();
|
146
153
|
}));
|
147
154
|
}
|
@@ -395,7 +402,7 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
395
402
|
tls_.load_verify_file(origin_.options().trust_certificate, ec);
|
396
403
|
if (ec) {
|
397
404
|
CB_LOG_ERROR("[{}]: unable to load verify file \"{}\": {}", id_, origin_.options().trust_certificate, ec.message());
|
398
|
-
return handler(ec);
|
405
|
+
return close([ec, handler = std::forward<Handler>(handler)]() mutable { return handler(ec); });
|
399
406
|
}
|
400
407
|
}
|
401
408
|
#ifdef COUCHBASE_CXX_CLIENT_TLS_KEY_LOG_FILE
|
@@ -414,13 +421,13 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
414
421
|
tls_.use_certificate_chain_file(origin_.certificate_path(), ec);
|
415
422
|
if (ec) {
|
416
423
|
CB_LOG_ERROR("[{}]: unable to load certificate chain \"{}\": {}", id_, origin_.certificate_path(), ec.message());
|
417
|
-
return handler(ec);
|
424
|
+
return close([ec, handler = std::forward<Handler>(handler)]() mutable { return handler(ec); });
|
418
425
|
}
|
419
426
|
CB_LOG_DEBUG(R"([{}]: use TLS private key: "{}")", id_, origin_.key_path());
|
420
427
|
tls_.use_private_key_file(origin_.key_path(), asio::ssl::context::file_format::pem, ec);
|
421
428
|
if (ec) {
|
422
429
|
CB_LOG_ERROR("[{}]: unable to load private key \"{}\": {}", id_, origin_.key_path(), ec.message());
|
423
|
-
return handler(ec);
|
430
|
+
return close([ec, handler = std::forward<Handler>(handler)]() mutable { return handler(ec); });
|
424
431
|
}
|
425
432
|
}
|
426
433
|
session_ = io::mcbp_session(id_, ctx_, tls_, origin_, dns_srv_tracker_);
|
@@ -465,6 +472,9 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
465
472
|
}
|
466
473
|
});
|
467
474
|
}
|
475
|
+
if (ec) {
|
476
|
+
return self->close([ec, handler = std::forward<Handler>(handler)]() mutable { handler(ec); });
|
477
|
+
}
|
468
478
|
handler(ec);
|
469
479
|
});
|
470
480
|
}
|
@@ -39,22 +39,24 @@ build_context(Response& resp)
|
|
39
39
|
std::move(resp.ctx.http_body),
|
40
40
|
std::move(resp.ctx.path) };
|
41
41
|
}
|
42
|
-
|
43
42
|
void
|
44
43
|
initiate_build_deferred_indexes(std::shared_ptr<couchbase::core::cluster> core,
|
45
44
|
std::string bucket_name,
|
46
45
|
build_query_index_options::built options,
|
46
|
+
query_context query_ctx,
|
47
|
+
std::string collection_name,
|
47
48
|
build_deferred_query_indexes_handler&& handler)
|
48
49
|
{
|
49
50
|
core->execute(
|
50
51
|
operations::management::query_index_get_all_deferred_request{
|
51
52
|
bucket_name,
|
52
|
-
|
53
|
-
|
53
|
+
"",
|
54
|
+
collection_name,
|
55
|
+
query_ctx,
|
54
56
|
{},
|
55
57
|
options.timeout,
|
56
58
|
},
|
57
|
-
[core, bucket_name, options = std::move(options), handler = std::move(handler)](
|
59
|
+
[core, bucket_name, collection_name, options = std::move(options), query_ctx, handler = std::move(handler)](
|
58
60
|
operations::management::query_index_get_all_deferred_response resp1) mutable {
|
59
61
|
auto list_resp = std::move(resp1);
|
60
62
|
if (list_resp.ctx.ec) {
|
@@ -66,8 +68,9 @@ initiate_build_deferred_indexes(std::shared_ptr<couchbase::core::cluster> core,
|
|
66
68
|
core->execute(
|
67
69
|
operations::management::query_index_build_request{
|
68
70
|
std::move(bucket_name),
|
69
|
-
|
70
|
-
|
71
|
+
"",
|
72
|
+
collection_name,
|
73
|
+
query_ctx,
|
71
74
|
std::move(list_resp.index_names),
|
72
75
|
{},
|
73
76
|
options.timeout,
|
@@ -78,4 +81,12 @@ initiate_build_deferred_indexes(std::shared_ptr<couchbase::core::cluster> core,
|
|
78
81
|
});
|
79
82
|
});
|
80
83
|
}
|
84
|
+
void
|
85
|
+
initiate_build_deferred_indexes(std::shared_ptr<couchbase::core::cluster> core,
|
86
|
+
std::string bucket_name,
|
87
|
+
build_query_index_options::built options,
|
88
|
+
build_deferred_query_indexes_handler&& handler)
|
89
|
+
{
|
90
|
+
return initiate_build_deferred_indexes(core, std::move(bucket_name), options, {}, "", std::move(handler));
|
91
|
+
}
|
81
92
|
} // namespace couchbase::core::impl
|
@@ -169,7 +169,7 @@ initiate_cluster_connect(asio::io_service& io,
|
|
169
169
|
auto c = couchbase::cluster(core);
|
170
170
|
// create txns as we want to start cleanup immediately if configured with metadata_collection
|
171
171
|
[[maybe_unused]] std::shared_ptr<couchbase::transactions::transactions> t = c.transactions();
|
172
|
-
handler(c, {});
|
172
|
+
handler(std::move(c), {});
|
173
173
|
});
|
174
174
|
}
|
175
175
|
|
@@ -0,0 +1,93 @@
|
|
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
|
+
#include <core/query_context.hxx>
|
19
|
+
#include <couchbase/collection_query_index_manager.hxx>
|
20
|
+
|
21
|
+
namespace couchbase
|
22
|
+
{
|
23
|
+
|
24
|
+
void
|
25
|
+
collection_query_index_manager::get_all_indexes(const get_all_query_indexes_options& options, get_all_indexes_handler&& handler) const
|
26
|
+
{
|
27
|
+
return core::impl::initiate_get_all_query_indexes(core_,
|
28
|
+
"",
|
29
|
+
options.build(),
|
30
|
+
core::query_context(bucket_name_, scope_name_),
|
31
|
+
collection_name_,
|
32
|
+
std::forward<get_all_indexes_handler>(handler));
|
33
|
+
}
|
34
|
+
|
35
|
+
void
|
36
|
+
collection_query_index_manager::create_index(std::string index_name,
|
37
|
+
std::vector<std::string> fields,
|
38
|
+
const create_query_index_options& options,
|
39
|
+
create_query_index_handler&& handler) const
|
40
|
+
{
|
41
|
+
return core::impl::initiate_create_query_index(core_,
|
42
|
+
"",
|
43
|
+
std::move(index_name),
|
44
|
+
std::move(fields),
|
45
|
+
options.build(),
|
46
|
+
{ bucket_name_, scope_name_ },
|
47
|
+
collection_name_,
|
48
|
+
std::forward<create_query_index_handler>(handler));
|
49
|
+
}
|
50
|
+
|
51
|
+
void
|
52
|
+
collection_query_index_manager::create_primary_index(const create_primary_query_index_options& options,
|
53
|
+
create_query_index_handler&& handler) const
|
54
|
+
{
|
55
|
+
return core::impl::initiate_create_primary_query_index(
|
56
|
+
core_, "", options.build(), { bucket_name_, scope_name_ }, collection_name_, std::move(handler));
|
57
|
+
}
|
58
|
+
|
59
|
+
void
|
60
|
+
collection_query_index_manager::drop_primary_index(const drop_primary_query_index_options& options,
|
61
|
+
drop_query_index_handler&& handler) const
|
62
|
+
{
|
63
|
+
return core::impl::initiate_drop_primary_query_index(
|
64
|
+
core_, "", options.build(), { bucket_name_, scope_name_ }, collection_name_, std::move(handler));
|
65
|
+
}
|
66
|
+
void
|
67
|
+
collection_query_index_manager::drop_index(std::string index_name,
|
68
|
+
const drop_query_index_options& options,
|
69
|
+
drop_query_index_handler&& handler) const
|
70
|
+
{
|
71
|
+
return core::impl::initiate_drop_query_index(
|
72
|
+
core_, "", std::move(index_name), options.build(), { bucket_name_, scope_name_ }, collection_name_, std::move(handler));
|
73
|
+
}
|
74
|
+
void
|
75
|
+
collection_query_index_manager::build_deferred_indexes(const build_query_index_options& options,
|
76
|
+
build_deferred_query_indexes_handler&& handler) const
|
77
|
+
{
|
78
|
+
return core::impl::initiate_build_deferred_indexes(core_,
|
79
|
+
"",
|
80
|
+
options.build(),
|
81
|
+
{ bucket_name_, scope_name_ },
|
82
|
+
collection_name_,
|
83
|
+
std::forward<build_deferred_query_indexes_handler>(handler));
|
84
|
+
}
|
85
|
+
void
|
86
|
+
collection_query_index_manager::watch_indexes(std::vector<std::string> index_names,
|
87
|
+
const watch_query_indexes_options& options,
|
88
|
+
watch_query_indexes_handler&& handler) const
|
89
|
+
{
|
90
|
+
return core::impl::initiate_watch_query_indexes(
|
91
|
+
core_, "", std::move(index_names), options.build(), { bucket_name_, scope_name_ }, collection_name_, std::move(handler));
|
92
|
+
}
|
93
|
+
} // namespace couchbase
|
@@ -59,4 +59,15 @@ configuration_profiles_registry::apply_profile(const std::string& name, couchbas
|
|
59
59
|
|
60
60
|
profile->apply(options);
|
61
61
|
}
|
62
|
+
|
63
|
+
auto
|
64
|
+
configuration_profiles_registry::available_profiles() -> std::vector<std::string>
|
65
|
+
{
|
66
|
+
std::vector<std::string> profile_names;
|
67
|
+
std::scoped_lock lock(registry::store_mutex);
|
68
|
+
for (const auto& [name, _] : registry::store) {
|
69
|
+
profile_names.push_back(name);
|
70
|
+
}
|
71
|
+
return profile_names;
|
72
|
+
}
|
62
73
|
} // namespace couchbase
|
@@ -0,0 +1,119 @@
|
|
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
|
+
#include <couchbase/error_codes.hxx>
|
19
|
+
#include <couchbase/query_index_manager.hxx>
|
20
|
+
|
21
|
+
#include "core/cluster.hxx"
|
22
|
+
#include "core/operations/management/query_index_create.hxx"
|
23
|
+
|
24
|
+
namespace couchbase::core::impl
|
25
|
+
{
|
26
|
+
template<typename Response>
|
27
|
+
static manager_error_context
|
28
|
+
build_context(Response& resp)
|
29
|
+
{
|
30
|
+
return { resp.ctx.ec,
|
31
|
+
resp.ctx.last_dispatched_to,
|
32
|
+
resp.ctx.last_dispatched_from,
|
33
|
+
resp.ctx.retry_attempts,
|
34
|
+
std::move(resp.ctx.retry_reasons),
|
35
|
+
std::move(resp.ctx.client_context_id),
|
36
|
+
resp.ctx.http_status,
|
37
|
+
std::move(resp.ctx.http_body),
|
38
|
+
std::move(resp.ctx.path) };
|
39
|
+
}
|
40
|
+
|
41
|
+
void
|
42
|
+
initiate_create_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
43
|
+
std::string bucket_name,
|
44
|
+
std::string index_name,
|
45
|
+
std::vector<std::string> fields,
|
46
|
+
couchbase::create_query_index_options::built options,
|
47
|
+
query_context query_ctx,
|
48
|
+
std::string collection_name,
|
49
|
+
create_query_index_handler&& handler)
|
50
|
+
{
|
51
|
+
core->execute(
|
52
|
+
operations::management::query_index_create_request{
|
53
|
+
bucket_name,
|
54
|
+
"",
|
55
|
+
collection_name,
|
56
|
+
index_name,
|
57
|
+
fields,
|
58
|
+
query_ctx,
|
59
|
+
false,
|
60
|
+
options.ignore_if_exists,
|
61
|
+
options.condition,
|
62
|
+
options.deferred,
|
63
|
+
options.num_replicas,
|
64
|
+
{},
|
65
|
+
options.timeout,
|
66
|
+
},
|
67
|
+
[core, bucket_name, options = std::move(options), handler = std::move(handler)](
|
68
|
+
operations::management::query_index_create_response resp) { handler(build_context(resp)); });
|
69
|
+
}
|
70
|
+
|
71
|
+
void
|
72
|
+
initiate_create_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
73
|
+
std::string bucket_name,
|
74
|
+
std::string index_name,
|
75
|
+
std::vector<std::string> fields,
|
76
|
+
couchbase::create_query_index_options::built options,
|
77
|
+
create_query_index_handler&& handler)
|
78
|
+
{
|
79
|
+
initiate_create_query_index(
|
80
|
+
core, std::move(bucket_name), std::move(index_name), std::move(fields), options, {}, "", std::move(handler));
|
81
|
+
}
|
82
|
+
|
83
|
+
void
|
84
|
+
initiate_create_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
85
|
+
std::string bucket_name,
|
86
|
+
couchbase::create_primary_query_index_options::built options,
|
87
|
+
query_context query_ctx,
|
88
|
+
std::string collection_name,
|
89
|
+
create_primary_query_index_handler&& handler)
|
90
|
+
{
|
91
|
+
core->execute(
|
92
|
+
operations::management::query_index_create_request{
|
93
|
+
bucket_name,
|
94
|
+
"",
|
95
|
+
collection_name,
|
96
|
+
options.index_name.value_or(""),
|
97
|
+
{},
|
98
|
+
query_ctx,
|
99
|
+
true,
|
100
|
+
options.ignore_if_exists,
|
101
|
+
{},
|
102
|
+
options.deferred,
|
103
|
+
options.num_replicas,
|
104
|
+
{},
|
105
|
+
options.timeout,
|
106
|
+
},
|
107
|
+
[core, bucket_name, options = std::move(options), handler = std::move(handler)](
|
108
|
+
operations::management::query_index_create_response resp) { handler(build_context(resp)); });
|
109
|
+
}
|
110
|
+
|
111
|
+
void
|
112
|
+
initiate_create_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
113
|
+
std::string bucket_name,
|
114
|
+
couchbase::create_primary_query_index_options::built options,
|
115
|
+
create_primary_query_index_handler&& handler)
|
116
|
+
{
|
117
|
+
initiate_create_primary_query_index(core, std::move(bucket_name), std::move(options), {}, "", std::move(handler));
|
118
|
+
}
|
119
|
+
} // namespace couchbase::core::impl
|
@@ -0,0 +1,108 @@
|
|
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
|
+
#include "couchbase/error_codes.hxx"
|
19
|
+
#include "couchbase/query_index_manager.hxx"
|
20
|
+
|
21
|
+
#include "core/cluster.hxx"
|
22
|
+
#include "core/operations/management/query_index_drop.hxx"
|
23
|
+
|
24
|
+
namespace couchbase::core::impl
|
25
|
+
{
|
26
|
+
template<typename Response>
|
27
|
+
static manager_error_context
|
28
|
+
build_context(Response& resp)
|
29
|
+
{
|
30
|
+
return { resp.ctx.ec,
|
31
|
+
resp.ctx.last_dispatched_to,
|
32
|
+
resp.ctx.last_dispatched_from,
|
33
|
+
resp.ctx.retry_attempts,
|
34
|
+
std::move(resp.ctx.retry_reasons),
|
35
|
+
std::move(resp.ctx.client_context_id),
|
36
|
+
resp.ctx.http_status,
|
37
|
+
std::move(resp.ctx.http_body),
|
38
|
+
std::move(resp.ctx.path) };
|
39
|
+
}
|
40
|
+
|
41
|
+
void
|
42
|
+
initiate_drop_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
43
|
+
std::string bucket_name,
|
44
|
+
std::string index_name,
|
45
|
+
drop_query_index_options::built options,
|
46
|
+
query_context query_context,
|
47
|
+
std::string collection_name,
|
48
|
+
drop_query_index_handler&& handler)
|
49
|
+
{
|
50
|
+
core->execute(
|
51
|
+
operations::management::query_index_drop_request{
|
52
|
+
bucket_name,
|
53
|
+
"",
|
54
|
+
collection_name,
|
55
|
+
index_name,
|
56
|
+
query_context,
|
57
|
+
false,
|
58
|
+
options.ignore_if_not_exists,
|
59
|
+
{},
|
60
|
+
options.timeout,
|
61
|
+
},
|
62
|
+
[core, bucket_name, options = std::move(options), handler = std::move(handler)](
|
63
|
+
operations::management::query_index_drop_response resp) { handler(build_context(resp)); });
|
64
|
+
}
|
65
|
+
|
66
|
+
void
|
67
|
+
initiate_drop_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
68
|
+
std::string bucket_name,
|
69
|
+
std::string index_name,
|
70
|
+
couchbase::drop_query_index_options::built options,
|
71
|
+
drop_query_index_handler&& handler)
|
72
|
+
{
|
73
|
+
initiate_drop_query_index(core, std::move(bucket_name), std::move(index_name), options, {}, "", std::move(handler));
|
74
|
+
}
|
75
|
+
|
76
|
+
void
|
77
|
+
initiate_drop_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
78
|
+
std::string bucket_name,
|
79
|
+
couchbase::drop_primary_query_index_options::built options,
|
80
|
+
query_context query_ctx,
|
81
|
+
std::string collection_name,
|
82
|
+
drop_primary_query_index_handler&& handler)
|
83
|
+
{
|
84
|
+
core->execute(
|
85
|
+
operations::management::query_index_drop_request{
|
86
|
+
bucket_name,
|
87
|
+
"",
|
88
|
+
collection_name,
|
89
|
+
options.index_name.value_or(""),
|
90
|
+
query_ctx,
|
91
|
+
true,
|
92
|
+
options.ignore_if_not_exists,
|
93
|
+
{},
|
94
|
+
options.timeout,
|
95
|
+
},
|
96
|
+
[core, bucket_name, options = std::move(options), handler = std::move(handler)](
|
97
|
+
operations::management::query_index_drop_response resp) { handler(build_context(resp)); });
|
98
|
+
}
|
99
|
+
void
|
100
|
+
initiate_drop_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
|
101
|
+
std::string bucket_name,
|
102
|
+
couchbase::drop_primary_query_index_options::built options,
|
103
|
+
drop_primary_query_index_handler&& handler)
|
104
|
+
{
|
105
|
+
return initiate_drop_primary_query_index(core, std::move(bucket_name), options, {}, "", std::move(handler));
|
106
|
+
}
|
107
|
+
|
108
|
+
} // namespace couchbase::core::impl
|
@@ -59,7 +59,7 @@ initiate_get_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
59
59
|
},
|
60
60
|
[handler = std::move(handler)](operations::get_projected_response&& resp) mutable {
|
61
61
|
std::optional<std::chrono::system_clock::time_point> expiry_time{};
|
62
|
-
if (resp.expiry) {
|
62
|
+
if (resp.expiry && resp.expiry.value() > 0) {
|
63
63
|
expiry_time.emplace(std::chrono::seconds{ resp.expiry.value() });
|
64
64
|
}
|
65
65
|
return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, expiry_time });
|