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
|
@@ -210,14 +210,13 @@ get_projected_request::make_response(key_value_error_context&& ctx,
|
|
|
210
210
|
response.ctx.override_ec(errc::common::parsing_failure);
|
|
211
211
|
return response;
|
|
212
212
|
}
|
|
213
|
-
tao::json::value new_doc;
|
|
213
|
+
tao::json::value new_doc = tao::json::empty_object;
|
|
214
214
|
for (const auto& projection : projections) {
|
|
215
215
|
if (auto value_to_apply = subdoc_lookup(full_doc, projection)) {
|
|
216
216
|
subdoc_apply_projection(new_doc, projection, *value_to_apply, preserve_array_indexes);
|
|
217
|
-
} else {
|
|
218
|
-
response.ctx.override_ec(errc::key_value::path_not_found);
|
|
219
|
-
return response;
|
|
220
217
|
}
|
|
218
|
+
// We ignore paths that were not found, similar to how we ignore them in the subdoc
|
|
219
|
+
// multi-lookup below.
|
|
221
220
|
}
|
|
222
221
|
response.value = utils::json::generate_binary(new_doc);
|
|
223
222
|
}
|
|
@@ -62,13 +62,4 @@ struct get_projected_request {
|
|
|
62
62
|
const encoded_response_type& encoded) const
|
|
63
63
|
-> get_projected_response;
|
|
64
64
|
};
|
|
65
|
-
|
|
66
65
|
} // namespace couchbase::core::operations
|
|
67
|
-
|
|
68
|
-
namespace couchbase::core::io::mcbp_traits
|
|
69
|
-
{
|
|
70
|
-
template<>
|
|
71
|
-
struct supports_parent_span<couchbase::core::operations::get_projected_request>
|
|
72
|
-
: public std::true_type {
|
|
73
|
-
};
|
|
74
|
-
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -79,9 +79,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
79
79
|
template<>
|
|
80
80
|
struct supports_durability<couchbase::core::operations::increment_request> : public std::true_type {
|
|
81
81
|
};
|
|
82
|
-
|
|
83
|
-
template<>
|
|
84
|
-
struct supports_parent_span<couchbase::core::operations::increment_request>
|
|
85
|
-
: public std::true_type {
|
|
86
|
-
};
|
|
87
82
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -77,8 +77,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
77
77
|
template<>
|
|
78
78
|
struct supports_durability<couchbase::core::operations::insert_request> : public std::true_type {
|
|
79
79
|
};
|
|
80
|
-
|
|
81
|
-
template<>
|
|
82
|
-
struct supports_parent_span<couchbase::core::operations::insert_request> : public std::true_type {
|
|
83
|
-
};
|
|
84
80
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -72,13 +72,4 @@ struct lookup_in_request {
|
|
|
72
72
|
const encoded_response_type& encoded) const
|
|
73
73
|
-> lookup_in_response;
|
|
74
74
|
};
|
|
75
|
-
|
|
76
75
|
} // namespace couchbase::core::operations
|
|
77
|
-
namespace couchbase::core::io::mcbp_traits
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
template<>
|
|
81
|
-
struct supports_parent_span<couchbase::core::operations::lookup_in_request>
|
|
82
|
-
: public std::true_type {
|
|
83
|
-
};
|
|
84
|
-
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -23,10 +23,12 @@
|
|
|
23
23
|
#include "core/impl/subdoc/command.hxx"
|
|
24
24
|
#include "core/operations/document_lookup_in.hxx"
|
|
25
25
|
#include "core/operations/operation_traits.hxx"
|
|
26
|
+
#include "core/tracing/constants.hxx"
|
|
26
27
|
#include "core/utils/movable_function.hxx"
|
|
27
28
|
|
|
28
29
|
#include <couchbase/codec/encoded_value.hxx>
|
|
29
30
|
#include <couchbase/error_codes.hxx>
|
|
31
|
+
#include <couchbase/node_id.hxx>
|
|
30
32
|
|
|
31
33
|
#include <functional>
|
|
32
34
|
#include <memory>
|
|
@@ -49,6 +51,7 @@ struct lookup_in_all_replicas_response {
|
|
|
49
51
|
couchbase::cas cas{};
|
|
50
52
|
bool deleted{ false };
|
|
51
53
|
bool is_replica{ true };
|
|
54
|
+
couchbase::node_id dispatched_to_node_id{};
|
|
52
55
|
};
|
|
53
56
|
subdocument_error_context ctx{};
|
|
54
57
|
std::vector<entry> entries{};
|
|
@@ -152,14 +155,39 @@ struct lookup_in_all_replicas_request {
|
|
|
152
155
|
auto ctx = std::make_shared<replica_context>(std::move(h), nodes.size());
|
|
153
156
|
|
|
154
157
|
for (const auto& node : nodes) {
|
|
158
|
+
auto subop_span = core->tracer()->create_span(
|
|
159
|
+
node.is_replica ? tracing::operation::mcbp_lookup_in_replica
|
|
160
|
+
: tracing::operation::mcbp_lookup_in,
|
|
161
|
+
parent_span);
|
|
162
|
+
|
|
163
|
+
if (subop_span->uses_tags()) {
|
|
164
|
+
subop_span->add_tag(tracing::attributes::op::service, tracing::service::key_value);
|
|
165
|
+
subop_span->add_tag(tracing::attributes::op::operation_name,
|
|
166
|
+
node.is_replica ? tracing::operation::mcbp_lookup_in_replica
|
|
167
|
+
: tracing::operation::mcbp_lookup_in);
|
|
168
|
+
subop_span->add_tag(tracing::attributes::op::bucket_name, id.bucket());
|
|
169
|
+
subop_span->add_tag(tracing::attributes::op::scope_name, id.scope());
|
|
170
|
+
subop_span->add_tag(tracing::attributes::op::collection_name, id.collection());
|
|
171
|
+
}
|
|
172
|
+
|
|
155
173
|
if (node.is_replica) {
|
|
156
174
|
document_id replica_id{ id };
|
|
157
175
|
replica_id.node_index(node.index);
|
|
158
176
|
auto replica_req = impl::lookup_in_replica_request{
|
|
159
|
-
std::move(replica_id),
|
|
177
|
+
std::move(replica_id),
|
|
178
|
+
specs,
|
|
179
|
+
timeout,
|
|
180
|
+
subop_span,
|
|
160
181
|
};
|
|
161
182
|
replica_req.access_deleted = access_deleted;
|
|
162
|
-
core->execute(replica_req, [ctx](auto&& resp) {
|
|
183
|
+
core->execute(replica_req, [ctx, subop_span](auto&& resp) {
|
|
184
|
+
{
|
|
185
|
+
if (subop_span->uses_tags()) {
|
|
186
|
+
subop_span->add_tag(tracing::attributes::op::retry_count,
|
|
187
|
+
resp.ctx.retry_attempts());
|
|
188
|
+
}
|
|
189
|
+
subop_span->end();
|
|
190
|
+
}
|
|
163
191
|
handler_type local_handler{};
|
|
164
192
|
{
|
|
165
193
|
std::scoped_lock lock(ctx->mutex_);
|
|
@@ -177,6 +205,7 @@ struct lookup_in_all_replicas_request {
|
|
|
177
205
|
top_entry.cas = resp.cas;
|
|
178
206
|
top_entry.deleted = resp.deleted;
|
|
179
207
|
top_entry.is_replica = true;
|
|
208
|
+
top_entry.dispatched_to_node_id = resp.ctx.last_dispatched_to_node_id();
|
|
180
209
|
for (auto& field : resp.fields) {
|
|
181
210
|
lookup_in_all_replicas_response::entry::lookup_in_entry lookup_in_entry{};
|
|
182
211
|
lookup_in_entry.path = field.path;
|
|
@@ -206,8 +235,24 @@ struct lookup_in_all_replicas_request {
|
|
|
206
235
|
});
|
|
207
236
|
} else {
|
|
208
237
|
core->execute(
|
|
209
|
-
lookup_in_request{
|
|
210
|
-
|
|
238
|
+
lookup_in_request{
|
|
239
|
+
document_id{ id },
|
|
240
|
+
{},
|
|
241
|
+
{},
|
|
242
|
+
false,
|
|
243
|
+
specs,
|
|
244
|
+
timeout,
|
|
245
|
+
{},
|
|
246
|
+
subop_span,
|
|
247
|
+
},
|
|
248
|
+
[ctx, subop_span](auto&& resp) {
|
|
249
|
+
{
|
|
250
|
+
if (subop_span->uses_tags()) {
|
|
251
|
+
subop_span->add_tag(tracing::attributes::op::retry_count,
|
|
252
|
+
resp.ctx.retry_attempts());
|
|
253
|
+
}
|
|
254
|
+
subop_span->end();
|
|
255
|
+
}
|
|
211
256
|
handler_type local_handler{};
|
|
212
257
|
{
|
|
213
258
|
std::scoped_lock lock(ctx->mutex_);
|
|
@@ -225,6 +270,7 @@ struct lookup_in_all_replicas_request {
|
|
|
225
270
|
top_entry.cas = resp.cas;
|
|
226
271
|
top_entry.deleted = resp.deleted;
|
|
227
272
|
top_entry.is_replica = false;
|
|
273
|
+
top_entry.dispatched_to_node_id = resp.ctx.last_dispatched_to_node_id();
|
|
228
274
|
for (auto& field : resp.fields) {
|
|
229
275
|
lookup_in_all_replicas_response::entry::lookup_in_entry lookup_in_entry{};
|
|
230
276
|
lookup_in_entry.path = field.path;
|
|
@@ -21,8 +21,10 @@
|
|
|
21
21
|
#include "core/impl/lookup_in_replica.hxx"
|
|
22
22
|
#include "core/impl/replica_utils.hxx"
|
|
23
23
|
#include "core/impl/subdoc/command.hxx"
|
|
24
|
+
#include "core/impl/with_cancellation.hxx"
|
|
24
25
|
#include "core/operations/document_lookup_in.hxx"
|
|
25
26
|
#include "core/operations/operation_traits.hxx"
|
|
27
|
+
#include "core/tracing/constants.hxx"
|
|
26
28
|
#include "core/utils/movable_function.hxx"
|
|
27
29
|
|
|
28
30
|
#include <couchbase/codec/encoded_value.hxx>
|
|
@@ -139,23 +141,71 @@ struct lookup_in_any_replica_request {
|
|
|
139
141
|
{
|
|
140
142
|
}
|
|
141
143
|
|
|
144
|
+
void add_cancellation_token(std::shared_ptr<impl::cancellation_token> token)
|
|
145
|
+
{
|
|
146
|
+
std::scoped_lock<std::mutex> lock(cancel_tokens_mutex_);
|
|
147
|
+
cancel_tokens_.emplace_back(std::move(token));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
auto get_cancellation_tokens()
|
|
151
|
+
-> std::vector<std::shared_ptr<impl::cancellation_token>>
|
|
152
|
+
{
|
|
153
|
+
std::vector<std::shared_ptr<impl::cancellation_token>> tokens{};
|
|
154
|
+
{
|
|
155
|
+
std::scoped_lock<std::mutex> lock(cancel_tokens_mutex_);
|
|
156
|
+
std::swap(tokens, cancel_tokens_);
|
|
157
|
+
}
|
|
158
|
+
return tokens;
|
|
159
|
+
}
|
|
160
|
+
|
|
142
161
|
handler_type handler_;
|
|
143
162
|
std::size_t expected_responses_;
|
|
144
163
|
bool done_{ false };
|
|
145
164
|
std::mutex mutex_{};
|
|
165
|
+
std::vector<std::shared_ptr<impl::cancellation_token>> cancel_tokens_{};
|
|
166
|
+
std::mutex cancel_tokens_mutex_{};
|
|
146
167
|
};
|
|
147
168
|
auto ctx = std::make_shared<replica_context>(std::move(h), nodes.size());
|
|
148
169
|
|
|
149
170
|
for (const auto& node : nodes) {
|
|
171
|
+
auto subop_span = core->tracer()->create_span(
|
|
172
|
+
node.is_replica ? tracing::operation::mcbp_lookup_in_replica
|
|
173
|
+
: tracing::operation::mcbp_lookup_in,
|
|
174
|
+
parent_span);
|
|
175
|
+
|
|
176
|
+
if (subop_span->uses_tags()) {
|
|
177
|
+
subop_span->add_tag(tracing::attributes::op::service, tracing::service::key_value);
|
|
178
|
+
subop_span->add_tag(tracing::attributes::op::operation_name,
|
|
179
|
+
node.is_replica ? tracing::operation::mcbp_lookup_in_replica
|
|
180
|
+
: tracing::operation::mcbp_lookup_in);
|
|
181
|
+
subop_span->add_tag(tracing::attributes::op::bucket_name, id.bucket());
|
|
182
|
+
subop_span->add_tag(tracing::attributes::op::scope_name, id.scope());
|
|
183
|
+
subop_span->add_tag(tracing::attributes::op::collection_name, id.collection());
|
|
184
|
+
}
|
|
185
|
+
|
|
150
186
|
if (node.is_replica) {
|
|
151
187
|
document_id replica_id{ id };
|
|
152
188
|
replica_id.node_index(node.index);
|
|
153
|
-
|
|
154
|
-
|
|
189
|
+
impl::with_cancellation<impl::lookup_in_replica_request> replica_req{
|
|
190
|
+
{
|
|
191
|
+
std::move(replica_id),
|
|
192
|
+
specs,
|
|
193
|
+
timeout,
|
|
194
|
+
subop_span,
|
|
195
|
+
},
|
|
155
196
|
};
|
|
197
|
+
ctx->add_cancellation_token(replica_req.cancel_token);
|
|
156
198
|
replica_req.access_deleted = access_deleted;
|
|
157
|
-
core->execute(replica_req, [ctx](auto&& resp) {
|
|
199
|
+
core->execute(replica_req, [ctx, subop_span](auto&& resp) {
|
|
200
|
+
{
|
|
201
|
+
if (subop_span->uses_tags()) {
|
|
202
|
+
subop_span->add_tag(tracing::attributes::op::retry_count,
|
|
203
|
+
resp.ctx.retry_attempts());
|
|
204
|
+
}
|
|
205
|
+
subop_span->end();
|
|
206
|
+
}
|
|
158
207
|
handler_type local_handler;
|
|
208
|
+
std::vector<std::shared_ptr<impl::cancellation_token>> cancel_tokens;
|
|
159
209
|
{
|
|
160
210
|
std::scoped_lock lock(ctx->mutex_);
|
|
161
211
|
if (ctx->done_) {
|
|
@@ -172,6 +222,10 @@ struct lookup_in_any_replica_request {
|
|
|
172
222
|
}
|
|
173
223
|
ctx->done_ = true;
|
|
174
224
|
std::swap(local_handler, ctx->handler_);
|
|
225
|
+
cancel_tokens = ctx->get_cancellation_tokens();
|
|
226
|
+
}
|
|
227
|
+
for (const auto& token : cancel_tokens) {
|
|
228
|
+
token->cancel();
|
|
175
229
|
}
|
|
176
230
|
if (local_handler) {
|
|
177
231
|
response_type res{};
|
|
@@ -194,46 +248,70 @@ struct lookup_in_any_replica_request {
|
|
|
194
248
|
}
|
|
195
249
|
});
|
|
196
250
|
} else {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
251
|
+
impl::with_cancellation<lookup_in_request> req{
|
|
252
|
+
{
|
|
253
|
+
id,
|
|
254
|
+
{},
|
|
255
|
+
{},
|
|
256
|
+
false,
|
|
257
|
+
specs,
|
|
258
|
+
timeout,
|
|
259
|
+
{},
|
|
260
|
+
subop_span,
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
ctx->add_cancellation_token(req.cancel_token);
|
|
264
|
+
core->execute(std::move(req), [subop_span, ctx](auto&& resp) {
|
|
265
|
+
{
|
|
266
|
+
if (subop_span->uses_tags()) {
|
|
267
|
+
subop_span->add_tag(tracing::attributes::op::retry_count,
|
|
268
|
+
resp.ctx.retry_attempts());
|
|
269
|
+
}
|
|
270
|
+
subop_span->end();
|
|
271
|
+
}
|
|
272
|
+
handler_type local_handler{};
|
|
273
|
+
std::vector<std::shared_ptr<impl::cancellation_token>> cancel_tokens;
|
|
274
|
+
{
|
|
275
|
+
std::scoped_lock lock(ctx->mutex_);
|
|
276
|
+
if (ctx->done_) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
--ctx->expected_responses_;
|
|
280
|
+
if (resp.ctx.ec()) {
|
|
281
|
+
if (ctx->expected_responses_ > 0) {
|
|
282
|
+
// just ignore the response
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// consider document irretrievable and give up
|
|
286
|
+
resp.ctx.override_ec(errc::key_value::document_irretrievable);
|
|
287
|
+
}
|
|
288
|
+
ctx->done_ = true;
|
|
289
|
+
std::swap(local_handler, ctx->handler_);
|
|
290
|
+
cancel_tokens = ctx->get_cancellation_tokens();
|
|
291
|
+
}
|
|
292
|
+
for (const auto& token : cancel_tokens) {
|
|
293
|
+
token->cancel();
|
|
294
|
+
}
|
|
295
|
+
if (local_handler) {
|
|
296
|
+
auto res = response_type{};
|
|
297
|
+
res.ctx = resp.ctx;
|
|
298
|
+
res.cas = resp.cas;
|
|
299
|
+
res.deleted = resp.deleted;
|
|
300
|
+
res.is_replica = false;
|
|
301
|
+
for (auto& field : resp.fields) {
|
|
302
|
+
auto lookup_in_entry = lookup_in_any_replica_response::entry{};
|
|
303
|
+
lookup_in_entry.path = field.path;
|
|
304
|
+
lookup_in_entry.value = field.value;
|
|
305
|
+
lookup_in_entry.status = field.status;
|
|
306
|
+
lookup_in_entry.ec = field.ec;
|
|
307
|
+
lookup_in_entry.exists = field.exists;
|
|
308
|
+
lookup_in_entry.original_index = field.original_index;
|
|
309
|
+
lookup_in_entry.opcode = field.opcode;
|
|
310
|
+
res.fields.emplace_back(lookup_in_entry);
|
|
311
|
+
}
|
|
312
|
+
return local_handler(res);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
237
315
|
}
|
|
238
316
|
}
|
|
239
317
|
});
|
|
@@ -95,9 +95,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
95
95
|
template<>
|
|
96
96
|
struct supports_durability<couchbase::core::operations::mutate_in_request> : public std::true_type {
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
template<>
|
|
100
|
-
struct supports_parent_span<couchbase::core::operations::mutate_in_request>
|
|
101
|
-
: public std::true_type {
|
|
102
|
-
};
|
|
103
98
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -76,8 +76,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
76
76
|
template<>
|
|
77
77
|
struct supports_durability<couchbase::core::operations::prepend_request> : public std::true_type {
|
|
78
78
|
};
|
|
79
|
-
|
|
80
|
-
template<>
|
|
81
|
-
struct supports_parent_span<couchbase::core::operations::prepend_request> : public std::true_type {
|
|
82
|
-
};
|
|
83
79
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#include "core/cluster_options.hxx"
|
|
21
21
|
#include "core/logger/logger.hxx"
|
|
22
22
|
#include "core/operations/management/error_utils.hxx"
|
|
23
|
+
#include "core/utils/contains_string.hxx"
|
|
23
24
|
#include "core/utils/duration_parser.hxx"
|
|
24
25
|
#include "core/utils/json.hxx"
|
|
25
26
|
|
|
@@ -28,13 +29,11 @@
|
|
|
28
29
|
#include <gsl/assert>
|
|
29
30
|
#include <tao/json/value.hpp>
|
|
30
31
|
|
|
31
|
-
#include <regex>
|
|
32
|
-
|
|
33
32
|
namespace couchbase::core::operations
|
|
34
33
|
{
|
|
35
34
|
auto
|
|
36
|
-
query_request::encode_to(query_request::encoded_request_type& encoded,
|
|
37
|
-
|
|
35
|
+
query_request::encode_to(query_request::encoded_request_type& encoded, http_context& context)
|
|
36
|
+
-> std::error_code
|
|
38
37
|
{
|
|
39
38
|
ctx_.emplace(context);
|
|
40
39
|
tao::json::value body{
|
|
@@ -209,8 +208,8 @@ query_request::encode_to(query_request::encoded_request_type& encoded,
|
|
|
209
208
|
}
|
|
210
209
|
|
|
211
210
|
auto
|
|
212
|
-
query_request::make_response(error_context::query&& ctx,
|
|
213
|
-
|
|
211
|
+
query_request::make_response(error_context::query&& ctx, const encoded_response_type& encoded)
|
|
212
|
+
-> query_response
|
|
214
213
|
{
|
|
215
214
|
query_response response{ std::move(ctx) };
|
|
216
215
|
response.ctx.statement = statement;
|
|
@@ -374,13 +373,14 @@ query_request::make_response(error_context::query&& ctx,
|
|
|
374
373
|
response.ctx.ec = errc::common::index_exists;
|
|
375
374
|
break;
|
|
376
375
|
case 5000: /* IKey: "Internal Error" */
|
|
377
|
-
if (
|
|
378
|
-
|
|
376
|
+
if (utils::contains_string(response.ctx.first_error_message, "index", true) &&
|
|
377
|
+
utils::contains_string(response.ctx.first_error_message, "already exist", true)) {
|
|
379
378
|
response.ctx.ec = errc::common::index_exists;
|
|
380
|
-
} else if (response.ctx.first_error_message
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
379
|
+
} else if (utils::contains_string(response.ctx.first_error_message,
|
|
380
|
+
"Index does not exist") ||
|
|
381
|
+
(utils::contains_string(response.ctx.first_error_message, "index", true) &&
|
|
382
|
+
utils::contains_string(
|
|
383
|
+
response.ctx.first_error_message, "not found", true))) {
|
|
384
384
|
response.ctx.ec = errc::common::index_not_found;
|
|
385
385
|
} else if (response.ctx.first_error_message.find("Bucket Not Found") !=
|
|
386
386
|
std::string::npos) {
|
|
@@ -130,10 +130,6 @@ template<>
|
|
|
130
130
|
struct supports_sticky_node<couchbase::core::operations::query_request> : public std::true_type {
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
-
template<>
|
|
134
|
-
struct supports_parent_span<couchbase::core::operations::query_request> : public std::true_type {
|
|
135
|
-
};
|
|
136
|
-
|
|
137
133
|
template<>
|
|
138
134
|
struct supports_readonly<couchbase::core::operations::query_request> : public std::true_type {
|
|
139
135
|
};
|
|
@@ -75,8 +75,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
75
75
|
template<>
|
|
76
76
|
struct supports_durability<couchbase::core::operations::remove_request> : public std::true_type {
|
|
77
77
|
};
|
|
78
|
-
|
|
79
|
-
template<>
|
|
80
|
-
struct supports_parent_span<couchbase::core::operations::remove_request> : public std::true_type {
|
|
81
|
-
};
|
|
82
78
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -79,8 +79,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
79
79
|
template<>
|
|
80
80
|
struct supports_durability<couchbase::core::operations::replace_request> : public std::true_type {
|
|
81
81
|
};
|
|
82
|
-
|
|
83
|
-
template<>
|
|
84
|
-
struct supports_parent_span<couchbase::core::operations::replace_request> : public std::true_type {
|
|
85
|
-
};
|
|
86
82
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -174,11 +174,4 @@ struct search_request {
|
|
|
174
174
|
|
|
175
175
|
std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
|
|
176
176
|
};
|
|
177
|
-
|
|
178
177
|
} // namespace couchbase::core::operations
|
|
179
|
-
namespace couchbase::core::io::http_traits
|
|
180
|
-
{
|
|
181
|
-
template<>
|
|
182
|
-
struct supports_parent_span<couchbase::core::operations::search_request> : public std::true_type {
|
|
183
|
-
};
|
|
184
|
-
} // namespace couchbase::core::io::http_traits
|
|
@@ -55,11 +55,4 @@ struct touch_request {
|
|
|
55
55
|
[[nodiscard]] auto make_response(key_value_error_context&& ctx,
|
|
56
56
|
const encoded_response_type& encoded) const -> touch_response;
|
|
57
57
|
};
|
|
58
|
-
|
|
59
58
|
} // namespace couchbase::core::operations
|
|
60
|
-
namespace couchbase::core::io::mcbp_traits
|
|
61
|
-
{
|
|
62
|
-
template<>
|
|
63
|
-
struct supports_parent_span<couchbase::core::operations::touch_request> : public std::true_type {
|
|
64
|
-
};
|
|
65
|
-
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -57,9 +57,3 @@ struct unlock_request {
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
} // namespace couchbase::core::operations
|
|
60
|
-
namespace couchbase::core::io::mcbp_traits
|
|
61
|
-
{
|
|
62
|
-
template<>
|
|
63
|
-
struct supports_parent_span<couchbase::core::operations::unlock_request> : public std::true_type {
|
|
64
|
-
};
|
|
65
|
-
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -78,8 +78,4 @@ namespace couchbase::core::io::mcbp_traits
|
|
|
78
78
|
template<>
|
|
79
79
|
struct supports_durability<couchbase::core::operations::upsert_request> : public std::true_type {
|
|
80
80
|
};
|
|
81
|
-
|
|
82
|
-
template<>
|
|
83
|
-
struct supports_parent_span<couchbase::core::operations::upsert_request> : public std::true_type {
|
|
84
|
-
};
|
|
85
81
|
} // namespace couchbase::core::io::mcbp_traits
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
#define COUCHBASE_CXX_CLIENT_IGNORE_CORE_DEPRECATIONS
|
|
18
19
|
#include "document_view.hxx"
|
|
20
|
+
#undef COUCHBASE_CXX_CLIENT_IGNORE_CORE_DEPRECATIONS
|
|
19
21
|
|
|
20
22
|
#include "core/utils/join_strings.hxx"
|
|
21
23
|
#include "core/utils/json.hxx"
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
|
+
#include "core/deprecation_utils.hxx"
|
|
20
21
|
#include "core/design_document_namespace.hxx"
|
|
21
22
|
#include "core/error_context/view.hxx"
|
|
22
23
|
#include "core/io/http_context.hxx"
|
|
@@ -54,7 +55,10 @@ struct document_view_response {
|
|
|
54
55
|
std::optional<problem> error{};
|
|
55
56
|
};
|
|
56
57
|
|
|
57
|
-
struct
|
|
58
|
+
struct COUCHBASE_DEPRECATED(
|
|
59
|
+
"1.3.0",
|
|
60
|
+
"Views are deprecated in Couchbase Server 7.0+. Instead of views, use the Query "
|
|
61
|
+
"Service (SQL++).") document_view_request {
|
|
58
62
|
using response_type = document_view_response;
|
|
59
63
|
using encoded_request_type = io::http_request;
|
|
60
64
|
using encoded_response_type = io::http_response;
|
|
@@ -97,19 +101,12 @@ struct document_view_request {
|
|
|
97
101
|
std::optional<std::chrono::milliseconds> timeout{};
|
|
98
102
|
std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
|
|
99
103
|
|
|
100
|
-
[[nodiscard]] auto encode_to(encoded_request_type& encoded,
|
|
101
|
-
|
|
104
|
+
[[nodiscard]] auto encode_to(encoded_request_type& encoded, http_context& context)
|
|
105
|
+
-> std::error_code;
|
|
102
106
|
|
|
103
|
-
[[nodiscard]] auto make_response(error_context::view&& ctx,
|
|
104
|
-
|
|
107
|
+
[[nodiscard]] auto make_response(error_context::view&& ctx,
|
|
108
|
+
const encoded_response_type& encoded) const
|
|
109
|
+
-> document_view_response;
|
|
105
110
|
};
|
|
106
111
|
|
|
107
112
|
} // namespace couchbase::core::operations
|
|
108
|
-
|
|
109
|
-
namespace couchbase::core::io::http_traits
|
|
110
|
-
{
|
|
111
|
-
template<>
|
|
112
|
-
struct supports_parent_span<couchbase::core::operations::document_view_request>
|
|
113
|
-
: public std::true_type {
|
|
114
|
-
};
|
|
115
|
-
} // namespace couchbase::core::io::http_traits
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include "core/io/http_context.hxx"
|
|
22
22
|
#include "core/io/http_message.hxx"
|
|
23
23
|
#include "core/platform/uuid.h"
|
|
24
|
+
#include "core/public_fwd.hxx"
|
|
24
25
|
#include "core/timeout_defaults.hxx"
|
|
25
26
|
|
|
26
27
|
namespace couchbase::core::operations
|
|
@@ -41,6 +42,7 @@ struct http_noop_request {
|
|
|
41
42
|
|
|
42
43
|
std::optional<std::string> client_context_id{};
|
|
43
44
|
std::optional<std::chrono::milliseconds> timeout{};
|
|
45
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
|
|
44
46
|
|
|
45
47
|
[[nodiscard]] auto encode_to(encoded_request_type& encoded,
|
|
46
48
|
http_context& context) -> std::error_code;
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
#include "core/io/http_context.hxx"
|
|
23
23
|
#include "core/io/http_message.hxx"
|
|
24
24
|
#include "core/platform/uuid.h"
|
|
25
|
+
#include "core/public_fwd.hxx"
|
|
25
26
|
#include "core/timeout_defaults.hxx"
|
|
26
27
|
|
|
27
28
|
namespace couchbase::core::operations::management
|
|
@@ -50,6 +51,7 @@ struct analytics_dataset_create_request {
|
|
|
50
51
|
std::optional<std::chrono::milliseconds> timeout{};
|
|
51
52
|
|
|
52
53
|
bool ignore_if_exists{ false };
|
|
54
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
|
|
53
55
|
|
|
54
56
|
[[nodiscard]] std::error_code encode_to(encoded_request_type& encoded,
|
|
55
57
|
http_context& context) const;
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
#include "core/io/http_context.hxx"
|
|
23
23
|
#include "core/io/http_message.hxx"
|
|
24
24
|
#include "core/platform/uuid.h"
|
|
25
|
+
#include "core/public_fwd.hxx"
|
|
25
26
|
#include "core/timeout_defaults.hxx"
|
|
26
27
|
|
|
27
28
|
namespace couchbase::core::operations::management
|
|
@@ -47,6 +48,7 @@ struct analytics_dataset_drop_request {
|
|
|
47
48
|
bool ignore_if_does_not_exist{ false };
|
|
48
49
|
std::optional<std::string> client_context_id{};
|
|
49
50
|
std::optional<std::chrono::milliseconds> timeout{};
|
|
51
|
+
std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
|
|
50
52
|
|
|
51
53
|
[[nodiscard]] std::error_code encode_to(encoded_request_type& encoded,
|
|
52
54
|
http_context& context) const;
|