couchbase 4.6.1 → 4.7.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/CMakeLists.txt +2 -1
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +23 -5
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/CMakeLists.txt +24 -11
- package/deps/couchbase-cxx-client/README.md +2 -2
- package/deps/couchbase-cxx-client/cmake/APKBUILD.in +17 -1
- package/deps/couchbase-cxx-client/cmake/Bundler.cmake +9 -1
- package/deps/couchbase-cxx-client/cmake/Cache.cmake +48 -19
- package/deps/couchbase-cxx-client/cmake/CompilerOptions.cmake +3 -1
- package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +10 -2
- package/deps/couchbase-cxx-client/cmake/Packaging.cmake +48 -8
- package/deps/couchbase-cxx-client/cmake/ThirdPartyDependencies.cmake +41 -0
- package/deps/couchbase-cxx-client/cmake/build_config.hxx.in +2 -0
- package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.spec.in +18 -0
- package/deps/couchbase-cxx-client/cmake/debian/control +6 -1
- package/deps/couchbase-cxx-client/cmake/debian/rules +1 -0
- package/deps/couchbase-cxx-client/cmake/tarball_glob.txt +10 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_meter.cxx +1 -0
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.cxx +45 -43
- package/deps/couchbase-cxx-client/core/app_telemetry_reporter.hxx +4 -3
- package/deps/couchbase-cxx-client/core/bucket.cxx +128 -13
- package/deps/couchbase-cxx-client/core/bucket.hxx +12 -2
- package/deps/couchbase-cxx-client/core/cluster.cxx +304 -152
- package/deps/couchbase-cxx-client/core/cluster.hxx +32 -0
- package/deps/couchbase-cxx-client/core/cluster_credentials.cxx +25 -0
- package/deps/couchbase-cxx-client/core/cluster_credentials.hxx +5 -0
- package/deps/couchbase-cxx-client/core/cluster_label_listener.cxx +72 -0
- package/deps/couchbase-cxx-client/core/cluster_label_listener.hxx +46 -0
- package/deps/couchbase-cxx-client/core/cluster_options.hxx +4 -0
- package/deps/couchbase-cxx-client/core/deprecation_utils.hxx +26 -0
- package/deps/couchbase-cxx-client/core/error.hxx +27 -0
- package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +0 -2
- package/deps/couchbase-cxx-client/core/http_component.cxx +12 -48
- package/deps/couchbase-cxx-client/core/impl/analytics.cxx +3 -2
- package/deps/couchbase-cxx-client/core/impl/analytics.hxx +2 -1
- package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +249 -137
- package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +134 -58
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +87 -35
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +560 -245
- package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +89 -49
- package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +3 -3
- package/deps/couchbase-cxx-client/core/impl/error.cxx +20 -13
- package/deps/couchbase-cxx-client/core/impl/error.hxx +15 -10
- package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +2 -1
- package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/observability_recorder.cxx +161 -0
- package/deps/couchbase-cxx-client/core/impl/observability_recorder.hxx +77 -0
- package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/public_bucket.cxx +31 -7
- package/deps/couchbase-cxx-client/core/impl/public_cluster.cxx +107 -19
- package/deps/couchbase-cxx-client/core/impl/query.cxx +6 -3
- package/deps/couchbase-cxx-client/core/impl/query.hxx +3 -1
- package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +267 -102
- package/deps/couchbase-cxx-client/core/impl/scope.cxx +53 -11
- package/deps/couchbase-cxx-client/core/impl/search.cxx +8 -4
- package/deps/couchbase-cxx-client/core/impl/search.hxx +6 -2
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +131 -41
- package/deps/couchbase-cxx-client/core/impl/with_cancellation.hxx +75 -0
- package/deps/couchbase-cxx-client/core/io/config_tracker.cxx +9 -9
- package/deps/couchbase-cxx-client/core/io/config_tracker.hxx +2 -1
- package/deps/couchbase-cxx-client/core/io/http_command.hxx +98 -49
- package/deps/couchbase-cxx-client/core/io/http_context.hxx +2 -0
- package/deps/couchbase-cxx-client/core/io/http_session.cxx +23 -10
- package/deps/couchbase-cxx-client/core/io/http_session.hxx +17 -9
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +163 -228
- package/deps/couchbase-cxx-client/core/io/http_traits.hxx +0 -7
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +123 -44
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +251 -26
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +9 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_traits.hxx +0 -8
- package/deps/couchbase-cxx-client/core/io/streams.cxx +3 -3
- package/deps/couchbase-cxx-client/core/io/streams.hxx +3 -2
- package/deps/couchbase-cxx-client/core/meta/features.hxx +15 -0
- package/deps/couchbase-cxx-client/core/meta/version.cxx +13 -0
- package/deps/couchbase-cxx-client/core/meta/version.hxx +3 -0
- package/deps/couchbase-cxx-client/core/metrics/constants.hxx +23 -0
- package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +5 -5
- package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.cxx +65 -63
- package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.hxx +12 -10
- package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_append.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_get.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +77 -27
- package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +83 -2
- package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +0 -9
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +46 -4
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +121 -43
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +0 -5
- package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_search.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +0 -7
- package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +0 -6
- package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +0 -4
- package/deps/couchbase-cxx-client/core/operations/document_view.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_view.hxx +10 -13
- package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +68 -30
- 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.hxx +2 -0
- 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.hxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/operation_traits.hxx +6 -0
- package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
- package/deps/couchbase-cxx-client/core/operations_fwd.hxx +8 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +67 -12
- package/deps/couchbase-cxx-client/core/origin.hxx +13 -8
- package/deps/couchbase-cxx-client/core/orphan_reporter.cxx +164 -0
- package/deps/couchbase-cxx-client/core/orphan_reporter.hxx +65 -0
- package/deps/couchbase-cxx-client/core/sasl/CMakeLists.txt +1 -0
- package/deps/couchbase-cxx-client/core/sasl/client.cc +6 -0
- package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +2 -1
- package/deps/couchbase-cxx-client/core/sasl/mechanism.h +2 -1
- package/deps/couchbase-cxx-client/core/sasl/oauthbearer/oauthbearer.cc +41 -0
- package/deps/couchbase-cxx-client/core/sasl/oauthbearer/oauthbearer.h +47 -0
- package/deps/couchbase-cxx-client/core/tls_context_provider.cxx +44 -0
- package/deps/couchbase-cxx-client/core/tls_context_provider.hxx +44 -0
- package/deps/couchbase-cxx-client/core/tracing/attribute_helpers.hxx +45 -0
- package/deps/couchbase-cxx-client/core/tracing/constants.hxx +148 -68
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +0 -3
- package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +122 -170
- package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.cxx +17 -24
- package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.hxx +8 -10
- package/deps/couchbase-cxx-client/core/tracing/wrapper_sdk_tracer.cxx +114 -0
- package/deps/couchbase-cxx-client/core/tracing/wrapper_sdk_tracer.hxx +85 -0
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +16 -14
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +1 -1
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +1 -2
- package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +12 -0
- package/deps/couchbase-cxx-client/core/utils/concurrent_fixed_priority_queue.hxx +102 -0
- package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +2 -0
- package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +47 -0
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +16 -0
- package/deps/couchbase-cxx-client/couchbase/collection.hxx +60 -15
- package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +48 -48
- package/deps/couchbase-cxx-client/couchbase/jwt_authenticator.hxx +52 -0
- package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +2 -1
- package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +75 -80
- package/deps/couchbase-cxx-client/couchbase/network_options.hxx +19 -0
- package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +15 -17
- package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +2 -2
- package/dist/analyticsexecutor.d.ts +15 -0
- package/dist/analyticsexecutor.js +79 -50
- package/dist/analyticsindexmanager.d.ts +66 -0
- package/dist/analyticsindexmanager.js +404 -277
- package/dist/analyticstypes.d.ts +5 -0
- package/dist/authenticators.d.ts +34 -1
- package/dist/authenticators.js +19 -1
- package/dist/binarycollection.d.ts +17 -0
- package/dist/binding.d.ts +245 -228
- package/dist/bindingutilities.js +1 -1
- package/dist/bucket.d.ts +8 -0
- package/dist/bucket.js +8 -0
- package/dist/bucketmanager.d.ts +30 -0
- package/dist/bucketmanager.js +128 -69
- package/dist/cluster.d.ts +45 -0
- package/dist/cluster.js +133 -21
- package/dist/collection.d.ts +75 -2
- package/dist/collection.js +772 -551
- package/dist/collectionmanager.d.ts +34 -0
- package/dist/collectionmanager.js +172 -89
- package/dist/couchbase.d.ts +5 -0
- package/dist/couchbase.js +5 -0
- package/dist/datastructures.js +310 -97
- package/dist/errors.d.ts +8 -0
- package/dist/errors.js +12 -1
- package/dist/eventingfunctionmanager.d.ts +42 -0
- package/dist/eventingfunctionmanager.js +172 -100
- package/dist/logger.d.ts +192 -0
- package/dist/logger.js +213 -0
- package/dist/loggingmeter.d.ts +120 -0
- package/dist/loggingmeter.js +226 -0
- package/dist/metrics.d.ts +33 -0
- package/dist/metrics.js +5 -0
- package/dist/observability.d.ts +60 -0
- package/dist/observability.js +86 -0
- package/dist/observabilityhandler.d.ts +176 -0
- package/dist/observabilityhandler.js +733 -0
- package/dist/observabilitytypes.d.ts +320 -0
- package/dist/observabilitytypes.js +362 -0
- package/dist/observabilityutilities.d.ts +60 -0
- package/dist/observabilityutilities.js +175 -0
- package/dist/otelmeter.d.ts +51 -0
- package/dist/otelmeter.js +100 -0
- package/dist/oteltracer.d.ts +69 -0
- package/dist/oteltracer.js +141 -0
- package/dist/queryexecutor.d.ts +16 -0
- package/dist/queryexecutor.js +128 -86
- package/dist/queryindexmanager.d.ts +29 -0
- package/dist/queryindexmanager.js +277 -150
- package/dist/querytypes.d.ts +5 -0
- package/dist/scope.js +2 -2
- package/dist/scopeeventingfunctionmanager.d.ts +5 -0
- package/dist/scopeeventingfunctionmanager.js +217 -119
- package/dist/scopesearchindexmanager.d.ts +5 -0
- package/dist/scopesearchindexmanager.js +295 -166
- package/dist/sdspecs.js +6 -1
- package/dist/searchexecutor.d.ts +15 -0
- package/dist/searchexecutor.js +54 -26
- package/dist/searchindexmanager.d.ts +54 -0
- package/dist/searchindexmanager.js +235 -142
- package/dist/searchtypes.d.ts +5 -0
- package/dist/thresholdlogging.d.ts +301 -0
- package/dist/thresholdlogging.js +657 -0
- package/dist/tracing.d.ts +55 -0
- package/dist/tracing.js +2 -0
- package/dist/usermanager.d.ts +46 -0
- package/dist/usermanager.js +199 -118
- package/dist/utilities.d.ts +4 -0
- package/dist/utilities.js +11 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +7 -0
- package/dist/viewexecutor.d.ts +15 -0
- package/dist/viewexecutor.js +54 -29
- package/dist/viewindexmanager.d.ts +30 -0
- package/dist/viewindexmanager.js +129 -100
- package/dist/viewtypes.d.ts +5 -0
- package/package.json +19 -9
- package/scripts/prebuilds.js +1 -1
- package/scripts/updateVersion.js +26 -0
- package/src/connection.cpp +79 -98
- package/src/connection.hpp +46 -38
- package/src/connection_autogen.cpp +1236 -292
- package/src/jstocbpp_autogen.hpp +1117 -313
- package/src/jstocbpp_basic.hpp +73 -0
- package/src/jstocbpp_defs.hpp +37 -9
- package/src/jstocbpp_errors.hpp +37 -11
- package/tools/gen-bindings-js.js +100 -22
- package/tools/gen-bindings-json.py +40 -6
- package/src/transcoder.hpp +0 -96
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include "core/cluster.hxx"
|
|
19
19
|
|
|
20
20
|
#include "core/impl/error.hxx"
|
|
21
|
+
#include "core/impl/observability_recorder.hxx"
|
|
21
22
|
#include "core/operations/management/collection_create.hxx"
|
|
22
23
|
#include "core/operations/management/collection_drop.hxx"
|
|
23
24
|
#include "core/operations/management/collection_update.hxx"
|
|
@@ -25,6 +26,8 @@
|
|
|
25
26
|
#include "core/operations/management/scope_drop.hxx"
|
|
26
27
|
#include "core/operations/management/scope_get_all.hxx"
|
|
27
28
|
#include "core/topology/collections_manifest.hxx"
|
|
29
|
+
#include "core/tracing/constants.hxx"
|
|
30
|
+
#include "core/tracing/tracer_wrapper.hxx"
|
|
28
31
|
|
|
29
32
|
#include <couchbase/collection_manager.hxx>
|
|
30
33
|
#include <couchbase/create_collection_options.hxx>
|
|
@@ -93,15 +96,19 @@ public:
|
|
|
93
96
|
const couchbase::drop_collection_options::built& options,
|
|
94
97
|
couchbase::drop_collection_handler&& handler) const
|
|
95
98
|
{
|
|
99
|
+
auto obs_rec =
|
|
100
|
+
create_observability_recorder(core::tracing::operation::mgr_collections_drop_collection,
|
|
101
|
+
scope_name,
|
|
102
|
+
collection_name,
|
|
103
|
+
options.parent_span);
|
|
104
|
+
core::operations::management::collection_drop_request request{
|
|
105
|
+
bucket_name_, std::move(scope_name), std::move(collection_name),
|
|
106
|
+
{}, options.timeout, obs_rec->operation_span(),
|
|
107
|
+
};
|
|
96
108
|
return core_.execute(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
std::move(collection_name),
|
|
101
|
-
{},
|
|
102
|
-
options.timeout,
|
|
103
|
-
},
|
|
104
|
-
[handler = std::move(handler)](const auto& resp) mutable {
|
|
109
|
+
std::move(request),
|
|
110
|
+
[obs_rec = std::move(obs_rec), handler = std::move(handler)](const auto& resp) mutable {
|
|
111
|
+
obs_rec->finish(resp.ctx.retry_attempts, resp.ctx.ec);
|
|
105
112
|
return handler(core::impl::make_error(resp.ctx));
|
|
106
113
|
});
|
|
107
114
|
}
|
|
@@ -112,17 +119,20 @@ public:
|
|
|
112
119
|
const couchbase::update_collection_options::built& options,
|
|
113
120
|
couchbase::update_collection_handler&& handler) const
|
|
114
121
|
{
|
|
122
|
+
auto obs_rec =
|
|
123
|
+
create_observability_recorder(core::tracing::operation::mgr_collections_update_collection,
|
|
124
|
+
scope_name,
|
|
125
|
+
collection_name,
|
|
126
|
+
options.parent_span);
|
|
127
|
+
core::operations::management::collection_update_request request{
|
|
128
|
+
bucket_name_, std::move(scope_name), std::move(collection_name),
|
|
129
|
+
settings.max_expiry, settings.history, {},
|
|
130
|
+
options.timeout, obs_rec->operation_span(),
|
|
131
|
+
};
|
|
115
132
|
return core_.execute(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
std::move(collection_name),
|
|
120
|
-
settings.max_expiry,
|
|
121
|
-
settings.history,
|
|
122
|
-
{},
|
|
123
|
-
options.timeout,
|
|
124
|
-
},
|
|
125
|
-
[handler = std::move(handler)](const auto& resp) mutable {
|
|
133
|
+
std::move(request),
|
|
134
|
+
[obs_rec = std::move(obs_rec), handler = std::move(handler)](const auto& resp) mutable {
|
|
135
|
+
obs_rec->finish(resp.ctx.retry_attempts, resp.ctx.ec);
|
|
126
136
|
return handler(core::impl::make_error(resp.ctx));
|
|
127
137
|
});
|
|
128
138
|
}
|
|
@@ -133,17 +143,20 @@ public:
|
|
|
133
143
|
const couchbase::create_collection_options::built& options,
|
|
134
144
|
couchbase::update_collection_handler&& handler) const
|
|
135
145
|
{
|
|
146
|
+
auto obs_rec =
|
|
147
|
+
create_observability_recorder(core::tracing::operation::mgr_collections_create_collection,
|
|
148
|
+
scope_name,
|
|
149
|
+
collection_name,
|
|
150
|
+
options.parent_span);
|
|
151
|
+
core::operations::management::collection_create_request request{
|
|
152
|
+
bucket_name_, std::move(scope_name), std::move(collection_name),
|
|
153
|
+
settings.max_expiry, settings.history, {},
|
|
154
|
+
options.timeout, obs_rec->operation_span(),
|
|
155
|
+
};
|
|
136
156
|
return core_.execute(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
std::move(collection_name),
|
|
141
|
-
settings.max_expiry,
|
|
142
|
-
settings.history,
|
|
143
|
-
{},
|
|
144
|
-
options.timeout,
|
|
145
|
-
},
|
|
146
|
-
[handler = std::move(handler)](const auto& resp) mutable {
|
|
157
|
+
std::move(request),
|
|
158
|
+
[obs_rec = std::move(obs_rec), handler = std::move(handler)](const auto& resp) mutable {
|
|
159
|
+
obs_rec->finish(resp.ctx.retry_attempts, resp.ctx.ec);
|
|
147
160
|
return handler(core::impl::make_error(resp.ctx));
|
|
148
161
|
});
|
|
149
162
|
}
|
|
@@ -151,13 +164,18 @@ public:
|
|
|
151
164
|
void get_all_scopes(const get_all_scopes_options::built& options,
|
|
152
165
|
get_all_scopes_handler&& handler) const
|
|
153
166
|
{
|
|
167
|
+
auto obs_rec = create_observability_recorder(
|
|
168
|
+
core::tracing::operation::mgr_collections_get_all_scopes, {}, {}, options.parent_span);
|
|
169
|
+
core::operations::management::scope_get_all_request request{
|
|
170
|
+
bucket_name_,
|
|
171
|
+
{},
|
|
172
|
+
options.timeout,
|
|
173
|
+
obs_rec->operation_span(),
|
|
174
|
+
};
|
|
154
175
|
return core_.execute(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
options.timeout,
|
|
159
|
-
},
|
|
160
|
-
[handler = std::move(handler)](auto resp) mutable {
|
|
176
|
+
std::move(request),
|
|
177
|
+
[obs_rec = std::move(obs_rec), handler = std::move(handler)](auto resp) mutable {
|
|
178
|
+
obs_rec->finish(resp.ctx.retry_attempts, resp.ctx.ec);
|
|
161
179
|
return handler(core::impl::make_error(resp.ctx), map_scope_specs(resp.manifest));
|
|
162
180
|
});
|
|
163
181
|
}
|
|
@@ -166,14 +184,15 @@ public:
|
|
|
166
184
|
const couchbase::create_scope_options::built& options,
|
|
167
185
|
couchbase::create_scope_handler&& handler) const
|
|
168
186
|
{
|
|
187
|
+
auto obs_rec = create_observability_recorder(
|
|
188
|
+
core::tracing::operation::mgr_collections_create_scope, scope_name, {}, options.parent_span);
|
|
189
|
+
core::operations::management::scope_create_request request{
|
|
190
|
+
bucket_name_, std::move(scope_name), {}, options.timeout, obs_rec->operation_span(),
|
|
191
|
+
};
|
|
169
192
|
return core_.execute(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
{},
|
|
174
|
-
options.timeout,
|
|
175
|
-
},
|
|
176
|
-
[handler = std::move(handler)](const auto& resp) mutable {
|
|
193
|
+
std::move(request),
|
|
194
|
+
[obs_rec = std::move(obs_rec), handler = std::move(handler)](const auto& resp) mutable {
|
|
195
|
+
obs_rec->finish(resp.ctx.retry_attempts, resp.ctx.ec);
|
|
177
196
|
return handler(core::impl::make_error(resp.ctx));
|
|
178
197
|
});
|
|
179
198
|
}
|
|
@@ -182,19 +201,40 @@ public:
|
|
|
182
201
|
const couchbase::drop_scope_options::built& options,
|
|
183
202
|
couchbase::drop_scope_handler&& handler) const
|
|
184
203
|
{
|
|
185
|
-
|
|
186
|
-
core::
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
[handler = std::move(handler)](const auto& resp) mutable {
|
|
204
|
+
auto obs_rec = create_observability_recorder(
|
|
205
|
+
core::tracing::operation::mgr_collections_drop_scope, scope_name, {}, options.parent_span);
|
|
206
|
+
core::operations::management::scope_drop_request request{
|
|
207
|
+
bucket_name_, std::move(scope_name), {}, options.timeout, obs_rec->operation_span(),
|
|
208
|
+
};
|
|
209
|
+
return core_.execute(
|
|
210
|
+
std::move(request),
|
|
211
|
+
[obs_rec = std::move(obs_rec), handler = std::move(handler)](const auto& resp) mutable {
|
|
212
|
+
obs_rec->finish(resp.ctx.retry_attempts, resp.ctx.ec);
|
|
193
213
|
return handler(core::impl::make_error(resp.ctx));
|
|
194
214
|
});
|
|
195
215
|
}
|
|
196
216
|
|
|
197
217
|
private:
|
|
218
|
+
[[nodiscard]] auto create_observability_recorder(
|
|
219
|
+
const std::string& operation_name,
|
|
220
|
+
const std::optional<std::string>& scope_name,
|
|
221
|
+
const std::optional<std::string>& collection_name,
|
|
222
|
+
const std::shared_ptr<tracing::request_span>& parent_span) const
|
|
223
|
+
-> std::unique_ptr<core::impl::observability_recorder>
|
|
224
|
+
{
|
|
225
|
+
auto obs_rec = core::impl::observability_recorder::create(
|
|
226
|
+
operation_name, parent_span, core_.tracer(), core_.meter());
|
|
227
|
+
obs_rec->with_service(core::tracing::service::management);
|
|
228
|
+
obs_rec->with_bucket_name(bucket_name_);
|
|
229
|
+
if (scope_name.has_value()) {
|
|
230
|
+
obs_rec->with_scope_name(scope_name.value());
|
|
231
|
+
}
|
|
232
|
+
if (collection_name.has_value()) {
|
|
233
|
+
obs_rec->with_collection_name(collection_name.value());
|
|
234
|
+
}
|
|
235
|
+
return obs_rec;
|
|
236
|
+
}
|
|
237
|
+
|
|
198
238
|
core::cluster core_;
|
|
199
239
|
std::string bucket_name_;
|
|
200
240
|
};
|
|
@@ -78,9 +78,9 @@ dns_srv_tracker::get_srv_nodes(
|
|
|
78
78
|
self->address_,
|
|
79
79
|
resp.ec.message());
|
|
80
80
|
} else if (resp.targets.empty() && self->address_ != "localhost") {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
CB_LOG_DEBUG("DNS SRV query returned 0 records for \"{}\", assuming "
|
|
82
|
+
"that cluster is listening this address",
|
|
83
|
+
self->address_);
|
|
84
84
|
} else {
|
|
85
85
|
nodes.reserve(resp.targets.size());
|
|
86
86
|
for (const auto& address : resp.targets) {
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#include "error.hxx"
|
|
19
19
|
|
|
20
|
+
#include "core/error.hxx"
|
|
20
21
|
#include "core/error_context/analytics.hxx"
|
|
21
22
|
#include "core/error_context/analytics_json.hxx"
|
|
22
23
|
#include "core/error_context/http.hxx"
|
|
@@ -116,7 +117,7 @@ error::operator==(const couchbase::error& other) const -> bool
|
|
|
116
117
|
namespace core::impl
|
|
117
118
|
{
|
|
118
119
|
auto
|
|
119
|
-
make_error(const core::error_context::query& core_ctx) -> error
|
|
120
|
+
make_error(const core::error_context::query& core_ctx) -> couchbase::error
|
|
120
121
|
{
|
|
121
122
|
if (!core_ctx.ec) {
|
|
122
123
|
return {};
|
|
@@ -125,7 +126,7 @@ make_error(const core::error_context::query& core_ctx) -> error
|
|
|
125
126
|
}
|
|
126
127
|
|
|
127
128
|
auto
|
|
128
|
-
make_error(const query_error_context& core_ctx) -> error
|
|
129
|
+
make_error(const query_error_context& core_ctx) -> couchbase::error
|
|
129
130
|
{
|
|
130
131
|
if (!core_ctx.ec()) {
|
|
131
132
|
return {};
|
|
@@ -134,7 +135,7 @@ make_error(const query_error_context& core_ctx) -> error
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
auto
|
|
137
|
-
make_error(const core::error_context::search& core_ctx) -> error
|
|
138
|
+
make_error(const core::error_context::search& core_ctx) -> couchbase::error
|
|
138
139
|
{
|
|
139
140
|
if (!core_ctx.ec) {
|
|
140
141
|
return {};
|
|
@@ -143,7 +144,7 @@ make_error(const core::error_context::search& core_ctx) -> error
|
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
auto
|
|
146
|
-
make_error(const core::error_context::analytics& core_ctx) -> error
|
|
147
|
+
make_error(const core::error_context::analytics& core_ctx) -> couchbase::error
|
|
147
148
|
{
|
|
148
149
|
if (!core_ctx.ec) {
|
|
149
150
|
return {};
|
|
@@ -152,7 +153,7 @@ make_error(const core::error_context::analytics& core_ctx) -> error
|
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
auto
|
|
155
|
-
make_error(const core::error_context::http& core_ctx) -> error
|
|
156
|
+
make_error(const core::error_context::http& core_ctx) -> couchbase::error
|
|
156
157
|
{
|
|
157
158
|
if (!core_ctx.ec) {
|
|
158
159
|
return {};
|
|
@@ -161,7 +162,7 @@ make_error(const core::error_context::http& core_ctx) -> error
|
|
|
161
162
|
}
|
|
162
163
|
|
|
163
164
|
auto
|
|
164
|
-
make_error(const couchbase::core::key_value_error_context& core_ctx) -> error
|
|
165
|
+
make_error(const couchbase::core::key_value_error_context& core_ctx) -> couchbase::error
|
|
165
166
|
{
|
|
166
167
|
if (!core_ctx.ec()) {
|
|
167
168
|
return {};
|
|
@@ -170,7 +171,7 @@ make_error(const couchbase::core::key_value_error_context& core_ctx) -> error
|
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
auto
|
|
173
|
-
make_error(const couchbase::core::subdocument_error_context& core_ctx) -> error
|
|
174
|
+
make_error(const couchbase::core::subdocument_error_context& core_ctx) -> couchbase::error
|
|
174
175
|
{
|
|
175
176
|
if (!core_ctx.ec()) {
|
|
176
177
|
return {};
|
|
@@ -179,15 +180,15 @@ make_error(const couchbase::core::subdocument_error_context& core_ctx) -> error
|
|
|
179
180
|
}
|
|
180
181
|
|
|
181
182
|
auto
|
|
182
|
-
make_error(const couchbase::core::transaction_error_context& ctx) -> error
|
|
183
|
+
make_error(const couchbase::core::transaction_error_context& ctx) -> couchbase::error
|
|
183
184
|
{
|
|
184
185
|
return { ctx.ec(), {}, {}, { ctx.cause() } };
|
|
185
186
|
}
|
|
186
187
|
|
|
187
188
|
auto
|
|
188
|
-
make_error(const core::transactions::op_exception& exc) -> error
|
|
189
|
+
make_error(const core::transactions::op_exception& exc) -> couchbase::error
|
|
189
190
|
{
|
|
190
|
-
std::optional<error> cause;
|
|
191
|
+
std::optional<couchbase::error> cause;
|
|
191
192
|
if (std::holds_alternative<key_value_error_context>(exc.ctx().cause())) {
|
|
192
193
|
cause = make_error(std::get<key_value_error_context>(exc.ctx().cause()));
|
|
193
194
|
}
|
|
@@ -196,7 +197,7 @@ make_error(const core::transactions::op_exception& exc) -> error
|
|
|
196
197
|
}
|
|
197
198
|
|
|
198
199
|
if (cause.has_value()) {
|
|
199
|
-
return error{
|
|
200
|
+
return couchbase::error{
|
|
200
201
|
transaction_op_errc_from_external_exception(exc.cause()),
|
|
201
202
|
exc.what(),
|
|
202
203
|
{},
|
|
@@ -204,7 +205,7 @@ make_error(const core::transactions::op_exception& exc) -> error
|
|
|
204
205
|
};
|
|
205
206
|
}
|
|
206
207
|
|
|
207
|
-
return error{
|
|
208
|
+
return couchbase::error{
|
|
208
209
|
transaction_op_errc_from_external_exception(exc.cause()),
|
|
209
210
|
exc.what(),
|
|
210
211
|
{},
|
|
@@ -218,7 +219,13 @@ make_error(const couchbase::core::transactions::transaction_operation_failed& co
|
|
|
218
219
|
return { couchbase::errc::transaction_op::transaction_op_failed,
|
|
219
220
|
core_tof.what(),
|
|
220
221
|
internal_error_context::build_error_context(tao::json::empty_object, core_tof),
|
|
221
|
-
error(transaction_op_errc_from_external_exception(core_tof.cause())) };
|
|
222
|
+
couchbase::error(transaction_op_errc_from_external_exception(core_tof.cause())) };
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
auto
|
|
226
|
+
make_error(const core::error& err) -> couchbase::error
|
|
227
|
+
{
|
|
228
|
+
return { err.ec, err.message };
|
|
222
229
|
}
|
|
223
230
|
} // namespace core::impl
|
|
224
231
|
} // namespace couchbase
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
|
+
#include "core/error.hxx"
|
|
20
21
|
#include "core/error_context/key_value_error_context.hxx"
|
|
21
22
|
#include "core/error_context/query_error_context.hxx"
|
|
22
23
|
#include "core/error_context/subdocument_error_context.hxx"
|
|
@@ -33,32 +34,36 @@
|
|
|
33
34
|
namespace couchbase::core::impl
|
|
34
35
|
{
|
|
35
36
|
auto
|
|
36
|
-
make_error(const core::error_context::query& core_ctx) -> error;
|
|
37
|
+
make_error(const core::error_context::query& core_ctx) -> couchbase::error;
|
|
37
38
|
|
|
38
39
|
auto
|
|
39
|
-
make_error(const core::error_context::search& core_ctx) -> error;
|
|
40
|
+
make_error(const core::error_context::search& core_ctx) -> couchbase::error;
|
|
40
41
|
|
|
41
42
|
auto
|
|
42
|
-
make_error(const core::error_context::analytics& core_ctx) -> error;
|
|
43
|
+
make_error(const core::error_context::analytics& core_ctx) -> couchbase::error;
|
|
43
44
|
|
|
44
45
|
auto
|
|
45
|
-
make_error(const core::error_context::http& core_ctx) -> error;
|
|
46
|
+
make_error(const core::error_context::http& core_ctx) -> couchbase::error;
|
|
46
47
|
|
|
47
48
|
auto
|
|
48
|
-
make_error(const couchbase::core::key_value_error_context& core_ctx) -> error;
|
|
49
|
+
make_error(const couchbase::core::key_value_error_context& core_ctx) -> couchbase::error;
|
|
49
50
|
|
|
50
51
|
auto
|
|
51
|
-
make_error(const couchbase::core::subdocument_error_context& core_ctx) -> error;
|
|
52
|
+
make_error(const couchbase::core::subdocument_error_context& core_ctx) -> couchbase::error;
|
|
52
53
|
|
|
53
54
|
auto
|
|
54
|
-
make_error(const couchbase::core::query_error_context& core_ctx) -> error;
|
|
55
|
+
make_error(const couchbase::core::query_error_context& core_ctx) -> couchbase::error;
|
|
55
56
|
|
|
56
57
|
auto
|
|
57
|
-
make_error(const couchbase::core::transaction_error_context& core_ctx) -> error;
|
|
58
|
+
make_error(const couchbase::core::transaction_error_context& core_ctx) -> couchbase::error;
|
|
58
59
|
|
|
59
60
|
auto
|
|
60
|
-
make_error(const couchbase::core::transactions::op_exception& exc) -> error;
|
|
61
|
+
make_error(const couchbase::core::transactions::op_exception& exc) -> couchbase::error;
|
|
61
62
|
|
|
62
63
|
auto
|
|
63
|
-
make_error(const couchbase::core::transactions::transaction_operation_failed& core_tof)
|
|
64
|
+
make_error(const couchbase::core::transactions::transaction_operation_failed& core_tof)
|
|
65
|
+
-> couchbase::error;
|
|
66
|
+
|
|
67
|
+
auto
|
|
68
|
+
make_error(const core::error& err) -> couchbase::error;
|
|
64
69
|
} // namespace couchbase::core::impl
|
|
@@ -70,7 +70,7 @@ private:
|
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
using movable_get_all_replicas_handler =
|
|
73
|
-
utils::movable_function<void(error, get_all_replicas_result)>;
|
|
73
|
+
utils::movable_function<void(couchbase::error, get_all_replicas_result)>;
|
|
74
74
|
|
|
75
75
|
void
|
|
76
76
|
initiate_get_all_replicas_operation(std::shared_ptr<cluster> core,
|
|
@@ -65,7 +65,8 @@ private:
|
|
|
65
65
|
std::optional<std::chrono::milliseconds> timeout_{};
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
using movable_get_any_replica_handler =
|
|
68
|
+
using movable_get_any_replica_handler =
|
|
69
|
+
utils::movable_function<void(couchbase::error, get_replica_result)>;
|
|
69
70
|
|
|
70
71
|
void
|
|
71
72
|
initiate_get_any_replica_operation(std::shared_ptr<cluster> core,
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
#include "core/io/retry_context.hxx"
|
|
24
24
|
#include "core/protocol/client_request.hxx"
|
|
25
25
|
#include "core/protocol/cmd_get_replica.hxx"
|
|
26
|
+
#include "core/public_fwd.hxx"
|
|
26
27
|
#include "core/timeout_defaults.hxx"
|
|
27
28
|
|
|
28
29
|
namespace couchbase::core::impl
|
|
@@ -48,6 +49,7 @@ struct get_replica_request {
|
|
|
48
49
|
std::uint16_t partition{};
|
|
49
50
|
std::uint32_t opaque{};
|
|
50
51
|
io::retry_context<true> retries{};
|
|
52
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
|
|
51
53
|
|
|
52
54
|
[[nodiscard]] auto encode_to(encoded_request_type& encoded,
|
|
53
55
|
core::mcbp_context&& context) const -> std::error_code;
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
20
|
#include "core/error_context/key_value.hxx"
|
|
21
|
+
#include "core/error_context/subdocument_error_context.hxx"
|
|
21
22
|
#include "core/impl/subdoc/command.hxx"
|
|
22
23
|
#include "core/io/mcbp_context.hxx"
|
|
23
24
|
#include "core/io/retry_context.hxx"
|
|
@@ -26,7 +27,6 @@
|
|
|
26
27
|
#include "core/public_fwd.hxx"
|
|
27
28
|
#include "core/timeout_defaults.hxx"
|
|
28
29
|
|
|
29
|
-
#include "core/error_context/subdocument_error_context.hxx"
|
|
30
30
|
#include <couchbase/lookup_in_result.hxx>
|
|
31
31
|
|
|
32
32
|
namespace couchbase::core::impl
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2025. 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 "observability_recorder.hxx"
|
|
19
|
+
#include "core/tracing/attribute_helpers.hxx"
|
|
20
|
+
|
|
21
|
+
namespace couchbase::core::impl
|
|
22
|
+
{
|
|
23
|
+
auto
|
|
24
|
+
observability_recorder::create(std::string op_name,
|
|
25
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span,
|
|
26
|
+
std::weak_ptr<tracing::tracer_wrapper> tracer,
|
|
27
|
+
std::weak_ptr<metrics::meter_wrapper> meter)
|
|
28
|
+
-> std::unique_ptr<observability_recorder>
|
|
29
|
+
{
|
|
30
|
+
auto rec = std::make_unique<observability_recorder>(
|
|
31
|
+
std::move(op_name), std::move(parent_span), std::move(tracer), std::move(meter));
|
|
32
|
+
if (rec->span_->uses_tags()) {
|
|
33
|
+
rec->span_->add_tag(tracing::attributes::op::operation_name, rec->op_name_);
|
|
34
|
+
}
|
|
35
|
+
rec->metric_attributes_.operation = rec->op_name_;
|
|
36
|
+
return rec;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
auto
|
|
40
|
+
observability_recorder::operation_span() -> const std::shared_ptr<couchbase::tracing::request_span>&
|
|
41
|
+
{
|
|
42
|
+
return span_;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void
|
|
46
|
+
observability_recorder::finish(const std::error_code ec)
|
|
47
|
+
{
|
|
48
|
+
metric_attributes_.ec = ec;
|
|
49
|
+
meter_.lock()->record_value(std::move(metric_attributes_), start_time_);
|
|
50
|
+
span_->end();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
void
|
|
54
|
+
observability_recorder::finish(const std::size_t retry_attempts, const std::error_code ec)
|
|
55
|
+
{
|
|
56
|
+
if (span_->uses_tags()) {
|
|
57
|
+
span_->add_tag(tracing::attributes::op::retry_count, retry_attempts);
|
|
58
|
+
}
|
|
59
|
+
finish(ec);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
auto
|
|
63
|
+
observability_recorder::create_request_encoding_span() const
|
|
64
|
+
-> std::shared_ptr<couchbase::tracing::request_span>
|
|
65
|
+
{
|
|
66
|
+
return tracer_.lock()->create_span(tracing::operation::step_request_encoding, span_);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
auto
|
|
70
|
+
observability_recorder::record_suboperation(std::string subop_name) const
|
|
71
|
+
-> std::unique_ptr<observability_recorder>
|
|
72
|
+
{
|
|
73
|
+
return create(std::move(subop_name), span_, tracer_, meter_);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void
|
|
77
|
+
observability_recorder::with_service(const std::string& service)
|
|
78
|
+
{
|
|
79
|
+
metric_attributes_.service = service;
|
|
80
|
+
if (span_->uses_tags()) {
|
|
81
|
+
span_->add_tag(tracing::attributes::op::service, service);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
void
|
|
86
|
+
observability_recorder::with_collection_name(const std::string& collection_name)
|
|
87
|
+
|
|
88
|
+
{
|
|
89
|
+
metric_attributes_.collection_name = collection_name;
|
|
90
|
+
if (span_->uses_tags()) {
|
|
91
|
+
span_->add_tag(tracing::attributes::op::collection_name, collection_name);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void
|
|
96
|
+
observability_recorder::with_scope_name(const std::string& scope_name)
|
|
97
|
+
{
|
|
98
|
+
metric_attributes_.scope_name = scope_name;
|
|
99
|
+
if (span_->uses_tags()) {
|
|
100
|
+
span_->add_tag(tracing::attributes::op::scope_name, scope_name);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void
|
|
105
|
+
observability_recorder::with_bucket_name(const std::string& bucket_name)
|
|
106
|
+
{
|
|
107
|
+
metric_attributes_.bucket_name = bucket_name;
|
|
108
|
+
if (span_->uses_tags()) {
|
|
109
|
+
span_->add_tag(tracing::attributes::op::bucket_name, bucket_name);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void
|
|
114
|
+
observability_recorder::with_durability(const couchbase::durability_level durability)
|
|
115
|
+
|
|
116
|
+
{
|
|
117
|
+
if (span_->uses_tags()) {
|
|
118
|
+
tracing::set_durability_level_attribute(span_, durability);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
void
|
|
123
|
+
observability_recorder::with_query_statement(const std::string& statement,
|
|
124
|
+
const query_options::built& query_options)
|
|
125
|
+
|
|
126
|
+
{
|
|
127
|
+
if (query_options.positional_parameters.empty() && query_options.named_parameters.empty()) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (span_->uses_tags()) {
|
|
131
|
+
span_->add_tag(tracing::attributes::op::query_statement, statement);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void
|
|
136
|
+
observability_recorder::with_query_statement(const std::string& statement,
|
|
137
|
+
const analytics_options::built& analytics_options)
|
|
138
|
+
|
|
139
|
+
{
|
|
140
|
+
if (analytics_options.positional_parameters.empty() &&
|
|
141
|
+
analytics_options.named_parameters.empty()) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (span_->uses_tags()) {
|
|
145
|
+
span_->add_tag(tracing::attributes::op::query_statement, statement);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
observability_recorder::observability_recorder(
|
|
150
|
+
std::string op_name,
|
|
151
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span,
|
|
152
|
+
std::weak_ptr<tracing::tracer_wrapper> tracer,
|
|
153
|
+
std::weak_ptr<metrics::meter_wrapper> meter)
|
|
154
|
+
: op_name_{ std::move(op_name) }
|
|
155
|
+
, tracer_{ std::move(tracer) }
|
|
156
|
+
, meter_{ std::move(meter) }
|
|
157
|
+
, span_{ tracer_.lock()->create_span(op_name_, std::move(parent_span)) }
|
|
158
|
+
, start_time_{ std::chrono::steady_clock::now() }
|
|
159
|
+
{
|
|
160
|
+
}
|
|
161
|
+
} // namespace couchbase::core::impl
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2025. 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
|
+
#include <couchbase/analytics_options.hxx>
|
|
21
|
+
#include <couchbase/collection.hxx>
|
|
22
|
+
#include <couchbase/durability_level.hxx>
|
|
23
|
+
#include <couchbase/query_options.hxx>
|
|
24
|
+
#include <couchbase/tracing/request_span.hxx>
|
|
25
|
+
|
|
26
|
+
#include "core/metrics/meter_wrapper.hxx"
|
|
27
|
+
#include "core/tracing/constants.hxx"
|
|
28
|
+
#include "core/tracing/tracer_wrapper.hxx"
|
|
29
|
+
|
|
30
|
+
#include <memory>
|
|
31
|
+
#include <string>
|
|
32
|
+
|
|
33
|
+
namespace couchbase::core::impl
|
|
34
|
+
{
|
|
35
|
+
class observability_recorder
|
|
36
|
+
{
|
|
37
|
+
public:
|
|
38
|
+
static auto create(std::string op_name,
|
|
39
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span,
|
|
40
|
+
std::weak_ptr<tracing::tracer_wrapper> tracer,
|
|
41
|
+
std::weak_ptr<metrics::meter_wrapper> meter)
|
|
42
|
+
-> std::unique_ptr<observability_recorder>;
|
|
43
|
+
|
|
44
|
+
[[nodiscard]] auto operation_span() -> const std::shared_ptr<couchbase::tracing::request_span>&;
|
|
45
|
+
|
|
46
|
+
[[nodiscard]] auto create_request_encoding_span() const
|
|
47
|
+
-> std::shared_ptr<couchbase::tracing::request_span>;
|
|
48
|
+
[[nodiscard]] auto record_suboperation(std::string subop_name) const
|
|
49
|
+
-> std::unique_ptr<observability_recorder>;
|
|
50
|
+
|
|
51
|
+
void with_service(const std::string& service);
|
|
52
|
+
void with_collection_name(const std::string& collection_name);
|
|
53
|
+
void with_scope_name(const std::string& scope_name);
|
|
54
|
+
void with_bucket_name(const std::string& bucket_name);
|
|
55
|
+
void with_durability(couchbase::durability_level durability);
|
|
56
|
+
void with_query_statement(const std::string& statement,
|
|
57
|
+
const query_options::built& query_options);
|
|
58
|
+
void with_query_statement(const std::string& statement,
|
|
59
|
+
const analytics_options::built& analytics_options);
|
|
60
|
+
|
|
61
|
+
void finish(std::error_code ec);
|
|
62
|
+
void finish(std::size_t retry_attempts, std::error_code ec);
|
|
63
|
+
|
|
64
|
+
observability_recorder(std::string op_name,
|
|
65
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span,
|
|
66
|
+
std::weak_ptr<tracing::tracer_wrapper> tracer,
|
|
67
|
+
std::weak_ptr<metrics::meter_wrapper> meter);
|
|
68
|
+
|
|
69
|
+
private:
|
|
70
|
+
std::string op_name_;
|
|
71
|
+
std::weak_ptr<tracing::tracer_wrapper> tracer_;
|
|
72
|
+
std::weak_ptr<metrics::meter_wrapper> meter_;
|
|
73
|
+
std::shared_ptr<couchbase::tracing::request_span> span_;
|
|
74
|
+
std::chrono::time_point<std::chrono::steady_clock> start_time_;
|
|
75
|
+
metrics::metric_attributes metric_attributes_{};
|
|
76
|
+
};
|
|
77
|
+
} // namespace couchbase::core::impl
|