couchbase 4.6.1 → 4.7.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -83,7 +83,7 @@ public:
|
|
|
83
83
|
static auto dial(app_telemetry_address address,
|
|
84
84
|
cluster_options options,
|
|
85
85
|
asio::io_context& ctx,
|
|
86
|
-
|
|
86
|
+
tls_context_provider& tls,
|
|
87
87
|
std::shared_ptr<connection_state_listener>&& handler)
|
|
88
88
|
-> std::shared_ptr<telemetry_dialer>
|
|
89
89
|
{
|
|
@@ -96,7 +96,7 @@ public:
|
|
|
96
96
|
telemetry_dialer(app_telemetry_address address,
|
|
97
97
|
cluster_options options,
|
|
98
98
|
asio::io_context& ctx,
|
|
99
|
-
|
|
99
|
+
tls_context_provider& tls,
|
|
100
100
|
std::shared_ptr<connection_state_listener>&& handler)
|
|
101
101
|
: address_{ std::move(address) }
|
|
102
102
|
, options_{ std::move(options) }
|
|
@@ -223,7 +223,7 @@ private:
|
|
|
223
223
|
app_telemetry_address address_;
|
|
224
224
|
cluster_options options_;
|
|
225
225
|
asio::io_context& ctx_;
|
|
226
|
-
|
|
226
|
+
tls_context_provider& tls_;
|
|
227
227
|
asio::steady_timer resolve_deadline_;
|
|
228
228
|
asio::steady_timer connect_deadline_;
|
|
229
229
|
asio::ip::tcp::resolver resolver_;
|
|
@@ -426,9 +426,17 @@ public:
|
|
|
426
426
|
private:
|
|
427
427
|
auto build_handshake_message() -> std::vector<std::byte>
|
|
428
428
|
{
|
|
429
|
-
|
|
429
|
+
std::string auth{};
|
|
430
|
+
if (credentials_.uses_jwt()) {
|
|
431
|
+
auth = fmt::format("Bearer {}", credentials_.jwt_token);
|
|
432
|
+
} else {
|
|
433
|
+
auto credentials = fmt::format("{}:{}", credentials_.username, credentials_.password);
|
|
434
|
+
auth = fmt::format(
|
|
435
|
+
"Basic {}",
|
|
436
|
+
base64::encode(gsl::as_bytes(gsl::span{ credentials.data(), credentials.size() })));
|
|
437
|
+
}
|
|
430
438
|
auto message = fmt::format("GET {} HTTP/1.1\r\n"
|
|
431
|
-
"Authorization:
|
|
439
|
+
"Authorization: {}\r\n"
|
|
432
440
|
"Upgrade: websocket\r\n"
|
|
433
441
|
"Connection: Upgrade\r\n"
|
|
434
442
|
"Host: {}:{}\r\n"
|
|
@@ -436,10 +444,7 @@ private:
|
|
|
436
444
|
"Sec-WebSocket-Key: {}\r\n"
|
|
437
445
|
"\r\n",
|
|
438
446
|
address_.path,
|
|
439
|
-
|
|
440
|
-
credentials.data(),
|
|
441
|
-
credentials.size(),
|
|
442
|
-
})),
|
|
447
|
+
auth,
|
|
443
448
|
address_.hostname,
|
|
444
449
|
address_.service,
|
|
445
450
|
codec_.session_key());
|
|
@@ -671,30 +676,29 @@ class app_telemetry_reporter_impl
|
|
|
671
676
|
{
|
|
672
677
|
public:
|
|
673
678
|
app_telemetry_reporter_impl(std::shared_ptr<app_telemetry_meter> meter,
|
|
674
|
-
|
|
675
|
-
cluster_credentials credentials,
|
|
679
|
+
origin& origin,
|
|
676
680
|
asio::io_context& ctx,
|
|
677
|
-
|
|
681
|
+
tls_context_provider& tls)
|
|
678
682
|
: meter_{ std::move(meter) }
|
|
679
|
-
,
|
|
680
|
-
, credentials_{ std::move(credentials) }
|
|
683
|
+
, origin_{ origin }
|
|
681
684
|
, ctx_{ ctx }
|
|
682
685
|
, tls_{ tls }
|
|
683
686
|
, backoff_{ ctx }
|
|
684
687
|
, exponential_backoff_calculator_{
|
|
685
688
|
std::chrono::milliseconds{ 100 },
|
|
686
|
-
|
|
689
|
+
origin_.options().app_telemetry_backoff_interval,
|
|
687
690
|
2 /* backoff factor */,
|
|
688
691
|
0.5 /* jitter factor */,
|
|
689
692
|
}
|
|
690
693
|
{
|
|
691
|
-
if (
|
|
692
|
-
if (!
|
|
693
|
-
auto url =
|
|
694
|
+
if (origin_.options().enable_app_telemetry) {
|
|
695
|
+
if (!origin_.options().app_telemetry_endpoint.empty()) {
|
|
696
|
+
auto url =
|
|
697
|
+
couchbase::core::utils::string_codec::url_parse(origin_.options().app_telemetry_endpoint);
|
|
694
698
|
if (url.host.empty() || url.scheme != "ws") {
|
|
695
699
|
CB_LOG_WARNING(
|
|
696
700
|
"unable to use \"{}\" as a app telemetry endpoint (expected ws:// and hostname)",
|
|
697
|
-
|
|
701
|
+
origin_.options().app_telemetry_endpoint);
|
|
698
702
|
return;
|
|
699
703
|
}
|
|
700
704
|
addresses_.push_back({
|
|
@@ -743,19 +747,19 @@ public:
|
|
|
743
747
|
}
|
|
744
748
|
|
|
745
749
|
websocket_state_ = connection_state::connected;
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
750
|
+
CB_LOG_DEBUG("connected app telemetry endpoint. {}",
|
|
751
|
+
tao::json::to_string(tao::json::value{
|
|
752
|
+
{ "stream", stream->id() },
|
|
753
|
+
{ "hostname", address.hostname },
|
|
754
|
+
}));
|
|
751
755
|
websocket_session_ = websocket_session::start(ctx_,
|
|
752
756
|
address,
|
|
753
|
-
|
|
757
|
+
origin_.credentials(),
|
|
754
758
|
std::move(stream),
|
|
755
759
|
meter_,
|
|
756
760
|
shared_from_this(),
|
|
757
|
-
|
|
758
|
-
|
|
761
|
+
origin_.options().app_telemetry_ping_interval,
|
|
762
|
+
origin_.options().app_telemetry_ping_timeout);
|
|
759
763
|
retry_backoff_calculator_ = &no_backoff_calculator_;
|
|
760
764
|
++next_address_index_;
|
|
761
765
|
}
|
|
@@ -813,25 +817,27 @@ public:
|
|
|
813
817
|
return;
|
|
814
818
|
}
|
|
815
819
|
if (self->websocket_state_ == connection_state::disconnected) {
|
|
816
|
-
self->dialer_ =
|
|
817
|
-
|
|
820
|
+
self->dialer_ = telemetry_dialer::dial(
|
|
821
|
+
next_address, self->origin_.options(), self->ctx_, self->tls_, self);
|
|
818
822
|
}
|
|
819
823
|
});
|
|
820
824
|
return;
|
|
821
825
|
}
|
|
822
|
-
dialer_ =
|
|
826
|
+
dialer_ =
|
|
827
|
+
telemetry_dialer::dial(next_address, origin_.options(), ctx_, tls_, shared_from_this());
|
|
823
828
|
}
|
|
824
829
|
|
|
825
830
|
void update_config(topology::configuration&& config)
|
|
826
831
|
{
|
|
827
|
-
if (!
|
|
832
|
+
if (!origin_.options().enable_app_telemetry) {
|
|
828
833
|
meter_->disable();
|
|
829
834
|
return;
|
|
830
835
|
}
|
|
831
836
|
meter_->update_config(config);
|
|
832
837
|
|
|
833
|
-
if (
|
|
834
|
-
addresses_ = get_app_telemetry_addresses(
|
|
838
|
+
if (origin_.options().app_telemetry_endpoint.empty()) {
|
|
839
|
+
addresses_ = get_app_telemetry_addresses(
|
|
840
|
+
config, origin_.options().enable_tls, origin_.options().network);
|
|
835
841
|
next_address_index_ = 0;
|
|
836
842
|
}
|
|
837
843
|
|
|
@@ -841,17 +847,16 @@ public:
|
|
|
841
847
|
meter_->enable();
|
|
842
848
|
if (websocket_state_ == connection_state::disconnected) {
|
|
843
849
|
dialer_ = telemetry_dialer::dial(
|
|
844
|
-
addresses_[next_address_index_],
|
|
850
|
+
addresses_[next_address_index_], origin_.options(), ctx_, tls_, shared_from_this());
|
|
845
851
|
}
|
|
846
852
|
}
|
|
847
853
|
}
|
|
848
854
|
|
|
849
855
|
private:
|
|
850
856
|
std::shared_ptr<app_telemetry_meter> meter_;
|
|
851
|
-
|
|
852
|
-
cluster_credentials credentials_;
|
|
857
|
+
origin& origin_;
|
|
853
858
|
asio::io_context& ctx_;
|
|
854
|
-
|
|
859
|
+
tls_context_provider& tls_;
|
|
855
860
|
asio::steady_timer backoff_;
|
|
856
861
|
const exponential_backoff_with_jitter exponential_backoff_calculator_;
|
|
857
862
|
|
|
@@ -868,13 +873,10 @@ private:
|
|
|
868
873
|
};
|
|
869
874
|
|
|
870
875
|
app_telemetry_reporter::app_telemetry_reporter(std::shared_ptr<app_telemetry_meter> meter,
|
|
871
|
-
|
|
872
|
-
const cluster_credentials& credentials,
|
|
876
|
+
origin& origin,
|
|
873
877
|
asio::io_context& ctx,
|
|
874
|
-
|
|
875
|
-
: impl_{
|
|
876
|
-
std::make_shared<app_telemetry_reporter_impl>(std::move(meter), options, credentials, ctx, tls)
|
|
877
|
-
}
|
|
878
|
+
tls_context_provider& tls)
|
|
879
|
+
: impl_{ std::make_shared<app_telemetry_reporter_impl>(std::move(meter), origin, ctx, tls) }
|
|
878
880
|
{
|
|
879
881
|
}
|
|
880
882
|
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
|
|
16
16
|
#pragma once
|
|
17
17
|
|
|
18
|
+
#include "cluster.hxx"
|
|
18
19
|
#include "config_listener.hxx"
|
|
20
|
+
#include "tls_context_provider.hxx"
|
|
19
21
|
|
|
20
22
|
#include <memory>
|
|
21
23
|
|
|
@@ -45,10 +47,9 @@ public:
|
|
|
45
47
|
auto operator=(const app_telemetry_reporter&) -> app_telemetry_reporter& = delete;
|
|
46
48
|
|
|
47
49
|
app_telemetry_reporter(std::shared_ptr<app_telemetry_meter> meter,
|
|
48
|
-
|
|
49
|
-
const cluster_credentials& credentials,
|
|
50
|
+
origin& origin,
|
|
50
51
|
asio::io_context& ctx,
|
|
51
|
-
|
|
52
|
+
tls_context_provider& tls);
|
|
52
53
|
~app_telemetry_reporter() override;
|
|
53
54
|
void update_config(topology::configuration config) override;
|
|
54
55
|
void stop();
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
#include "collection_id_cache_entry.hxx"
|
|
21
21
|
#include "core/app_telemetry_meter.hxx"
|
|
22
|
+
#include "core/cluster_options.hxx"
|
|
22
23
|
#include "core/config_listener.hxx"
|
|
23
24
|
#include "core/document_id.hxx"
|
|
24
25
|
#include "core/error_context/key_value_error_map_info.hxx"
|
|
@@ -85,20 +86,22 @@ public:
|
|
|
85
86
|
couchbase::core::origin origin,
|
|
86
87
|
std::shared_ptr<tracing::tracer_wrapper> tracer,
|
|
87
88
|
std::shared_ptr<metrics::meter_wrapper> meter,
|
|
89
|
+
std::shared_ptr<orphan_reporter> orphan_reporter,
|
|
88
90
|
std::shared_ptr<core::app_telemetry_meter> app_telemetry,
|
|
89
91
|
std::vector<protocol::hello_feature> known_features,
|
|
90
92
|
std::shared_ptr<impl::bootstrap_state_listener> state_listener,
|
|
91
93
|
asio::io_context& ctx,
|
|
92
|
-
|
|
94
|
+
tls_context_provider& tls)
|
|
93
95
|
: client_id_{ std::move(client_id) }
|
|
94
96
|
, name_{ std::move(name) }
|
|
95
97
|
, log_prefix_{ fmt::format("[{}/{}]", client_id_, name_) }
|
|
96
|
-
, origin_{ std::move(origin) }
|
|
97
98
|
, tracer_{ std::move(tracer) }
|
|
98
99
|
, meter_{ std::move(meter) }
|
|
100
|
+
, orphan_reporter_{ std::move(orphan_reporter) }
|
|
99
101
|
, app_telemetry_meter_{ std::move(app_telemetry) }
|
|
100
102
|
, known_features_{ std::move(known_features) }
|
|
101
103
|
, state_listener_{ std::move(state_listener) }
|
|
104
|
+
, origin_{ std::move(origin) }
|
|
102
105
|
, codec_{ { known_features_.begin(), known_features_.end() } }
|
|
103
106
|
, ctx_{ ctx }
|
|
104
107
|
, tls_{ tls }
|
|
@@ -117,11 +120,13 @@ public:
|
|
|
117
120
|
std::optional<key_value_error_map_info> error_info)
|
|
118
121
|
{
|
|
119
122
|
// TODO(SA): copy from mcbp_command, subject to refactor later
|
|
123
|
+
#ifdef COUCHBASE_CXX_CLIENT_CREATE_OPERATION_SPAN_IN_CORE
|
|
120
124
|
metrics::metric_attributes attrs{
|
|
121
125
|
service_type::key_value, fmt::format("{}", req->command_), ec, name_, req->scope_name_,
|
|
122
126
|
req->collection_name_,
|
|
123
127
|
};
|
|
124
128
|
meter_->record_value(std::move(attrs), req->dispatched_time_);
|
|
129
|
+
#endif
|
|
125
130
|
|
|
126
131
|
if (ec == asio::error::operation_aborted) {
|
|
127
132
|
// TODO(SA): fix tracing
|
|
@@ -317,11 +322,11 @@ public:
|
|
|
317
322
|
{
|
|
318
323
|
if (req->key_.empty()) {
|
|
319
324
|
if (auto server = server_by_vbucket(req->vbucket_, req->replica_index_); server) {
|
|
320
|
-
return
|
|
325
|
+
return find_or_connect_session_by_index(server.value());
|
|
321
326
|
}
|
|
322
327
|
} else if (auto [partition, server] = map_id(req->key_, req->replica_index_); server) {
|
|
323
328
|
req->vbucket_ = partition;
|
|
324
|
-
return
|
|
329
|
+
return find_or_connect_session_by_index(server.value());
|
|
325
330
|
}
|
|
326
331
|
return std::nullopt;
|
|
327
332
|
}
|
|
@@ -365,6 +370,53 @@ public:
|
|
|
365
370
|
return { 0, std::nullopt };
|
|
366
371
|
}
|
|
367
372
|
|
|
373
|
+
void connect_session(std::size_t index)
|
|
374
|
+
{
|
|
375
|
+
const std::scoped_lock lock(config_mutex_, sessions_mutex_);
|
|
376
|
+
if (!config_) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
const auto& node = config_->nodes[index];
|
|
381
|
+
|
|
382
|
+
const auto& hostname = node.hostname_for(origin_.options().network);
|
|
383
|
+
auto port = node.port_or(
|
|
384
|
+
origin_.options().network, service_type::key_value, origin_.options().enable_tls, 0);
|
|
385
|
+
if (port == 0) {
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const couchbase::core::origin origin(origin_.credentials(), hostname, port, origin_.options());
|
|
390
|
+
io::mcbp_session session =
|
|
391
|
+
origin_.options().enable_tls
|
|
392
|
+
? io::mcbp_session(
|
|
393
|
+
client_id_, node.node_uuid, ctx_, tls_, origin, state_listener_, name_, known_features_)
|
|
394
|
+
: io::mcbp_session(
|
|
395
|
+
client_id_, node.node_uuid, ctx_, origin, state_listener_, name_, known_features_);
|
|
396
|
+
CB_LOG_DEBUG(R"({} rev={}, connect idx={}, session="{}", address="{}:{}")",
|
|
397
|
+
log_prefix_,
|
|
398
|
+
config_->rev_str(),
|
|
399
|
+
node.index,
|
|
400
|
+
session.id(),
|
|
401
|
+
hostname,
|
|
402
|
+
port);
|
|
403
|
+
session.bootstrap(
|
|
404
|
+
[self = shared_from_this(), session](std::error_code err,
|
|
405
|
+
topology::configuration cfg) mutable -> void {
|
|
406
|
+
if (err) {
|
|
407
|
+
return self->remove_session(session.id());
|
|
408
|
+
}
|
|
409
|
+
self->update_config(std::move(cfg));
|
|
410
|
+
session.on_configuration_update(self);
|
|
411
|
+
session.on_stop([id = session.id(), self]() -> void {
|
|
412
|
+
self->remove_session(id);
|
|
413
|
+
});
|
|
414
|
+
self->drain_deferred_queue({});
|
|
415
|
+
},
|
|
416
|
+
true);
|
|
417
|
+
sessions_.insert_or_assign(index, std::move(session));
|
|
418
|
+
}
|
|
419
|
+
|
|
368
420
|
void restart_sessions()
|
|
369
421
|
{
|
|
370
422
|
const std::scoped_lock lock(config_mutex_, sessions_mutex_);
|
|
@@ -594,9 +646,9 @@ public:
|
|
|
594
646
|
{
|
|
595
647
|
const std::scoped_lock lock(sessions_mutex_);
|
|
596
648
|
if (sessions_.empty()) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
649
|
+
CB_LOG_DEBUG(R"({} unable to find connected session (sessions_ is empty), retry in {})",
|
|
650
|
+
log_prefix_,
|
|
651
|
+
heartbeat_interval_);
|
|
600
652
|
return;
|
|
601
653
|
}
|
|
602
654
|
|
|
@@ -616,9 +668,9 @@ public:
|
|
|
616
668
|
req.opaque(session->next_opaque());
|
|
617
669
|
session->write_and_flush(req.data());
|
|
618
670
|
} else {
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
671
|
+
CB_LOG_DEBUG(R"({} unable to find connected session with GCCCP support, retry in {})",
|
|
672
|
+
log_prefix_,
|
|
673
|
+
heartbeat_interval_);
|
|
622
674
|
}
|
|
623
675
|
}
|
|
624
676
|
|
|
@@ -698,6 +750,11 @@ public:
|
|
|
698
750
|
}
|
|
699
751
|
}
|
|
700
752
|
|
|
753
|
+
void update_credentials(cluster_credentials credentials)
|
|
754
|
+
{
|
|
755
|
+
origin_.update_credentials(std::move(credentials));
|
|
756
|
+
}
|
|
757
|
+
|
|
701
758
|
void update_config(topology::configuration config) override
|
|
702
759
|
{
|
|
703
760
|
std::vector<topology::configuration::node> added{};
|
|
@@ -810,6 +867,10 @@ public:
|
|
|
810
867
|
continue;
|
|
811
868
|
}
|
|
812
869
|
|
|
870
|
+
if (origin_.options().enable_lazy_connections) {
|
|
871
|
+
++next_index;
|
|
872
|
+
continue;
|
|
873
|
+
}
|
|
813
874
|
const couchbase::core::origin origin(
|
|
814
875
|
origin_.credentials(), hostname, port, origin_.options());
|
|
815
876
|
io::mcbp_session session =
|
|
@@ -883,6 +944,16 @@ public:
|
|
|
883
944
|
return {};
|
|
884
945
|
}
|
|
885
946
|
|
|
947
|
+
[[nodiscard]] auto find_or_connect_session_by_index(std::size_t index)
|
|
948
|
+
-> std::optional<io::mcbp_session>
|
|
949
|
+
{
|
|
950
|
+
if (auto session = find_session_by_index(index); session) {
|
|
951
|
+
return session;
|
|
952
|
+
}
|
|
953
|
+
connect_session(index);
|
|
954
|
+
return {};
|
|
955
|
+
}
|
|
956
|
+
|
|
886
957
|
[[nodiscard]] auto next_session_index() -> std::size_t
|
|
887
958
|
{
|
|
888
959
|
const std::scoped_lock lock(sessions_mutex_);
|
|
@@ -929,6 +1000,11 @@ public:
|
|
|
929
1000
|
return meter_;
|
|
930
1001
|
}
|
|
931
1002
|
|
|
1003
|
+
[[nodiscard]] auto orphan_reporter() const -> std::shared_ptr<core::orphan_reporter>
|
|
1004
|
+
{
|
|
1005
|
+
return orphan_reporter_;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
932
1008
|
[[nodiscard]] auto app_telemetry_meter() const -> std::shared_ptr<core::app_telemetry_meter>
|
|
933
1009
|
{
|
|
934
1010
|
return app_telemetry_meter_;
|
|
@@ -977,20 +1053,33 @@ public:
|
|
|
977
1053
|
return {};
|
|
978
1054
|
}
|
|
979
1055
|
|
|
1056
|
+
void for_each_session(utils::movable_function<void(io::mcbp_session&)> handler)
|
|
1057
|
+
{
|
|
1058
|
+
std::map<size_t, io::mcbp_session> sessions;
|
|
1059
|
+
{
|
|
1060
|
+
const std::scoped_lock lock(sessions_mutex_);
|
|
1061
|
+
sessions = sessions_;
|
|
1062
|
+
}
|
|
1063
|
+
for (auto& [index, session] : sessions) {
|
|
1064
|
+
handler(session);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
|
|
980
1068
|
private:
|
|
981
1069
|
const std::string client_id_;
|
|
982
1070
|
const std::string name_;
|
|
983
1071
|
const std::string log_prefix_;
|
|
984
|
-
const origin origin_;
|
|
985
1072
|
const std::shared_ptr<tracing::tracer_wrapper> tracer_;
|
|
986
1073
|
const std::shared_ptr<metrics::meter_wrapper> meter_;
|
|
1074
|
+
const std::shared_ptr<core::orphan_reporter> orphan_reporter_;
|
|
987
1075
|
const std::shared_ptr<core::app_telemetry_meter> app_telemetry_meter_;
|
|
988
1076
|
const std::vector<protocol::hello_feature> known_features_;
|
|
989
1077
|
const std::shared_ptr<impl::bootstrap_state_listener> state_listener_;
|
|
1078
|
+
origin origin_;
|
|
990
1079
|
mcbp::codec codec_;
|
|
991
1080
|
|
|
992
1081
|
asio::io_context& ctx_;
|
|
993
|
-
|
|
1082
|
+
tls_context_provider& tls_;
|
|
994
1083
|
|
|
995
1084
|
asio::steady_timer heartbeat_timer_;
|
|
996
1085
|
std::chrono::milliseconds heartbeat_interval_;
|
|
@@ -1015,9 +1104,10 @@ private:
|
|
|
1015
1104
|
|
|
1016
1105
|
bucket::bucket(std::string client_id,
|
|
1017
1106
|
asio::io_context& ctx,
|
|
1018
|
-
|
|
1107
|
+
tls_context_provider& tls,
|
|
1019
1108
|
std::shared_ptr<tracing::tracer_wrapper> tracer,
|
|
1020
1109
|
std::shared_ptr<metrics::meter_wrapper> meter,
|
|
1110
|
+
std::shared_ptr<core::orphan_reporter> orphan_reporter,
|
|
1021
1111
|
std::shared_ptr<core::app_telemetry_meter> app_telemetry_meter,
|
|
1022
1112
|
std::string name,
|
|
1023
1113
|
couchbase::core::origin origin,
|
|
@@ -1030,6 +1120,7 @@ bucket::bucket(std::string client_id,
|
|
|
1030
1120
|
std::move(origin),
|
|
1031
1121
|
std::move(tracer),
|
|
1032
1122
|
std::move(meter),
|
|
1123
|
+
std::move(orphan_reporter),
|
|
1033
1124
|
std::move(app_telemetry_meter),
|
|
1034
1125
|
std::move(known_features),
|
|
1035
1126
|
std::move(state_listener),
|
|
@@ -1068,6 +1159,12 @@ bucket::update_config(topology::configuration config)
|
|
|
1068
1159
|
return impl_->update_config(std::move(config));
|
|
1069
1160
|
}
|
|
1070
1161
|
|
|
1162
|
+
void
|
|
1163
|
+
bucket::update_credentials(cluster_credentials credentials)
|
|
1164
|
+
{
|
|
1165
|
+
return impl_->update_credentials(std::move(credentials));
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1071
1168
|
auto
|
|
1072
1169
|
bucket::name() const -> const std::string&
|
|
1073
1170
|
{
|
|
@@ -1098,6 +1195,12 @@ bucket::meter() const -> std::shared_ptr<metrics::meter_wrapper>
|
|
|
1098
1195
|
return impl_->meter();
|
|
1099
1196
|
}
|
|
1100
1197
|
|
|
1198
|
+
auto
|
|
1199
|
+
bucket::orphan_reporter() const -> std::shared_ptr<core::orphan_reporter>
|
|
1200
|
+
{
|
|
1201
|
+
return impl_->orphan_reporter();
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1101
1204
|
auto
|
|
1102
1205
|
bucket::app_telemetry_meter() const -> std::shared_ptr<core::app_telemetry_meter>
|
|
1103
1206
|
{
|
|
@@ -1148,6 +1251,12 @@ bucket::defer_command(utils::movable_function<void(std::error_code)> command)
|
|
|
1148
1251
|
impl_->defer_command(std::move(command));
|
|
1149
1252
|
}
|
|
1150
1253
|
|
|
1254
|
+
void
|
|
1255
|
+
bucket::for_each_session(utils::movable_function<void(io::mcbp_session&)> handler)
|
|
1256
|
+
{
|
|
1257
|
+
impl_->for_each_session(std::move(handler));
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1151
1260
|
auto
|
|
1152
1261
|
bucket::default_timeout() const -> std::chrono::milliseconds
|
|
1153
1262
|
{
|
|
@@ -1190,4 +1299,10 @@ bucket::direct_re_queue(const std::shared_ptr<mcbp::queue_request>& req, bool is
|
|
|
1190
1299
|
{
|
|
1191
1300
|
return impl_->direct_re_queue(req, is_retry);
|
|
1192
1301
|
}
|
|
1302
|
+
|
|
1303
|
+
void
|
|
1304
|
+
bucket::connect_session(std::size_t index)
|
|
1305
|
+
{
|
|
1306
|
+
return impl_->connect_session(index);
|
|
1307
|
+
}
|
|
1193
1308
|
} // namespace couchbase::core
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#include "config_listener.hxx"
|
|
21
21
|
#include "io/mcbp_command.hxx"
|
|
22
22
|
#include "operations.hxx"
|
|
23
|
+
#include "tls_context_provider.hxx"
|
|
23
24
|
|
|
24
25
|
#include <asio/bind_executor.hpp>
|
|
25
26
|
#include <asio/io_context.hpp>
|
|
@@ -67,10 +68,11 @@ class bucket
|
|
|
67
68
|
public:
|
|
68
69
|
bucket(std::string client_id,
|
|
69
70
|
asio::io_context& ctx,
|
|
70
|
-
|
|
71
|
+
tls_context_provider& tls,
|
|
71
72
|
std::shared_ptr<tracing::tracer_wrapper> tracer,
|
|
72
73
|
std::shared_ptr<metrics::meter_wrapper> meter,
|
|
73
|
-
std::shared_ptr<
|
|
74
|
+
std::shared_ptr<orphan_reporter> orphan_reporter,
|
|
75
|
+
std::shared_ptr<app_telemetry_meter> app_telemetry_meter,
|
|
74
76
|
std::string name,
|
|
75
77
|
couchbase::core::origin origin,
|
|
76
78
|
std::vector<protocol::hello_feature> known_features,
|
|
@@ -104,6 +106,8 @@ public:
|
|
|
104
106
|
});
|
|
105
107
|
}
|
|
106
108
|
|
|
109
|
+
void connect_session(std::size_t index);
|
|
110
|
+
|
|
107
111
|
template<typename Request>
|
|
108
112
|
void map_and_send(std::shared_ptr<operations::mcbp_command<bucket, Request>> cmd)
|
|
109
113
|
{
|
|
@@ -141,6 +145,9 @@ public:
|
|
|
141
145
|
session.has_value() ? session->bootstrap_address() : "",
|
|
142
146
|
session.has_value() && session->has_config(),
|
|
143
147
|
config_rev());
|
|
148
|
+
if (!session) {
|
|
149
|
+
connect_session(index);
|
|
150
|
+
}
|
|
144
151
|
return defer_command([self = shared_from_this(), cmd](std::error_code ec) {
|
|
145
152
|
if (ec == errc::common::request_canceled) {
|
|
146
153
|
return cmd->cancel(retry_reason::do_not_retry);
|
|
@@ -194,6 +201,7 @@ public:
|
|
|
194
201
|
|
|
195
202
|
void fetch_config();
|
|
196
203
|
void update_config(topology::configuration config) override;
|
|
204
|
+
void update_credentials(cluster_credentials credentials);
|
|
197
205
|
void bootstrap(utils::movable_function<void(std::error_code, topology::configuration)>&& handler);
|
|
198
206
|
void with_configuration(
|
|
199
207
|
utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
|
|
@@ -205,11 +213,13 @@ public:
|
|
|
205
213
|
void ping(const std::shared_ptr<diag::ping_collector>& collector,
|
|
206
214
|
std::optional<std::chrono::milliseconds> timeout);
|
|
207
215
|
void defer_command(utils::movable_function<void(std::error_code)> command);
|
|
216
|
+
void for_each_session(utils::movable_function<void(io::mcbp_session&)> handler);
|
|
208
217
|
|
|
209
218
|
[[nodiscard]] auto name() const -> const std::string&;
|
|
210
219
|
[[nodiscard]] auto log_prefix() const -> const std::string&;
|
|
211
220
|
[[nodiscard]] auto tracer() const -> std::shared_ptr<tracing::tracer_wrapper>;
|
|
212
221
|
[[nodiscard]] auto meter() const -> std::shared_ptr<metrics::meter_wrapper>;
|
|
222
|
+
[[nodiscard]] auto orphan_reporter() const -> std::shared_ptr<orphan_reporter>;
|
|
213
223
|
[[nodiscard]] auto app_telemetry_meter() const -> std::shared_ptr<app_telemetry_meter>;
|
|
214
224
|
[[nodiscard]] auto default_retry_strategy() const -> std::shared_ptr<couchbase::retry_strategy>;
|
|
215
225
|
[[nodiscard]] auto is_closed() const -> bool;
|