couchbase 3.7.0 → 3.8.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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/ext/CMakeLists.txt +4 -1
- data/ext/cache/extconf_include.rb +4 -3
- data/ext/cache/mozilla-ca-bundle.crt +66 -665
- data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
- data/ext/couchbase/CMakeLists.txt +26 -11
- data/ext/couchbase/cmake/APKBUILD.in +17 -1
- data/ext/couchbase/cmake/Bundler.cmake +9 -1
- data/ext/couchbase/cmake/Cache.cmake +48 -19
- data/ext/couchbase/cmake/CompilerOptions.cmake +3 -1
- data/ext/couchbase/cmake/OpenSSL.cmake +10 -2
- data/ext/couchbase/cmake/Packaging.cmake +48 -8
- data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +43 -1
- data/ext/couchbase/cmake/build_config.hxx.in +2 -0
- data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +18 -0
- data/ext/couchbase/cmake/tarball_glob.txt +10 -0
- data/ext/couchbase/core/app_telemetry_meter.cxx +1 -0
- data/ext/couchbase/core/app_telemetry_reporter.cxx +45 -43
- data/ext/couchbase/core/app_telemetry_reporter.hxx +4 -3
- data/ext/couchbase/core/bucket.cxx +128 -13
- data/ext/couchbase/core/bucket.hxx +12 -2
- data/ext/couchbase/core/cluster.cxx +304 -152
- data/ext/couchbase/core/cluster.hxx +32 -0
- data/ext/couchbase/core/cluster_credentials.cxx +25 -0
- data/ext/couchbase/core/cluster_credentials.hxx +5 -0
- data/ext/couchbase/core/cluster_label_listener.cxx +72 -0
- data/ext/couchbase/core/cluster_label_listener.hxx +46 -0
- data/ext/couchbase/core/cluster_options.hxx +4 -0
- data/ext/couchbase/core/deprecation_utils.hxx +26 -0
- data/ext/couchbase/core/error.hxx +27 -0
- data/ext/couchbase/core/error_context/base_error_context.hxx +32 -0
- data/ext/couchbase/core/error_context/key_value.cxx +1 -0
- data/ext/couchbase/core/error_context/key_value.hxx +23 -0
- data/ext/couchbase/core/error_context/key_value_error_context.hxx +35 -0
- data/ext/couchbase/core/error_context/subdocument_error_context.hxx +41 -0
- data/ext/couchbase/core/free_form_http_request.hxx +0 -2
- data/ext/couchbase/core/http_component.cxx +12 -48
- data/ext/couchbase/core/impl/analytics.cxx +3 -2
- data/ext/couchbase/core/impl/analytics.hxx +2 -1
- data/ext/couchbase/core/impl/analytics_index_manager.cxx +249 -137
- data/ext/couchbase/core/impl/binary_collection.cxx +239 -128
- data/ext/couchbase/core/impl/bucket_manager.cxx +87 -35
- data/ext/couchbase/core/impl/collection.cxx +914 -372
- data/ext/couchbase/core/impl/collection_manager.cxx +89 -49
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +4 -4
- data/ext/couchbase/core/impl/error.cxx +49 -17
- data/ext/couchbase/core/impl/error.hxx +15 -10
- data/ext/couchbase/core/impl/get_all_replicas.hxx +1 -1
- data/ext/couchbase/core/impl/get_any_replica.hxx +2 -1
- data/ext/couchbase/core/impl/get_replica.hxx +2 -0
- data/ext/couchbase/core/impl/invoke_with_node_id.hxx +44 -0
- data/ext/couchbase/core/impl/lookup_in_replica.hxx +1 -1
- data/ext/couchbase/core/impl/node_id.cxx +110 -0
- data/ext/couchbase/core/impl/node_id.hxx +40 -0
- data/ext/couchbase/core/impl/observability_recorder.cxx +161 -0
- data/ext/couchbase/core/impl/observability_recorder.hxx +77 -0
- data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
- data/ext/couchbase/core/impl/public_bucket.cxx +31 -7
- data/ext/couchbase/core/impl/public_cluster.cxx +107 -19
- data/ext/couchbase/core/impl/query.cxx +6 -3
- data/ext/couchbase/core/impl/query.hxx +3 -1
- data/ext/couchbase/core/impl/query_index_manager.cxx +267 -102
- data/ext/couchbase/core/impl/scope.cxx +53 -11
- data/ext/couchbase/core/impl/search.cxx +8 -4
- data/ext/couchbase/core/impl/search.hxx +6 -2
- data/ext/couchbase/core/impl/search_index_manager.cxx +131 -41
- data/ext/couchbase/core/impl/with_cancellation.hxx +75 -0
- data/ext/couchbase/core/io/config_tracker.cxx +9 -9
- data/ext/couchbase/core/io/config_tracker.hxx +2 -1
- data/ext/couchbase/core/io/http_command.hxx +98 -49
- data/ext/couchbase/core/io/http_context.hxx +2 -0
- data/ext/couchbase/core/io/http_session.cxx +23 -10
- data/ext/couchbase/core/io/http_session.hxx +17 -9
- data/ext/couchbase/core/io/http_session_manager.hxx +245 -270
- data/ext/couchbase/core/io/http_traits.hxx +0 -7
- data/ext/couchbase/core/io/mcbp_command.hxx +123 -44
- data/ext/couchbase/core/io/mcbp_session.cxx +251 -26
- data/ext/couchbase/core/io/mcbp_session.hxx +9 -1
- data/ext/couchbase/core/io/mcbp_traits.hxx +0 -8
- data/ext/couchbase/core/io/streams.cxx +3 -3
- data/ext/couchbase/core/io/streams.hxx +3 -2
- data/ext/couchbase/core/meta/features.hxx +15 -0
- data/ext/couchbase/core/meta/version.cxx +13 -0
- data/ext/couchbase/core/meta/version.hxx +3 -0
- data/ext/couchbase/core/metrics/constants.hxx +23 -0
- data/ext/couchbase/core/metrics/logging_meter.cxx +5 -5
- data/ext/couchbase/core/metrics/meter_wrapper.cxx +65 -63
- data/ext/couchbase/core/metrics/meter_wrapper.hxx +12 -10
- data/ext/couchbase/core/operations/document_analytics.hxx +0 -5
- data/ext/couchbase/core/operations/document_append.hxx +0 -4
- data/ext/couchbase/core/operations/document_decrement.hxx +0 -5
- data/ext/couchbase/core/operations/document_exists.hxx +0 -7
- data/ext/couchbase/core/operations/document_get.hxx +0 -7
- data/ext/couchbase/core/operations/document_get_all_replicas.hxx +89 -29
- data/ext/couchbase/core/operations/document_get_and_lock.hxx +0 -9
- data/ext/couchbase/core/operations/document_get_and_touch.hxx +0 -9
- data/ext/couchbase/core/operations/document_get_any_replica.hxx +83 -2
- data/ext/couchbase/core/operations/document_get_projected.cxx +3 -4
- data/ext/couchbase/core/operations/document_get_projected.hxx +0 -9
- data/ext/couchbase/core/operations/document_increment.hxx +0 -5
- data/ext/couchbase/core/operations/document_insert.hxx +0 -4
- data/ext/couchbase/core/operations/document_lookup_in.hxx +0 -9
- data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +50 -4
- data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +121 -43
- data/ext/couchbase/core/operations/document_mutate_in.hxx +0 -5
- data/ext/couchbase/core/operations/document_prepend.hxx +0 -4
- data/ext/couchbase/core/operations/document_query.cxx +12 -12
- data/ext/couchbase/core/operations/document_query.hxx +0 -4
- data/ext/couchbase/core/operations/document_remove.hxx +0 -4
- data/ext/couchbase/core/operations/document_replace.hxx +0 -4
- data/ext/couchbase/core/operations/document_search.hxx +0 -7
- data/ext/couchbase/core/operations/document_touch.hxx +0 -7
- data/ext/couchbase/core/operations/document_unlock.hxx +0 -6
- data/ext/couchbase/core/operations/document_upsert.hxx +0 -4
- data/ext/couchbase/core/operations/document_view.cxx +2 -0
- data/ext/couchbase/core/operations/document_view.hxx +10 -13
- data/ext/couchbase/core/operations/http_noop.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_index_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_link_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_describe.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_flush.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/bucket_update.hxx +2 -0
- data/ext/couchbase/core/operations/management/change_password.hxx +2 -0
- data/ext/couchbase/core/operations/management/cluster_describe.hxx +2 -0
- data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +2 -0
- data/ext/couchbase/core/operations/management/collection_create.cxx +11 -11
- data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/collection_drop.cxx +11 -11
- data/ext/couchbase/core/operations/management/collection_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/collection_update.cxx +11 -11
- data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
- data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/error_utils.cxx +13 -7
- data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_get_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_get_status.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +2 -0
- data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
- data/ext/couchbase/core/operations/management/group_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/group_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/group_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/group_upsert.hxx +2 -0
- data/ext/couchbase/core/operations/management/query_index_build.hxx +2 -0
- data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +68 -30
- data/ext/couchbase/core/operations/management/query_index_create.cxx +5 -4
- data/ext/couchbase/core/operations/management/query_index_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/query_index_drop.cxx +7 -6
- data/ext/couchbase/core/operations/management/query_index_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/query_index_get_all.hxx +4 -3
- data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +2 -1
- data/ext/couchbase/core/operations/management/role_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/scope_create.cxx +12 -13
- data/ext/couchbase/core/operations/management/scope_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/scope_drop.cxx +8 -9
- data/ext/couchbase/core/operations/management/scope_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/scope_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_get_stats.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_control_query.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_upsert.hxx +2 -0
- data/ext/couchbase/core/operations/management/user_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/user_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/user_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/user_upsert.hxx +2 -0
- data/ext/couchbase/core/operations/management/view_index_drop.hxx +2 -0
- data/ext/couchbase/core/operations/management/view_index_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/view_index_upsert.hxx +2 -0
- data/ext/couchbase/core/operations/operation_traits.hxx +6 -0
- data/ext/couchbase/core/operations.hxx +0 -1
- data/ext/couchbase/core/operations_fwd.hxx +8 -0
- data/ext/couchbase/core/origin.cxx +67 -12
- data/ext/couchbase/core/origin.hxx +13 -8
- data/ext/couchbase/core/orphan_reporter.cxx +164 -0
- data/ext/couchbase/core/orphan_reporter.hxx +65 -0
- data/ext/couchbase/core/sasl/CMakeLists.txt +1 -0
- data/ext/couchbase/core/sasl/client.cc +6 -0
- data/ext/couchbase/core/sasl/mechanism.cc +2 -1
- data/ext/couchbase/core/sasl/mechanism.h +2 -1
- data/ext/couchbase/core/sasl/oauthbearer/oauthbearer.cc +41 -0
- data/ext/couchbase/core/sasl/oauthbearer/oauthbearer.h +47 -0
- data/ext/couchbase/core/tls_context_provider.cxx +44 -0
- data/ext/couchbase/core/tls_context_provider.hxx +44 -0
- data/ext/couchbase/core/topology/configuration.cxx +21 -0
- data/ext/couchbase/core/topology/configuration.hxx +28 -0
- data/ext/couchbase/core/tracing/attribute_helpers.hxx +45 -0
- data/ext/couchbase/core/tracing/constants.hxx +148 -68
- data/ext/couchbase/core/tracing/threshold_logging_options.hxx +0 -3
- data/ext/couchbase/core/tracing/threshold_logging_tracer.cxx +122 -170
- data/ext/couchbase/core/tracing/tracer_wrapper.cxx +17 -24
- data/ext/couchbase/core/tracing/tracer_wrapper.hxx +8 -10
- data/ext/couchbase/core/tracing/wrapper_sdk_tracer.cxx +114 -0
- data/ext/couchbase/core/tracing/wrapper_sdk_tracer.hxx +85 -0
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +16 -14
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +4 -4
- data/ext/couchbase/core/transactions/transactions.cxx +1 -1
- data/ext/couchbase/core/transactions/transactions_cleanup.cxx +1 -2
- data/ext/couchbase/core/utils/byteswap.hxx +12 -0
- data/ext/couchbase/core/utils/concurrent_fixed_priority_queue.hxx +102 -0
- data/ext/couchbase/core/utils/connection_string.cxx +2 -0
- data/ext/couchbase/core/utils/contains_string.cxx +61 -0
- data/ext/couchbase/core/utils/contains_string.hxx +26 -0
- data/ext/couchbase/couchbase/certificate_authenticator.hxx +1 -0
- data/ext/couchbase/couchbase/cluster.hxx +47 -0
- data/ext/couchbase/couchbase/cluster_options.hxx +16 -0
- data/ext/couchbase/couchbase/collection.hxx +133 -15
- data/ext/couchbase/couchbase/error.hxx +16 -0
- data/ext/couchbase/couchbase/error_codes.hxx +48 -48
- data/ext/couchbase/couchbase/jwt_authenticator.hxx +52 -0
- data/ext/couchbase/couchbase/metrics/meter.hxx +2 -1
- data/ext/couchbase/couchbase/metrics/otel_meter.hxx +75 -80
- data/ext/couchbase/couchbase/network_options.hxx +19 -0
- data/ext/couchbase/couchbase/node_id.hxx +123 -0
- data/ext/couchbase/couchbase/node_id_for_options.hxx +61 -0
- data/ext/couchbase/couchbase/node_ids_options.hxx +62 -0
- data/ext/couchbase/couchbase/password_authenticator.hxx +1 -0
- data/ext/couchbase/couchbase/result.hxx +42 -0
- data/ext/couchbase/couchbase/tracing/otel_tracer.hxx +15 -17
- data/ext/couchbase/couchbase/tracing/request_span.hxx +2 -2
- data/ext/couchbase.cxx +4 -0
- data/ext/extconf.rb +1 -0
- data/ext/rcb_analytics.cxx +157 -47
- data/ext/rcb_backend.cxx +118 -71
- data/ext/rcb_buckets.cxx +39 -16
- data/ext/rcb_collections.cxx +36 -12
- data/ext/rcb_crud.cxx +589 -294
- data/ext/rcb_hdr_histogram.cxx +219 -0
- data/ext/rcb_hdr_histogram.hxx +28 -0
- data/ext/rcb_logger.cxx +15 -17
- data/ext/rcb_multi.cxx +142 -59
- data/ext/rcb_observability.cxx +132 -0
- data/ext/rcb_observability.hxx +49 -0
- data/ext/rcb_query.cxx +77 -27
- data/ext/rcb_search.cxx +92 -31
- data/ext/rcb_users.cxx +69 -26
- data/ext/rcb_utils.cxx +91 -0
- data/ext/rcb_utils.hxx +141 -168
- data/ext/rcb_views.cxx +36 -12
- data/lib/active_support/cache/couchbase_store.rb +6 -6
- data/lib/couchbase/authenticator.rb +14 -0
- data/lib/couchbase/binary_collection.rb +37 -22
- data/lib/couchbase/bucket.rb +46 -31
- data/lib/couchbase/cluster.rb +146 -61
- data/lib/couchbase/collection.rb +257 -186
- data/lib/couchbase/datastructures/couchbase_list.rb +82 -50
- data/lib/couchbase/datastructures/couchbase_map.rb +87 -50
- data/lib/couchbase/datastructures/couchbase_queue.rb +65 -38
- data/lib/couchbase/datastructures/couchbase_set.rb +58 -41
- data/lib/couchbase/deprecations.rb +1 -1
- data/lib/couchbase/diagnostics.rb +8 -8
- data/lib/couchbase/errors.rb +7 -1
- data/lib/couchbase/json_transcoder.rb +1 -1
- data/lib/couchbase/management/analytics_index_manager.rb +90 -59
- data/lib/couchbase/management/bucket_manager.rb +73 -45
- data/lib/couchbase/management/collection_manager.rb +86 -43
- data/lib/couchbase/management/collection_query_index_manager.rb +56 -33
- data/lib/couchbase/management/query_index_manager.rb +88 -36
- data/lib/couchbase/management/scope_search_index_manager.rb +119 -52
- data/lib/couchbase/management/search_index_manager.rb +401 -178
- data/lib/couchbase/management/user_manager.rb +343 -174
- data/lib/couchbase/management/view_index_manager.rb +166 -73
- data/lib/couchbase/metrics/logging_meter.rb +108 -0
- data/lib/couchbase/metrics/logging_value_recorder.rb +50 -0
- data/lib/couchbase/metrics/meter.rb +27 -0
- data/lib/couchbase/metrics/noop_meter.rb +30 -0
- data/lib/couchbase/metrics/noop_value_recorder.rb +27 -0
- data/lib/couchbase/metrics/value_recorder.rb +25 -0
- data/lib/couchbase/options.rb +71 -5
- data/lib/couchbase/protostellar/client.rb +0 -2
- data/lib/couchbase/protostellar/cluster.rb +7 -0
- data/lib/couchbase/protostellar/generated/admin/analytics/v1/analytics_pb.rb +54 -0
- data/lib/couchbase/protostellar/generated/admin/analytics/v1/analytics_services_pb.rb +51 -0
- data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_pb.rb +5 -24
- data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_services_pb.rb +16 -0
- data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_pb.rb +5 -24
- data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_services_pb.rb +16 -0
- data/lib/couchbase/protostellar/generated/admin/query/v1/query_pb.rb +5 -24
- data/lib/couchbase/protostellar/generated/admin/query/v1/query_services_pb.rb +18 -0
- data/lib/couchbase/protostellar/generated/admin/search/v1/search_pb.rb +2 -23
- data/lib/couchbase/protostellar/generated/admin/search/v1/search_services_pb.rb +23 -0
- data/lib/couchbase/protostellar/generated/analytics/v1/analytics_pb.rb +4 -25
- data/lib/couchbase/protostellar/generated/analytics/v1/analytics_services_pb.rb +10 -0
- data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_pb.rb +6 -25
- data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_services_pb.rb +18 -0
- data/lib/couchbase/protostellar/generated/internal/xdcr/v1/xdcr_pb.rb +46 -0
- data/lib/couchbase/protostellar/generated/internal/xdcr/v1/xdcr_services_pb.rb +56 -0
- data/lib/couchbase/protostellar/generated/kv/v1/kv_pb.rb +3 -26
- data/lib/couchbase/protostellar/generated/kv/v1/kv_services_pb.rb +47 -0
- data/lib/couchbase/protostellar/generated/query/v1/query_pb.rb +4 -26
- data/lib/couchbase/protostellar/generated/query/v1/query_services_pb.rb +10 -0
- data/lib/couchbase/protostellar/generated/routing/v2/routing_pb.rb +26 -0
- data/lib/couchbase/protostellar/generated/routing/v2/routing_services_pb.rb +43 -0
- data/lib/couchbase/protostellar/generated/search/v1/search_pb.rb +5 -26
- data/lib/couchbase/protostellar/generated/search/v1/search_services_pb.rb +11 -0
- data/lib/couchbase/protostellar/generated/transactions/v1/transactions_pb.rb +2 -23
- data/lib/couchbase/protostellar/generated/transactions/v1/transactions_services_pb.rb +30 -0
- data/lib/couchbase/protostellar/generated/view/v1/view_pb.rb +2 -23
- data/lib/couchbase/protostellar/generated/view/v1/view_services_pb.rb +9 -0
- data/lib/couchbase/protostellar/request_generator/admin/collection.rb +4 -2
- data/lib/couchbase/protostellar/request_generator/admin/query.rb +2 -0
- data/lib/couchbase/protostellar/request_generator/kv.rb +1 -1
- data/lib/couchbase/protostellar/scope.rb +4 -0
- data/lib/couchbase/scope.rb +62 -48
- data/lib/couchbase/search_options.rb +18 -18
- data/lib/couchbase/tracing/noop_span.rb +29 -0
- data/lib/couchbase/tracing/noop_tracer.rb +29 -0
- data/lib/couchbase/tracing/request_span.rb +34 -0
- data/lib/couchbase/tracing/request_tracer.rb +28 -0
- data/lib/couchbase/tracing/threshold_logging_span.rb +112 -0
- data/lib/couchbase/tracing/threshold_logging_tracer.rb +231 -0
- data/lib/couchbase/utils/hdr_histogram.rb +55 -0
- data/lib/couchbase/utils/observability.rb +263 -0
- data/lib/couchbase/utils/observability_constants.rb +200 -0
- data/lib/couchbase/utils/stdlib_logger_adapter.rb +1 -3
- data/lib/couchbase/version.rb +1 -1
- data/lib/couchbase.rb +2 -2
- metadata +72 -8
- data/lib/couchbase/protostellar/generated/routing/v1/routing_pb.rb +0 -52
- data/lib/couchbase/protostellar/generated/routing/v1/routing_services_pb.rb +0 -30
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
|
+
#include "deprecation_utils.hxx"
|
|
20
21
|
#include "diagnostics.hxx"
|
|
22
|
+
#include "error.hxx"
|
|
21
23
|
#include "operations_fwd.hxx"
|
|
22
24
|
#include "origin.hxx"
|
|
23
25
|
#include "topology/configuration.hxx"
|
|
@@ -37,6 +39,17 @@ namespace couchbase::core
|
|
|
37
39
|
{
|
|
38
40
|
class crud_component;
|
|
39
41
|
class cluster_impl;
|
|
42
|
+
class cluster_label_listener;
|
|
43
|
+
|
|
44
|
+
namespace tracing
|
|
45
|
+
{
|
|
46
|
+
class tracer_wrapper;
|
|
47
|
+
} // namespace tracing
|
|
48
|
+
|
|
49
|
+
namespace metrics
|
|
50
|
+
{
|
|
51
|
+
class meter_wrapper;
|
|
52
|
+
} // namespace metrics
|
|
40
53
|
|
|
41
54
|
namespace mcbp
|
|
42
55
|
{
|
|
@@ -80,6 +93,8 @@ public:
|
|
|
80
93
|
utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
|
|
81
94
|
handler) const;
|
|
82
95
|
|
|
96
|
+
[[nodiscard]] auto update_credentials(const core::cluster_credentials& auth) const -> core::error;
|
|
97
|
+
|
|
83
98
|
void execute(o::analytics_request request, mf<void(o::analytics_response)>&& handler) const;
|
|
84
99
|
void execute(o::append_request request, mf<void(o::append_response)>&& handler) const;
|
|
85
100
|
void execute(o::decrement_request request, mf<void(o::decrement_response)>&& handler) const;
|
|
@@ -129,6 +144,10 @@ public:
|
|
|
129
144
|
void execute(o::replace_request_with_legacy_durability request,
|
|
130
145
|
mf<void(o::replace_response)>&& handler) const;
|
|
131
146
|
|
|
147
|
+
COUCHBASE_DEPRECATED(
|
|
148
|
+
"1.3.0",
|
|
149
|
+
"Views are deprecated in Couchbase Server 7.0+. Instead of views, use the Query "
|
|
150
|
+
"Service (SQL++).")
|
|
132
151
|
void execute(o::document_view_request request,
|
|
133
152
|
mf<void(o::document_view_response)>&& handler) const;
|
|
134
153
|
void execute(o::http_noop_request request, mf<void(o::http_noop_response)>&& handler) const;
|
|
@@ -273,6 +292,14 @@ public:
|
|
|
273
292
|
void execute(impl::observe_seqno_request request,
|
|
274
293
|
mf<void(impl::observe_seqno_response)>&& handler) const;
|
|
275
294
|
|
|
295
|
+
void execute(o::get_replica_request_with_cancellation request,
|
|
296
|
+
mf<void(impl::get_replica_response)>&& handler) const;
|
|
297
|
+
void execute(o::get_request_with_cancellation request, mf<void(o::get_response)>&& handler) const;
|
|
298
|
+
void execute(o::lookup_in_request_with_cancellation request,
|
|
299
|
+
mf<void(o::lookup_in_response)>&& handler) const;
|
|
300
|
+
void execute(o::lookup_in_replica_request_with_cancellation request,
|
|
301
|
+
mf<void(impl::lookup_in_replica_response)>&& handler) const;
|
|
302
|
+
|
|
276
303
|
void execute(
|
|
277
304
|
om::analytics_link_replace_request<management::analytics::azure_blob_external_link> request,
|
|
278
305
|
mf<void(om::analytics_link_replace_response)>&& handler) const;
|
|
@@ -312,6 +339,11 @@ public:
|
|
|
312
339
|
|
|
313
340
|
[[nodiscard]] auto to_string() const -> std::string;
|
|
314
341
|
|
|
342
|
+
[[nodiscard]] auto tracer() const -> const std::shared_ptr<tracing::tracer_wrapper>&;
|
|
343
|
+
[[nodiscard]] auto meter() const -> const std::shared_ptr<metrics::meter_wrapper>&;
|
|
344
|
+
[[nodiscard]] auto cluster_label_listener() const
|
|
345
|
+
-> const std::shared_ptr<cluster_label_listener>&;
|
|
346
|
+
|
|
315
347
|
private:
|
|
316
348
|
std::shared_ptr<cluster_impl> impl_;
|
|
317
349
|
};
|
|
@@ -24,4 +24,29 @@ cluster_credentials::uses_certificate() const -> bool
|
|
|
24
24
|
{
|
|
25
25
|
return !certificate_path.empty();
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
auto
|
|
29
|
+
cluster_credentials::requires_tls() const -> bool
|
|
30
|
+
{
|
|
31
|
+
return uses_certificate() || uses_jwt();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
auto
|
|
35
|
+
cluster_credentials::uses_jwt() const -> bool
|
|
36
|
+
{
|
|
37
|
+
return !jwt_token.empty();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
auto
|
|
41
|
+
cluster_credentials::uses_password() const -> bool
|
|
42
|
+
{
|
|
43
|
+
return !username.empty() && !password.empty();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
auto
|
|
47
|
+
cluster_credentials::is_same_type(const cluster_credentials& other) const -> bool
|
|
48
|
+
{
|
|
49
|
+
return uses_certificate() == other.uses_certificate() && uses_jwt() == other.uses_jwt() &&
|
|
50
|
+
uses_password() == other.uses_password();
|
|
51
|
+
}
|
|
27
52
|
} // namespace couchbase::core
|
|
@@ -28,9 +28,14 @@ struct cluster_credentials {
|
|
|
28
28
|
std::string password{};
|
|
29
29
|
std::string certificate_path{};
|
|
30
30
|
std::string key_path{};
|
|
31
|
+
std::string jwt_token{};
|
|
31
32
|
std::optional<std::vector<std::string>> allowed_sasl_mechanisms{};
|
|
32
33
|
|
|
33
34
|
[[nodiscard]] auto uses_certificate() const -> bool;
|
|
35
|
+
[[nodiscard]] auto requires_tls() const -> bool;
|
|
36
|
+
[[nodiscard]] auto uses_jwt() const -> bool;
|
|
37
|
+
[[nodiscard]] auto uses_password() const -> bool;
|
|
38
|
+
[[nodiscard]] auto is_same_type(const cluster_credentials& other) const -> bool;
|
|
34
39
|
};
|
|
35
40
|
|
|
36
41
|
} // namespace couchbase::core
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2025-Present Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include "cluster_label_listener.hxx"
|
|
19
|
+
|
|
20
|
+
#include <mutex>
|
|
21
|
+
#include <shared_mutex>
|
|
22
|
+
|
|
23
|
+
namespace couchbase::core
|
|
24
|
+
{
|
|
25
|
+
class cluster_label_listener_impl
|
|
26
|
+
{
|
|
27
|
+
public:
|
|
28
|
+
cluster_label_listener_impl() = default;
|
|
29
|
+
|
|
30
|
+
void update_config(topology::configuration config)
|
|
31
|
+
{
|
|
32
|
+
const std::scoped_lock lock(mutex_);
|
|
33
|
+
if (config.cluster_name.has_value() && (cluster_name_ != config.cluster_name)) {
|
|
34
|
+
cluster_name_ = std::move(config.cluster_name);
|
|
35
|
+
}
|
|
36
|
+
if (config.cluster_uuid.has_value() && (cluster_uuid_ != config.cluster_uuid)) {
|
|
37
|
+
cluster_uuid_ = std::move(config.cluster_uuid);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
auto cluster_labels() -> cluster_label_listener::labels
|
|
42
|
+
{
|
|
43
|
+
const std::shared_lock lock(mutex_);
|
|
44
|
+
return cluster_label_listener::labels{
|
|
45
|
+
cluster_name_,
|
|
46
|
+
cluster_uuid_,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private:
|
|
51
|
+
std::shared_mutex mutex_{};
|
|
52
|
+
std::optional<std::string> cluster_name_{};
|
|
53
|
+
std::optional<std::string> cluster_uuid_{};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
cluster_label_listener::cluster_label_listener()
|
|
57
|
+
: impl_{ std::make_shared<cluster_label_listener_impl>() }
|
|
58
|
+
{
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
void
|
|
62
|
+
cluster_label_listener::update_config(topology::configuration config)
|
|
63
|
+
{
|
|
64
|
+
impl_->update_config(std::move(config));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
auto
|
|
68
|
+
cluster_label_listener::cluster_labels() const -> labels
|
|
69
|
+
{
|
|
70
|
+
return impl_->cluster_labels();
|
|
71
|
+
}
|
|
72
|
+
} // namespace couchbase::core
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2025-Present Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#pragma once
|
|
19
|
+
|
|
20
|
+
#include "config_listener.hxx"
|
|
21
|
+
|
|
22
|
+
#include <memory>
|
|
23
|
+
#include <optional>
|
|
24
|
+
#include <string>
|
|
25
|
+
|
|
26
|
+
namespace couchbase::core
|
|
27
|
+
{
|
|
28
|
+
class cluster_label_listener_impl;
|
|
29
|
+
|
|
30
|
+
class cluster_label_listener : public config_listener
|
|
31
|
+
{
|
|
32
|
+
public:
|
|
33
|
+
cluster_label_listener();
|
|
34
|
+
void update_config(topology::configuration config) override;
|
|
35
|
+
|
|
36
|
+
struct labels {
|
|
37
|
+
std::optional<std::string> cluster_name;
|
|
38
|
+
std::optional<std::string> cluster_uuid;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
[[nodiscard]] auto cluster_labels() const -> labels;
|
|
42
|
+
|
|
43
|
+
private:
|
|
44
|
+
std::shared_ptr<cluster_label_listener_impl> impl_;
|
|
45
|
+
};
|
|
46
|
+
} // namespace couchbase::core
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include "core/io/dns_config.hxx"
|
|
22
22
|
#include "core/io/ip_protocol.hxx"
|
|
23
23
|
#include "core/metrics/logging_meter_options.hxx"
|
|
24
|
+
#include "core/orphan_reporter.hxx"
|
|
24
25
|
#include "core/tracing/threshold_logging_options.hxx"
|
|
25
26
|
#include "service_type.hxx"
|
|
26
27
|
#include "timeout_defaults.hxx"
|
|
@@ -72,9 +73,11 @@ public:
|
|
|
72
73
|
bool enable_compression{ true };
|
|
73
74
|
bool enable_tracing{ true };
|
|
74
75
|
bool enable_metrics{ true };
|
|
76
|
+
bool enable_orphan_reporting{ true };
|
|
75
77
|
std::string network{ "auto" };
|
|
76
78
|
tracing::threshold_logging_options tracing_options{};
|
|
77
79
|
metrics::logging_meter_options metrics_options{};
|
|
80
|
+
orphan_reporter_options orphan_options{};
|
|
78
81
|
tls_verify_mode tls_verify{ tls_verify_mode::peer };
|
|
79
82
|
std::shared_ptr<couchbase::tracing::request_tracer> tracer{ nullptr };
|
|
80
83
|
std::shared_ptr<couchbase::metrics::meter> meter{ nullptr };
|
|
@@ -110,6 +113,7 @@ public:
|
|
|
110
113
|
};
|
|
111
114
|
bool preserve_bootstrap_nodes_order{ false };
|
|
112
115
|
bool allow_enterprise_analytics{ false };
|
|
116
|
+
bool enable_lazy_connections{ false };
|
|
113
117
|
};
|
|
114
118
|
|
|
115
119
|
} // namespace couchbase::core
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2020-Present Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#pragma once
|
|
19
|
+
|
|
20
|
+
#ifndef COUCHBASE_DEPRECATED
|
|
21
|
+
#ifdef COUCHBASE_CXX_CLIENT_IGNORE_CORE_DEPRECATIONS
|
|
22
|
+
#define COUCHBASE_DEPRECATED(version, msg)
|
|
23
|
+
#else
|
|
24
|
+
#define COUCHBASE_DEPRECATED(version, msg) [[deprecated("Since SDK " version ". " msg)]]
|
|
25
|
+
#endif
|
|
26
|
+
#endif
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2022-Present Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
|
|
6
|
+
* except in compliance with the License. You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
11
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
12
|
+
* ANY KIND, either express or implied. See the License for the specific language governing
|
|
13
|
+
* permissions and limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#pragma once
|
|
17
|
+
|
|
18
|
+
#include <string>
|
|
19
|
+
#include <system_error>
|
|
20
|
+
|
|
21
|
+
namespace couchbase::core
|
|
22
|
+
{
|
|
23
|
+
struct error {
|
|
24
|
+
std::error_code ec;
|
|
25
|
+
std::string message;
|
|
26
|
+
};
|
|
27
|
+
} // namespace couchbase::core
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
|
+
#include <couchbase/node_id.hxx>
|
|
20
21
|
#include <couchbase/retry_reason.hxx>
|
|
21
22
|
|
|
22
23
|
#include <cstdint>
|
|
@@ -74,6 +75,23 @@ public:
|
|
|
74
75
|
{
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
base_error_context(std::string operation_id,
|
|
79
|
+
std::error_code ec,
|
|
80
|
+
std::optional<std::string> last_dispatched_to,
|
|
81
|
+
std::optional<std::string> last_dispatched_from,
|
|
82
|
+
std::size_t retry_attempts,
|
|
83
|
+
std::set<retry_reason> retry_reasons,
|
|
84
|
+
couchbase::node_id last_dispatched_to_node_id)
|
|
85
|
+
: operation_id_{ std::move(operation_id) }
|
|
86
|
+
, ec_{ ec }
|
|
87
|
+
, last_dispatched_to_{ std::move(last_dispatched_to) }
|
|
88
|
+
, last_dispatched_from_{ std::move(last_dispatched_from) }
|
|
89
|
+
, retry_attempts_{ retry_attempts }
|
|
90
|
+
, retry_reasons_{ std::move(retry_reasons) }
|
|
91
|
+
, last_dispatched_to_node_id_{ std::move(last_dispatched_to_node_id) }
|
|
92
|
+
{
|
|
93
|
+
}
|
|
94
|
+
|
|
77
95
|
[[nodiscard]] virtual auto operation_id() const -> const std::string&
|
|
78
96
|
{
|
|
79
97
|
return operation_id_;
|
|
@@ -173,6 +191,19 @@ public:
|
|
|
173
191
|
return retry_reasons_.count(reason) > 0;
|
|
174
192
|
}
|
|
175
193
|
|
|
194
|
+
/**
|
|
195
|
+
* Identity of the cluster node that last handled this request.
|
|
196
|
+
*
|
|
197
|
+
* @return node_id (default-constructed / falsy when unknown)
|
|
198
|
+
*
|
|
199
|
+
* @since 1.3.2
|
|
200
|
+
* @uncommitted
|
|
201
|
+
*/
|
|
202
|
+
[[nodiscard]] virtual auto last_dispatched_to_node_id() const -> const couchbase::node_id&
|
|
203
|
+
{
|
|
204
|
+
return last_dispatched_to_node_id_;
|
|
205
|
+
}
|
|
206
|
+
|
|
176
207
|
private:
|
|
177
208
|
std::string operation_id_{};
|
|
178
209
|
std::error_code ec_{};
|
|
@@ -180,5 +211,6 @@ private:
|
|
|
180
211
|
std::optional<std::string> last_dispatched_from_{};
|
|
181
212
|
std::size_t retry_attempts_{ 0 };
|
|
182
213
|
std::set<retry_reason> retry_reasons_{};
|
|
214
|
+
couchbase::node_id last_dispatched_to_node_id_{};
|
|
183
215
|
};
|
|
184
216
|
} // namespace couchbase::core
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#include "subdocument_error_context.hxx"
|
|
21
21
|
|
|
22
22
|
#include "core/document_id.hxx"
|
|
23
|
+
#include "core/impl/node_id.hxx"
|
|
23
24
|
#include "key_value_error_context.hxx"
|
|
24
25
|
|
|
25
26
|
#include <optional>
|
|
@@ -57,12 +58,34 @@ make_key_value_error_context(std::error_code ec,
|
|
|
57
58
|
auto retry_attempts = command->request.retries.retry_attempts();
|
|
58
59
|
auto retry_reasons = command->request.retries.retry_reasons();
|
|
59
60
|
|
|
61
|
+
// Build node_id from the session that handled this request.
|
|
62
|
+
// The session carries the node_uuid (empty on pre-8.0 servers),
|
|
63
|
+
// canonical hostname, and port — we use these to construct the
|
|
64
|
+
// fallback identifier when nodeUUID is unavailable.
|
|
65
|
+
//
|
|
66
|
+
// Only construct a node_id once the session has actually been bound to a
|
|
67
|
+
// concrete node: either a non-empty UUID, or a non-empty canonical
|
|
68
|
+
// hostname *and* a non-zero canonical KV port. Otherwise the fallback
|
|
69
|
+
// hash of ("", "", 0) would yield a truthy-but-meaningless node_id and
|
|
70
|
+
// break the contract that a default-constructed node_id means "unknown".
|
|
71
|
+
couchbase::node_id dispatched_to_node_id{};
|
|
72
|
+
if (command->session_) {
|
|
73
|
+
const auto& node_uuid = command->session_->node_uuid();
|
|
74
|
+
const auto& canonical_hostname = command->session_->canonical_hostname();
|
|
75
|
+
const auto canonical_port = command->session_->canonical_port_number();
|
|
76
|
+
if (!node_uuid.empty() || (!canonical_hostname.empty() && canonical_port != 0)) {
|
|
77
|
+
dispatched_to_node_id =
|
|
78
|
+
internal_node_id::build(node_uuid, canonical_hostname, canonical_port);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
60
82
|
return { command->id_,
|
|
61
83
|
ec,
|
|
62
84
|
command->last_dispatched_to_,
|
|
63
85
|
command->last_dispatched_from_,
|
|
64
86
|
retry_attempts,
|
|
65
87
|
std::move(retry_reasons),
|
|
88
|
+
std::move(dispatched_to_node_id),
|
|
66
89
|
key,
|
|
67
90
|
bucket,
|
|
68
91
|
scope,
|
|
@@ -101,6 +101,41 @@ public:
|
|
|
101
101
|
{
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
key_value_error_context(std::string operation_id,
|
|
105
|
+
std::error_code ec,
|
|
106
|
+
std::optional<std::string> last_dispatched_to,
|
|
107
|
+
std::optional<std::string> last_dispatched_from,
|
|
108
|
+
std::size_t retry_attempts,
|
|
109
|
+
std::set<retry_reason> retry_reasons,
|
|
110
|
+
couchbase::node_id dispatched_to_node_id,
|
|
111
|
+
std::string id,
|
|
112
|
+
std::string bucket,
|
|
113
|
+
std::string scope,
|
|
114
|
+
std::string collection,
|
|
115
|
+
std::uint32_t opaque,
|
|
116
|
+
std::optional<key_value_status_code> status_code,
|
|
117
|
+
couchbase::cas cas,
|
|
118
|
+
std::optional<key_value_error_map_info> error_map_info,
|
|
119
|
+
std::optional<key_value_extended_error_info> extended_error_info)
|
|
120
|
+
: base_error_context{ std::move(operation_id),
|
|
121
|
+
ec,
|
|
122
|
+
std::move(last_dispatched_to),
|
|
123
|
+
std::move(last_dispatched_from),
|
|
124
|
+
retry_attempts,
|
|
125
|
+
std::move(retry_reasons),
|
|
126
|
+
std::move(dispatched_to_node_id) }
|
|
127
|
+
, id_{ std::move(id) }
|
|
128
|
+
, bucket_{ std::move(bucket) }
|
|
129
|
+
, scope_{ std::move(scope) }
|
|
130
|
+
, collection_{ std::move(collection) }
|
|
131
|
+
, opaque_{ opaque }
|
|
132
|
+
, status_code_{ status_code }
|
|
133
|
+
, cas_{ cas }
|
|
134
|
+
, error_map_info_{ std::move(error_map_info) }
|
|
135
|
+
, extended_error_info_{ std::move(extended_error_info) }
|
|
136
|
+
{
|
|
137
|
+
}
|
|
138
|
+
|
|
104
139
|
/**
|
|
105
140
|
* Returns identifier (key) of the document referenced in the operation.
|
|
106
141
|
*
|
|
@@ -102,6 +102,47 @@ public:
|
|
|
102
102
|
{
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
subdocument_error_context(std::string operation_id,
|
|
106
|
+
std::error_code ec,
|
|
107
|
+
std::optional<std::string> last_dispatched_to,
|
|
108
|
+
std::optional<std::string> last_dispatched_from,
|
|
109
|
+
std::size_t retry_attempts,
|
|
110
|
+
std::set<retry_reason> retry_reasons,
|
|
111
|
+
couchbase::node_id dispatched_to_node_id,
|
|
112
|
+
std::string id,
|
|
113
|
+
std::string bucket,
|
|
114
|
+
std::string scope,
|
|
115
|
+
std::string collection,
|
|
116
|
+
std::uint32_t opaque,
|
|
117
|
+
std::optional<key_value_status_code> status_code,
|
|
118
|
+
couchbase::cas cas,
|
|
119
|
+
std::optional<key_value_error_map_info> error_map_info,
|
|
120
|
+
std::optional<key_value_extended_error_info> extended_error_info,
|
|
121
|
+
std::optional<std::string> first_error_path,
|
|
122
|
+
std::optional<std::uint64_t> first_error_index,
|
|
123
|
+
bool deleted)
|
|
124
|
+
: key_value_error_context{ std::move(operation_id),
|
|
125
|
+
ec,
|
|
126
|
+
std::move(last_dispatched_to),
|
|
127
|
+
std::move(last_dispatched_from),
|
|
128
|
+
retry_attempts,
|
|
129
|
+
std::move(retry_reasons),
|
|
130
|
+
std::move(dispatched_to_node_id),
|
|
131
|
+
std::move(id),
|
|
132
|
+
std::move(bucket),
|
|
133
|
+
std::move(scope),
|
|
134
|
+
std::move(collection),
|
|
135
|
+
opaque,
|
|
136
|
+
status_code,
|
|
137
|
+
cas,
|
|
138
|
+
std::move(error_map_info),
|
|
139
|
+
std::move(extended_error_info) }
|
|
140
|
+
, first_error_path_{ std::move(first_error_path) }
|
|
141
|
+
, first_error_index_{ first_error_index }
|
|
142
|
+
, deleted_{ deleted }
|
|
143
|
+
{
|
|
144
|
+
}
|
|
145
|
+
|
|
105
146
|
/**
|
|
106
147
|
* Returns path of the operation that generated first error
|
|
107
148
|
*
|