couchbase 3.8.2 → 3.9.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 +1 -1
- data/ext/CMakeLists.txt +16 -1
- data/ext/cache/cpm/{CPM_0.42.0.cmake → CPM_0.43.1.cmake} +18 -2
- data/ext/cache/extconf_include.rb +6 -6
- data/ext/cache/mozilla-ca-bundle.crt +121 -55
- data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
- data/ext/couchbase/CMakeLists.txt +136 -23
- data/ext/couchbase/cmake/APKBUILD.in +25 -4
- data/ext/couchbase/cmake/Bundler.cmake +143 -34
- data/ext/couchbase/cmake/CPM.cmake +126 -12
- data/ext/couchbase/cmake/Cache.cmake +7 -1
- data/ext/couchbase/cmake/CompilerOptions.cmake +1 -1
- data/ext/couchbase/cmake/CompilerWarnings.cmake +17 -6
- data/ext/couchbase/cmake/GrpcProtobuf.cmake +481 -0
- data/ext/couchbase/cmake/OpenSSL.cmake +82 -7
- data/ext/couchbase/cmake/Packaging.cmake +519 -65
- data/ext/couchbase/cmake/Protostellar.cmake +250 -0
- data/ext/couchbase/cmake/Sanitizers.cmake +61 -50
- data/ext/couchbase/cmake/StaticAnalyzers.cmake +16 -5
- data/ext/couchbase/cmake/TestFramework.cmake +283 -0
- data/ext/couchbase/cmake/TestFrameworkAddTests.cmake +51 -0
- data/ext/couchbase/cmake/Testing.cmake +27 -9
- data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +141 -8
- data/ext/couchbase/cmake/VersionInfo.cmake +50 -0
- data/ext/couchbase/cmake/build_config.hxx.in +2 -1
- data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +101 -23
- data/ext/couchbase/cmake/couchbase_cxx_client_static-config.cmake.in +7 -0
- data/ext/couchbase/cmake/couchbase_cxx_client_static.pc.in +2 -0
- data/ext/couchbase/cmake/gRPC_Generate.cmake +58 -0
- data/ext/couchbase/cmake/protobuf_Generate.cmake +69 -0
- data/ext/couchbase/cmake/require-git-checkout.cmake +25 -0
- data/ext/couchbase/cmake/tarball_glob.txt +49 -0
- data/ext/couchbase/core/agent_group.cxx +0 -8
- data/ext/couchbase/core/agent_group.hxx +0 -4
- data/ext/couchbase/core/analytics_stream.cxx +314 -0
- data/ext/couchbase/core/analytics_stream.hxx +129 -0
- data/ext/couchbase/core/analytics_stream_component.cxx +245 -0
- data/ext/couchbase/core/analytics_stream_component.hxx +67 -0
- data/ext/couchbase/core/app_telemetry_meter.cxx +25 -3
- data/ext/couchbase/core/app_telemetry_meter.hxx +77 -0
- data/ext/couchbase/core/app_telemetry_reporter.cxx +7 -6
- data/ext/couchbase/core/bucket.cxx +381 -87
- data/ext/couchbase/core/bucket.hxx +105 -25
- data/ext/couchbase/core/bucket_unit_test_api.hxx +57 -0
- data/ext/couchbase/core/capella.hxx +91 -0
- data/ext/couchbase/core/cluster.cxx +1551 -397
- data/ext/couchbase/core/cluster.hxx +39 -8
- data/ext/couchbase/core/cluster_agent.cxx +0 -8
- data/ext/couchbase/core/cluster_agent.hxx +0 -4
- data/ext/couchbase/core/cluster_options.hxx +26 -3
- data/ext/couchbase/core/collections_component.cxx +39 -15
- data/ext/couchbase/core/config_profiles.cxx +1 -1
- data/ext/couchbase/core/crud_component.cxx +2 -2
- data/ext/couchbase/core/crud_options.hxx +34 -0
- data/ext/couchbase/core/crypto/cbcrypto.cc +18 -13
- data/ext/couchbase/core/document_id_redaction.hxx +81 -0
- data/ext/couchbase/core/error_context/base_error_context.hxx +7 -6
- data/ext/couchbase/core/error_context/key_value.cxx +25 -2
- data/ext/couchbase/core/error_context/key_value.hxx +60 -33
- data/ext/couchbase/core/error_context/key_value_error_context.hxx +16 -15
- data/ext/couchbase/core/error_context/search.hxx +5 -0
- data/ext/couchbase/core/error_context/search_json.hxx +3 -0
- data/ext/couchbase/core/error_context/subdocument_error_context.hxx +19 -18
- data/ext/couchbase/core/error_context/view.hxx +5 -0
- data/ext/couchbase/core/free_form_http_request.cxx +237 -4
- data/ext/couchbase/core/free_form_http_request.hxx +41 -8
- data/ext/couchbase/core/http_component.cxx +300 -284
- data/ext/couchbase/core/http_component.hxx +0 -4
- data/ext/couchbase/core/impl/analytics.cxx +38 -5
- data/ext/couchbase/core/impl/analytics.hxx +34 -0
- data/ext/couchbase/core/impl/bootstrap_error.hxx +0 -3
- data/ext/couchbase/core/impl/collection.cxx +215 -202
- data/ext/couchbase/core/impl/collection_manager.cxx +1 -1
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +45 -18
- data/ext/couchbase/core/impl/error.cxx +22 -2
- data/ext/couchbase/core/impl/internal_analytics_stream_result.hxx +111 -0
- data/ext/couchbase/core/impl/internal_query_stream_result.hxx +110 -0
- data/ext/couchbase/core/impl/invoke_with_node_id.hxx +15 -7
- data/ext/couchbase/core/impl/key_value_error_category.cxx +6 -0
- data/ext/couchbase/core/impl/lookup_in_replica.cxx +10 -10
- data/ext/couchbase/core/impl/lookup_in_replica.hxx +4 -4
- data/ext/couchbase/core/impl/node_id.cxx +49 -13
- data/ext/couchbase/core/impl/observability_recorder.cxx +12 -2
- data/ext/couchbase/core/impl/observe_poll.cxx +63 -23
- data/ext/couchbase/core/impl/public_analytics_stream_result.cxx +372 -0
- data/ext/couchbase/core/impl/public_bucket.cxx +48 -2
- data/ext/couchbase/core/impl/public_cluster.cxx +229 -42
- data/ext/couchbase/core/impl/public_query_stream_result.cxx +380 -0
- data/ext/couchbase/core/impl/public_transaction_get_multi_replicas_from_preferred_server_group_result.cxx +42 -0
- data/ext/couchbase/core/impl/public_transaction_get_multi_result.cxx +42 -0
- data/ext/couchbase/core/impl/query.cxx +76 -7
- data/ext/couchbase/core/impl/query.hxx +36 -0
- data/ext/couchbase/core/impl/query_index_manager.cxx +54 -1
- data/ext/couchbase/core/impl/replica_utils.cxx +101 -0
- data/ext/couchbase/core/impl/replica_utils.hxx +64 -0
- data/ext/couchbase/core/impl/resolve_node_id.hxx +125 -0
- data/ext/couchbase/core/impl/scope.cxx +70 -0
- data/ext/couchbase/core/impl/search.cxx +31 -1
- data/ext/couchbase/core/impl/transactions.cxx +130 -0
- data/ext/couchbase/core/impl/wait_until_ready.cxx +439 -0
- data/ext/couchbase/core/impl/wait_until_ready.hxx +110 -0
- data/ext/couchbase/core/impl/with_bucket_config_or_timeout.hxx +180 -0
- data/ext/couchbase/core/impl/with_cancellation.hxx +11 -3
- data/ext/couchbase/core/io/configuration_belongs_to_session.hxx +1 -2
- data/ext/couchbase/core/io/dns_client.cxx +122 -45
- data/ext/couchbase/core/io/dns_codec.hxx +21 -21
- data/ext/couchbase/core/io/dns_config.cxx +21 -6
- data/ext/couchbase/core/io/http_command.hxx +149 -121
- data/ext/couchbase/core/io/http_error.hxx +107 -0
- data/ext/couchbase/core/io/http_parser.cxx +4 -0
- data/ext/couchbase/core/io/http_session.cxx +606 -154
- data/ext/couchbase/core/io/http_session.hxx +147 -30
- data/ext/couchbase/core/io/http_session_manager.hxx +329 -382
- data/ext/couchbase/core/io/http_streaming_parser.cxx +4 -0
- data/ext/couchbase/core/io/http_streaming_response.cxx +328 -43
- data/ext/couchbase/core/io/http_streaming_response.hxx +37 -3
- data/ext/couchbase/core/io/mcbp_buffer_pool.hxx +122 -0
- data/ext/couchbase/core/io/mcbp_command.hxx +150 -51
- data/ext/couchbase/core/io/mcbp_command_id.hxx +45 -0
- data/ext/couchbase/core/io/mcbp_message.cxx +9 -1
- data/ext/couchbase/core/io/mcbp_message.hxx +19 -0
- data/ext/couchbase/core/io/mcbp_output_queue.hxx +150 -0
- data/ext/couchbase/core/io/mcbp_parser.cxx +24 -7
- data/ext/couchbase/core/io/mcbp_session.cxx +309 -301
- data/ext/couchbase/core/io/mcbp_session.hxx +27 -18
- data/ext/couchbase/core/io/opaque_ring_table.hxx +145 -0
- data/ext/couchbase/core/io/retry_orchestrator.hxx +6 -5
- data/ext/couchbase/core/io/stream_deadline.hxx +50 -0
- data/ext/couchbase/core/io/streams.cxx +151 -21
- data/ext/couchbase/core/io/streams.hxx +48 -1
- data/ext/couchbase/core/logger/logger.cxx +36 -0
- data/ext/couchbase/core/logger/logger.hxx +46 -6
- data/ext/couchbase/core/logger/redaction.hxx +503 -0
- data/ext/couchbase/core/management/eventing_status.hxx +10 -0
- data/ext/couchbase/core/management/eventing_status_json.hxx +4 -0
- data/ext/couchbase/core/mcbp/big_endian.cxx +1 -1
- data/ext/couchbase/core/mcbp/codec.cxx +27 -18
- data/ext/couchbase/core/mcbp/operation_queue.cxx +2 -2
- data/ext/couchbase/core/mcbp/packet.hxx +2 -2
- data/ext/couchbase/core/mcbp/queue_request.cxx +23 -6
- data/ext/couchbase/core/mcbp/queue_request.hxx +21 -0
- data/ext/couchbase/core/meta/features.hxx +13 -0
- data/ext/couchbase/core/meta/version.cxx +6 -3
- data/ext/couchbase/core/metrics/logging_meter.cxx +5 -10
- data/ext/couchbase/core/metrics/meter_wrapper.cxx +63 -33
- data/ext/couchbase/core/metrics/meter_wrapper.hxx +55 -3
- data/ext/couchbase/core/operations/analytics_response_parsing.cxx +177 -0
- data/ext/couchbase/core/operations/analytics_response_parsing.hxx +55 -0
- data/ext/couchbase/core/operations/document_analytics.cxx +48 -130
- data/ext/couchbase/core/operations/document_analytics.hxx +14 -2
- data/ext/couchbase/core/operations/document_get_all_replicas.hxx +15 -7
- data/ext/couchbase/core/operations/document_get_any_replica.hxx +19 -8
- data/ext/couchbase/core/operations/document_get_projected.cxx +1 -1
- data/ext/couchbase/core/{impl/get_replica.cxx → operations/document_get_replica.cxx} +21 -3
- data/ext/couchbase/core/{impl/get_replica.hxx → operations/document_get_replica.hxx} +31 -4
- data/ext/couchbase/core/operations/document_lookup_in.cxx +10 -10
- data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +228 -198
- data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +215 -217
- data/ext/couchbase/core/operations/document_query.cxx +108 -221
- data/ext/couchbase/core/operations/document_query.hxx +18 -4
- data/ext/couchbase/core/operations/document_search.cxx +52 -8
- data/ext/couchbase/core/operations/document_search.hxx +3 -0
- data/ext/couchbase/core/operations/document_view.cxx +3 -3
- data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +15 -8
- data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +4 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +11 -6
- data/ext/couchbase/core/operations/management/analytics_dataset_get_all.cxx +3 -2
- data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +10 -5
- data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +10 -5
- data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +2 -1
- data/ext/couchbase/core/operations/management/analytics_index_create.cxx +33 -8
- data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +12 -7
- data/ext/couchbase/core/operations/management/analytics_index_get_all.cxx +3 -2
- data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +11 -6
- data/ext/couchbase/core/operations/management/analytics_link_create.cxx +3 -3
- data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +10 -4
- data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +6 -4
- data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +4 -3
- data/ext/couchbase/core/operations/management/analytics_link_replace.cxx +3 -3
- data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +1 -1
- data/ext/couchbase/core/operations/management/change_password.cxx +2 -0
- data/ext/couchbase/core/operations/management/collection_drop.cxx +5 -1
- data/ext/couchbase/core/operations/management/error_utils.cxx +60 -6
- data/ext/couchbase/core/operations/management/error_utils.hxx +29 -1
- data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +8 -3
- data/ext/couchbase/core/operations/management/eventing_get_all_functions.cxx +4 -2
- data/ext/couchbase/core/operations/management/eventing_get_function.cxx +5 -3
- data/ext/couchbase/core/operations/management/eventing_get_status.cxx +4 -2
- data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +9 -3
- data/ext/couchbase/core/operations/management/group_drop.cxx +3 -1
- data/ext/couchbase/core/operations/management/group_get.cxx +3 -1
- data/ext/couchbase/core/operations/management/group_upsert.cxx +11 -8
- data/ext/couchbase/core/operations/management/query_index_build.cxx +5 -2
- data/ext/couchbase/core/operations/management/query_index_create.cxx +9 -3
- data/ext/couchbase/core/operations/management/query_index_drop.cxx +11 -4
- data/ext/couchbase/core/operations/management/query_index_get_all.cxx +1 -1
- data/ext/couchbase/core/operations/management/query_index_get_all_deferred.cxx +1 -1
- data/ext/couchbase/core/operations/management/scope_drop.cxx +5 -1
- data/ext/couchbase/core/operations/management/scope_get_all.cxx +6 -1
- data/ext/couchbase/core/operations/management/search_get_stats.cxx +10 -0
- data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +3 -2
- data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +4 -3
- data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +4 -3
- data/ext/couchbase/core/operations/management/search_index_control_query.cxx +4 -3
- data/ext/couchbase/core/operations/management/search_index_drop.cxx +2 -2
- data/ext/couchbase/core/operations/management/search_index_get.cxx +2 -2
- data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +3 -2
- data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +3 -1
- data/ext/couchbase/core/operations/management/search_index_upsert.cxx +2 -2
- data/ext/couchbase/core/operations/management/user_drop.cxx +3 -1
- data/ext/couchbase/core/operations/management/user_get.cxx +3 -1
- data/ext/couchbase/core/operations/management/user_upsert.cxx +12 -9
- data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
- data/ext/couchbase/core/operations/operation_traits.hxx +18 -0
- data/ext/couchbase/core/operations/query_response_parsing.cxx +211 -0
- data/ext/couchbase/core/operations/query_response_parsing.hxx +60 -0
- data/ext/couchbase/core/operations_fwd.hxx +3 -3
- data/ext/couchbase/core/origin.cxx +54 -26
- data/ext/couchbase/core/origin.hxx +12 -0
- data/ext/couchbase/core/orphan_reporter.cxx +2 -1
- data/ext/couchbase/core/platform/random.cc +7 -7
- data/ext/couchbase/core/protocol/client_request.cxx +2 -2
- data/ext/couchbase/core/protocol/client_request.hxx +38 -21
- data/ext/couchbase/core/protocol/client_response.cxx +11 -3
- data/ext/couchbase/core/protocol/client_response.hxx +27 -6
- data/ext/couchbase/core/protocol/cmd_append.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_cluster_map_change_notification.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_decrement.cxx +6 -6
- data/ext/couchbase/core/protocol/cmd_get.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_get_and_lock.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_get_and_touch.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_get_cluster_config.cxx +6 -4
- data/ext/couchbase/core/protocol/cmd_get_collection_id.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_get_error_map.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_get_meta.cxx +4 -4
- data/ext/couchbase/core/protocol/cmd_get_replica.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_hello.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_increment.cxx +6 -6
- data/ext/couchbase/core/protocol/cmd_insert.cxx +4 -4
- data/ext/couchbase/core/protocol/cmd_lookup_in.cxx +4 -3
- data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +4 -3
- data/ext/couchbase/core/protocol/cmd_mutate_in.cxx +10 -9
- data/ext/couchbase/core/protocol/cmd_mutate_in.hxx +10 -10
- data/ext/couchbase/core/protocol/cmd_observe_seqno.cxx +7 -7
- data/ext/couchbase/core/protocol/cmd_prepend.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_remove.cxx +2 -2
- data/ext/couchbase/core/protocol/cmd_replace.cxx +4 -4
- data/ext/couchbase/core/protocol/cmd_touch.cxx +1 -1
- data/ext/couchbase/core/protocol/cmd_upsert.cxx +4 -4
- data/ext/couchbase/core/protocol/datatype.hxx +118 -1
- data/ext/couchbase/core/protocol/frame_info_utils.cxx +1 -1
- data/ext/couchbase/core/protocol/magic.hxx +4 -0
- data/ext/couchbase/core/protocol/magic_fmt.hxx +3 -0
- data/ext/couchbase/core/protocol/server_request.hxx +3 -1
- data/ext/couchbase/core/protocol/status.cxx +1 -1
- data/ext/couchbase/core/protostellar/analytics_converter.hxx +171 -0
- data/ext/couchbase/core/protostellar/bucket_admin_converter.hxx +301 -0
- data/ext/couchbase/core/protostellar/collection_admin_converter.hxx +92 -0
- data/ext/couchbase/core/protostellar/component.cxx +2445 -0
- data/ext/couchbase/core/protostellar/component.hxx +391 -0
- data/ext/couchbase/core/{columnar/bootstrap_notification_subscriber.hxx → protostellar/compression_settings.hxx} +11 -10
- data/ext/couchbase/core/protostellar/credentials.cxx +233 -0
- data/ext/couchbase/core/protostellar/credentials.hxx +88 -0
- data/ext/couchbase/core/protostellar/dispatcher.cxx +57 -0
- data/ext/couchbase/core/protostellar/dispatcher.hxx +482 -0
- data/ext/couchbase/core/protostellar/error_utils.cxx +293 -0
- data/ext/couchbase/core/protostellar/error_utils.hxx +97 -0
- data/ext/couchbase/core/protostellar/json_payload.hxx +49 -0
- data/ext/couchbase/core/protostellar/kv_converter.cxx +70 -0
- data/ext/couchbase/core/protostellar/kv_converter.hxx +600 -0
- data/ext/couchbase/core/protostellar/query_converter.hxx +265 -0
- data/ext/couchbase/core/protostellar/query_index_admin_converter.hxx +291 -0
- data/ext/couchbase/core/protostellar/query_proto.hxx +73 -0
- data/ext/couchbase/core/protostellar/search_converter.hxx +244 -0
- data/ext/couchbase/core/protostellar/search_index_admin_converter.hxx +156 -0
- data/ext/couchbase/core/protostellar/view_converter.hxx +158 -0
- data/ext/couchbase/core/query_stream.cxx +447 -0
- data/ext/couchbase/core/query_stream.hxx +141 -0
- data/ext/couchbase/core/query_stream_component.cxx +243 -0
- data/ext/couchbase/core/query_stream_component.hxx +68 -0
- data/ext/couchbase/core/range_scan_load_balancer.cxx +15 -8
- data/ext/couchbase/core/range_scan_orchestrator.cxx +15 -3
- data/ext/couchbase/core/response_handler.hxx +41 -4
- data/ext/couchbase/core/row_streamer.cxx +332 -46
- data/ext/couchbase/core/row_streamer.hxx +31 -1
- data/ext/couchbase/core/row_streamer_options.hxx +55 -0
- data/ext/couchbase/core/sasl/client.h +3 -0
- data/ext/couchbase/core/search_scoring.hxx +66 -0
- data/ext/couchbase/core/stream_error_details.hxx +69 -0
- data/ext/couchbase/core/timeout_defaults.hxx +0 -1
- data/ext/couchbase/core/topology/capabilities.hxx +6 -0
- data/ext/couchbase/core/topology/capabilities_fmt.hxx +3 -0
- data/ext/couchbase/core/topology/configuration.cxx +21 -6
- data/ext/couchbase/core/topology/configuration.hxx +29 -8
- data/ext/couchbase/core/topology/configuration_json.hxx +3 -0
- data/ext/couchbase/core/topology/error_map_json.hxx +3 -1
- data/ext/couchbase/core/tracing/threshold_logging_tracer.cxx +70 -4
- data/ext/couchbase/core/tracing/threshold_logging_tracer.hxx +10 -0
- data/ext/couchbase/core/transactions/active_transaction_record.cxx +0 -34
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +108 -63
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +19 -2
- data/ext/couchbase/core/transactions/error_list.hxx +2 -2
- data/ext/couchbase/core/transactions/get_multi_fetch.hxx +160 -0
- data/ext/couchbase/core/transactions/get_multi_orchestrator.cxx +326 -125
- data/ext/couchbase/core/transactions/get_multi_transaction_id.hxx +62 -0
- data/ext/couchbase/core/transactions/internal/atr_entry.hxx +22 -2
- data/ext/couchbase/core/transactions/internal/transaction_context.hxx +2 -2
- data/ext/couchbase/core/transactions/internal/transactions_cleanup.hxx +23 -1
- data/ext/couchbase/core/transactions/internal/utils.hxx +50 -14
- data/ext/couchbase/core/transactions/staged_mutation.cxx +23 -18
- data/ext/couchbase/core/transactions/staged_mutation.hxx +15 -4
- data/ext/couchbase/core/transactions/transaction_context.cxx +55 -40
- data/ext/couchbase/core/transactions/transaction_get_result.hxx +16 -0
- data/ext/couchbase/core/transactions/transactions.cxx +3 -55
- data/ext/couchbase/core/transactions/transactions_cleanup.cxx +165 -72
- data/ext/couchbase/core/transactions/transactions_config.cxx +0 -11
- data/ext/couchbase/core/transactions/utils.cxx +10 -0
- data/ext/couchbase/core/transactions/waitable_op_list.hxx +2 -2
- data/ext/couchbase/core/transactions.hxx +9 -9
- data/ext/couchbase/core/utils/byteswap.hxx +166 -9
- data/ext/couchbase/core/utils/connection_string.cxx +50 -85
- data/ext/couchbase/core/utils/connection_string.hxx +15 -0
- data/ext/couchbase/core/{columnar/backoff_calculator.hxx → utils/deadline.hxx} +13 -13
- data/ext/couchbase/core/utils/duration_parser.cxx +1 -1
- data/ext/couchbase/core/utils/json_streaming_lexer.cxx +48 -5
- data/ext/couchbase/core/utils/json_streaming_lexer.hxx +4 -1
- data/ext/couchbase/core/utils/movable_function.hxx +301 -52
- data/ext/couchbase/core/utils/name_codec.hxx +154 -11
- data/ext/couchbase/core/{columnar/retry_info.hxx → utils/process_id.hxx} +18 -13
- data/ext/couchbase/core/utils/url_codec.cxx +12 -51
- data/ext/couchbase/core/websocket_codec.cxx +13 -37
- data/ext/couchbase/couchbase/analytics_options.hxx +21 -10
- data/ext/couchbase/couchbase/analytics_row.hxx +105 -0
- data/ext/couchbase/couchbase/analytics_stream_result.hxx +266 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +3 -3
- data/ext/couchbase/couchbase/bucket.hxx +57 -0
- data/ext/couchbase/couchbase/cluster.hxx +183 -5
- data/ext/couchbase/{core/columnar/security_options.hxx → couchbase/cluster_state.hxx} +18 -14
- data/ext/couchbase/couchbase/codec/lenient_json_transcoder.hxx +69 -0
- data/ext/couchbase/couchbase/collection.hxx +234 -14
- data/ext/couchbase/couchbase/common_durability_options.hxx +18 -3
- data/ext/couchbase/couchbase/conjunction_query.hxx +1 -1
- data/ext/couchbase/couchbase/create_dataset_analytics_options.hxx +6 -1
- data/ext/couchbase/couchbase/date_range_query.hxx +2 -2
- data/ext/couchbase/couchbase/decrement_options.hxx +1 -1
- data/ext/couchbase/couchbase/disjunction_query.hxx +1 -1
- data/ext/couchbase/couchbase/error.hxx +32 -0
- data/ext/couchbase/couchbase/error_codes.hxx +33 -1
- data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +1 -1
- data/ext/couchbase/couchbase/geo_distance_query.hxx +1 -1
- data/ext/couchbase/couchbase/geo_polygon_query.hxx +1 -1
- data/ext/couchbase/couchbase/get_replica_options.hxx +68 -0
- data/ext/couchbase/couchbase/get_replica_result.hxx +5 -3
- data/ext/couchbase/couchbase/get_replica_strategy.hxx +161 -0
- data/ext/couchbase/couchbase/get_result.hxx +1 -0
- data/ext/couchbase/couchbase/increment_options.hxx +1 -1
- data/ext/couchbase/couchbase/insert_options.hxx +1 -1
- data/ext/couchbase/couchbase/match_phrase_query.hxx +1 -1
- data/ext/couchbase/couchbase/match_query.hxx +1 -1
- data/ext/couchbase/couchbase/mutate_in_options.hxx +3 -3
- data/ext/couchbase/couchbase/network_options.hxx +1 -1
- data/ext/couchbase/couchbase/node_id.hxx +42 -14
- data/ext/couchbase/couchbase/node_id_for_options.hxx +7 -1
- data/ext/couchbase/couchbase/node_ids_options.hxx +8 -2
- data/ext/couchbase/couchbase/numeric_range_query.hxx +1 -1
- data/ext/couchbase/couchbase/phrase_query.hxx +1 -1
- data/ext/couchbase/couchbase/prefix_query.hxx +1 -1
- data/ext/couchbase/couchbase/query_options.hxx +23 -12
- data/ext/couchbase/couchbase/query_row.hxx +111 -0
- data/ext/couchbase/couchbase/query_stream_result.hxx +302 -0
- data/ext/couchbase/couchbase/query_string_query.hxx +3 -3
- data/ext/couchbase/couchbase/regexp_query.hxx +1 -1
- data/ext/couchbase/couchbase/replace_options.hxx +3 -3
- data/ext/couchbase/couchbase/result.hxx +14 -3
- data/ext/couchbase/couchbase/scan_result_item.hxx +1 -0
- data/ext/couchbase/couchbase/scope.hxx +85 -2
- data/ext/couchbase/couchbase/search_options.hxx +58 -8
- data/ext/couchbase/couchbase/search_scoring.hxx +94 -0
- data/ext/couchbase/couchbase/search_scoring_none.hxx +51 -0
- data/ext/couchbase/couchbase/search_scoring_reciprocal_rank_fusion.hxx +88 -0
- data/ext/couchbase/couchbase/search_scoring_relative_score_fusion.hxx +70 -0
- data/ext/couchbase/couchbase/term_range_query.hxx +1 -1
- data/ext/couchbase/couchbase/tracing/request_span.hxx +46 -0
- data/ext/couchbase/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +23 -21
- data/ext/couchbase/couchbase/transactions/transaction_get_multi_result.hxx +24 -19
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +17 -3
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +4 -2
- data/ext/couchbase/couchbase/transactions.hxx +27 -18
- data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
- data/ext/couchbase/couchbase/vector_query.hxx +1 -1
- data/ext/couchbase/couchbase/wait_until_ready_options.hxx +111 -0
- data/ext/couchbase/couchbase/wildcard_query.hxx +1 -1
- data/ext/extconf.rb +15 -10
- data/ext/rcb_analytics.cxx +82 -102
- data/ext/rcb_backend.cxx +42 -36
- data/ext/rcb_backend.hxx +2 -0
- data/ext/rcb_buckets.cxx +47 -59
- data/ext/rcb_collections.cxx +42 -52
- data/ext/rcb_crud.cxx +345 -224
- data/ext/rcb_diagnostics.cxx +117 -27
- data/ext/rcb_exceptions.cxx +152 -99
- data/ext/rcb_exceptions.hxx +25 -0
- data/ext/rcb_extras.cxx +18 -19
- data/ext/rcb_hdr_histogram.cxx +19 -4
- data/ext/rcb_logger.cxx +202 -27
- data/ext/rcb_logger.hxx +12 -0
- data/ext/rcb_multi.cxx +40 -40
- data/ext/rcb_observability.cxx +7 -5
- data/ext/rcb_query.cxx +99 -142
- data/ext/rcb_range_scan.cxx +41 -35
- data/ext/rcb_search.cxx +98 -99
- data/ext/rcb_users.cxx +36 -56
- data/ext/rcb_utils.cxx +100 -37
- data/ext/rcb_utils.hxx +287 -33
- data/ext/rcb_version.cxx +1 -1
- data/ext/rcb_views.cxx +55 -51
- data/lib/active_support/cache/couchbase_store.rb +77 -12
- data/lib/couchbase/bucket.rb +20 -0
- data/lib/couchbase/cluster.rb +17 -0
- data/lib/couchbase/collection.rb +36 -1
- data/lib/couchbase/errors.rb +18 -0
- data/lib/couchbase/fork_hooks.rb +16 -7
- data/lib/couchbase/get_replica_strategy.rb +89 -0
- data/lib/couchbase/logger.rb +1 -1
- data/lib/couchbase/management/analytics_index_manager.rb +15 -15
- data/lib/couchbase/management/bucket_manager.rb +6 -6
- data/lib/couchbase/management/collection_manager.rb +6 -6
- data/lib/couchbase/management/query_index_manager.rb +7 -7
- data/lib/couchbase/management/search_index_manager.rb +13 -13
- data/lib/couchbase/management/user_manager.rb +10 -10
- data/lib/couchbase/management/view_index_manager.rb +5 -5
- data/lib/couchbase/options.rb +174 -42
- data/lib/couchbase/protostellar/bucket.rb +4 -0
- data/lib/couchbase/protostellar/cluster.rb +4 -0
- data/lib/couchbase/protostellar/collection.rb +4 -0
- data/lib/couchbase/protostellar/error_handling.rb +2 -1
- data/lib/couchbase/protostellar/request.rb +1 -0
- data/lib/couchbase/protostellar/request_generator/kv.rb +16 -2
- data/lib/couchbase/protostellar/request_generator/search.rb +17 -1
- data/lib/couchbase/protostellar/retry/orchestrator.rb +3 -2
- data/lib/couchbase/protostellar/retry/strategies/fail_fast.rb +33 -0
- data/lib/couchbase/protostellar/retry/strategies.rb +1 -0
- data/lib/couchbase/search_options.rb +95 -6
- data/lib/couchbase/version.rb +1 -1
- metadata +91 -33
- data/ext/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +0 -40
- data/ext/couchbase/core/columnar/agent.hxx +0 -71
- data/ext/couchbase/core/columnar/agent_config.hxx +0 -59
- data/ext/couchbase/core/columnar/background_bootstrap_listener.hxx +0 -42
- data/ext/couchbase/core/columnar/backoff_calculator.cxx +0 -62
- data/ext/couchbase/core/columnar/columnar_agent.cxx +0 -147
- data/ext/couchbase/core/columnar/columnar_agent_config.cxx +0 -48
- data/ext/couchbase/core/columnar/columnar_error.cxx +0 -51
- data/ext/couchbase/core/columnar/database_management_options.hxx +0 -56
- data/ext/couchbase/core/columnar/error.hxx +0 -51
- data/ext/couchbase/core/columnar/error_codes.cxx +0 -107
- data/ext/couchbase/core/columnar/error_codes.hxx +0 -75
- data/ext/couchbase/core/columnar/management_component.cxx +0 -300
- data/ext/couchbase/core/columnar/management_component.hxx +0 -56
- data/ext/couchbase/core/columnar/query_component.cxx +0 -523
- data/ext/couchbase/core/columnar/query_component.hxx +0 -57
- data/ext/couchbase/core/columnar/query_options.hxx +0 -59
- data/ext/couchbase/core/columnar/query_result.cxx +0 -130
- data/ext/couchbase/core/columnar/query_result.hxx +0 -78
- data/ext/couchbase/core/io/config_tracker.cxx +0 -687
- data/ext/couchbase/core/io/config_tracker.hxx +0 -123
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 "backoff_calculator.hxx"
|
|
19
|
-
|
|
20
|
-
#include <random>
|
|
21
|
-
|
|
22
|
-
namespace couchbase::core::columnar
|
|
23
|
-
{
|
|
24
|
-
auto
|
|
25
|
-
exponential_backoff_with_full_jitter(std::chrono::milliseconds min_backoff,
|
|
26
|
-
std::chrono::milliseconds max_backoff,
|
|
27
|
-
double backoff_factor) -> backoff_calculator
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
double min = 100; // 100 milliseconds
|
|
31
|
-
double max = 60000; // 1 minute
|
|
32
|
-
double factor = 2;
|
|
33
|
-
|
|
34
|
-
if (min_backoff > std::chrono::milliseconds::zero()) {
|
|
35
|
-
min = static_cast<double>(min_backoff.count());
|
|
36
|
-
}
|
|
37
|
-
if (max_backoff > std::chrono::milliseconds::zero()) {
|
|
38
|
-
max = static_cast<double>(max_backoff.count());
|
|
39
|
-
}
|
|
40
|
-
if (backoff_factor > 0) {
|
|
41
|
-
factor = backoff_factor;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return [min, max, factor](std::size_t retry_attempts) -> std::chrono::milliseconds {
|
|
45
|
-
const std::int32_t max_backoff =
|
|
46
|
-
static_cast<std::int32_t>(std::round(std::min(max, min * std::pow(factor, retry_attempts))));
|
|
47
|
-
|
|
48
|
-
std::mt19937 gen(std::random_device{}());
|
|
49
|
-
std::uniform_int_distribution<std::int32_t> distrib(0, max_backoff);
|
|
50
|
-
|
|
51
|
-
return std::chrono::milliseconds(distrib(gen));
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
auto
|
|
56
|
-
default_backoff_calculator(std::size_t retry_attempts) -> std::chrono::milliseconds
|
|
57
|
-
{
|
|
58
|
-
auto calculator = exponential_backoff_with_full_jitter(
|
|
59
|
-
std::chrono::milliseconds(100), std::chrono::minutes(1), 2);
|
|
60
|
-
return calculator(retry_attempts);
|
|
61
|
-
}
|
|
62
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 "agent.hxx"
|
|
19
|
-
|
|
20
|
-
#include "agent_config.hxx"
|
|
21
|
-
#include "core/free_form_http_request.hxx"
|
|
22
|
-
#include "core/http_component.hxx"
|
|
23
|
-
#include "core/logger/logger.hxx"
|
|
24
|
-
#include "database_management_options.hxx"
|
|
25
|
-
#include "management_component.hxx"
|
|
26
|
-
#include "query_component.hxx"
|
|
27
|
-
#include "query_options.hxx"
|
|
28
|
-
|
|
29
|
-
#include <asio/io_context.hpp>
|
|
30
|
-
#include <system_error>
|
|
31
|
-
#include <tl/expected.hpp>
|
|
32
|
-
|
|
33
|
-
#include <utility>
|
|
34
|
-
|
|
35
|
-
namespace couchbase::core::columnar
|
|
36
|
-
{
|
|
37
|
-
class agent_impl
|
|
38
|
-
{
|
|
39
|
-
public:
|
|
40
|
-
agent_impl(asio::io_context& io, agent_config config)
|
|
41
|
-
: io_{ io }
|
|
42
|
-
, config_{ std::move(config) }
|
|
43
|
-
, http_{ io_, config_.shim }
|
|
44
|
-
, query_{ io_, http_, config_.timeouts.query_timeout }
|
|
45
|
-
, mgmt_{ http_, config_.timeouts.management_timeout }
|
|
46
|
-
{
|
|
47
|
-
CB_LOG_DEBUG("creating new columnar cluster agent: {}", config_.to_string());
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
auto free_form_http_request(const http_request& request,
|
|
51
|
-
free_form_http_request_callback&& callback)
|
|
52
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error_union>
|
|
53
|
-
{
|
|
54
|
-
return http_.do_http_request(request, std::move(callback));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
auto free_form_http_request_buffered(const http_request& request,
|
|
58
|
-
buffered_free_form_http_request_callback&& callback)
|
|
59
|
-
-> tl::expected<std::shared_ptr<pending_operation>, std::error_code>
|
|
60
|
-
{
|
|
61
|
-
return http_.do_http_request_buffered(request, std::move(callback));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
auto execute_query(const query_options& options, query_callback&& callback)
|
|
65
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
66
|
-
{
|
|
67
|
-
return query_.execute_query(options, std::move(callback));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
auto database_fetch_all(const fetch_all_databases_options& options,
|
|
71
|
-
fetch_all_databases_callback&& callback)
|
|
72
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
73
|
-
{
|
|
74
|
-
return mgmt_.database_fetch_all(options, std::move(callback));
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
auto database_drop(const drop_database_options& options, drop_database_callback&& callback)
|
|
78
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
79
|
-
{
|
|
80
|
-
return mgmt_.database_drop(options, std::move(callback));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
auto database_create(const create_database_options& options, create_database_callback&& callback)
|
|
84
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
85
|
-
{
|
|
86
|
-
return mgmt_.database_create(options, std::move(callback));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
private:
|
|
90
|
-
asio::io_context& io_;
|
|
91
|
-
const agent_config config_;
|
|
92
|
-
http_component http_;
|
|
93
|
-
query_component query_;
|
|
94
|
-
management_component mgmt_;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
agent::agent(asio::io_context& io, couchbase::core::columnar::agent_config config)
|
|
98
|
-
: impl_{ std::make_shared<agent_impl>(io, std::move(config)) }
|
|
99
|
-
{
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
auto
|
|
103
|
-
agent::free_form_http_request(const http_request& request,
|
|
104
|
-
free_form_http_request_callback&& callback)
|
|
105
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error_union>
|
|
106
|
-
{
|
|
107
|
-
return impl_->free_form_http_request(request, std::move(callback));
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
auto
|
|
111
|
-
agent::free_form_http_request_buffered(
|
|
112
|
-
const couchbase::core::http_request& request,
|
|
113
|
-
couchbase::core::buffered_free_form_http_request_callback&& callback)
|
|
114
|
-
-> tl::expected<std::shared_ptr<pending_operation>, std::error_code>
|
|
115
|
-
{
|
|
116
|
-
return impl_->free_form_http_request_buffered(request, std::move(callback));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
auto
|
|
120
|
-
agent::execute_query(const query_options& options, query_callback&& callback)
|
|
121
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
122
|
-
{
|
|
123
|
-
return impl_->execute_query(options, std::move(callback));
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
auto
|
|
127
|
-
agent::database_fetch_all(const fetch_all_databases_options& options,
|
|
128
|
-
fetch_all_databases_callback&& callback)
|
|
129
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
130
|
-
{
|
|
131
|
-
return impl_->database_fetch_all(options, std::move(callback));
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
auto
|
|
135
|
-
agent::database_create(const create_database_options& options, create_database_callback&& callback)
|
|
136
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
137
|
-
{
|
|
138
|
-
return impl_->database_create(options, std::move(callback));
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
auto
|
|
142
|
-
agent::database_drop(const drop_database_options& options, drop_database_callback&& callback)
|
|
143
|
-
-> tl::expected<std::shared_ptr<pending_operation>, error>
|
|
144
|
-
{
|
|
145
|
-
return impl_->database_drop(options, std::move(callback));
|
|
146
|
-
}
|
|
147
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 "agent_config.hxx"
|
|
19
|
-
|
|
20
|
-
#include <spdlog/fmt/bundled/chrono.h>
|
|
21
|
-
#include <spdlog/fmt/bundled/core.h>
|
|
22
|
-
|
|
23
|
-
#include <string>
|
|
24
|
-
|
|
25
|
-
namespace couchbase::core::columnar
|
|
26
|
-
{
|
|
27
|
-
auto
|
|
28
|
-
agent_config::to_string() const -> std::string
|
|
29
|
-
{
|
|
30
|
-
return fmt::format(R"(#<columnar_agent_config:{} shim={}, user_agent="{}", timeouts={}>)",
|
|
31
|
-
static_cast<const void*>(this),
|
|
32
|
-
shim.to_string(),
|
|
33
|
-
user_agent,
|
|
34
|
-
timeouts.to_string());
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
auto
|
|
38
|
-
timeout_config::to_string() const -> std::string
|
|
39
|
-
{
|
|
40
|
-
return fmt::format(
|
|
41
|
-
R"(#<timeout_config:{} connect_timeout={}, dispatch_timeout={}, query_timeout={}, management_timeout={}>)",
|
|
42
|
-
static_cast<const void*>(this),
|
|
43
|
-
connect_timeout,
|
|
44
|
-
dispatch_timeout,
|
|
45
|
-
query_timeout,
|
|
46
|
-
management_timeout);
|
|
47
|
-
}
|
|
48
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 "error.hxx"
|
|
19
|
-
|
|
20
|
-
#include <tao/json/to_string.hpp>
|
|
21
|
-
|
|
22
|
-
#include <string>
|
|
23
|
-
|
|
24
|
-
namespace couchbase::core::columnar
|
|
25
|
-
{
|
|
26
|
-
error::
|
|
27
|
-
operator bool() const
|
|
28
|
-
{
|
|
29
|
-
return ec.operator bool();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
auto
|
|
33
|
-
error::message_with_ctx() const -> std::string
|
|
34
|
-
{
|
|
35
|
-
std::string serialized_ctx{};
|
|
36
|
-
if (!ctx.get_object().empty()) {
|
|
37
|
-
serialized_ctx = tao::json::to_string(ctx);
|
|
38
|
-
}
|
|
39
|
-
std::string res{};
|
|
40
|
-
if (!message.empty()) {
|
|
41
|
-
res += message;
|
|
42
|
-
}
|
|
43
|
-
if (!serialized_ctx.empty()) {
|
|
44
|
-
if (!res.empty()) {
|
|
45
|
-
res += ' ';
|
|
46
|
-
}
|
|
47
|
-
res += serialized_ctx;
|
|
48
|
-
}
|
|
49
|
-
return res;
|
|
50
|
-
}
|
|
51
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 <chrono>
|
|
21
|
-
#include <optional>
|
|
22
|
-
#include <vector>
|
|
23
|
-
|
|
24
|
-
#include "core/utils/movable_function.hxx"
|
|
25
|
-
#include "error.hxx"
|
|
26
|
-
|
|
27
|
-
namespace couchbase::core::columnar
|
|
28
|
-
{
|
|
29
|
-
struct fetch_all_databases_options {
|
|
30
|
-
std::optional<std::chrono::milliseconds> timeout{};
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
struct drop_database_options {
|
|
34
|
-
std::string name;
|
|
35
|
-
|
|
36
|
-
bool ignore_if_not_exists{};
|
|
37
|
-
std::optional<std::chrono::milliseconds> timeout{};
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
struct create_database_options {
|
|
41
|
-
std::string name;
|
|
42
|
-
|
|
43
|
-
bool ignore_if_exists{};
|
|
44
|
-
std::optional<std::chrono::milliseconds> timeout{};
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
struct database_metadata {
|
|
48
|
-
std::string name;
|
|
49
|
-
bool is_system_database;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
using fetch_all_databases_callback =
|
|
53
|
-
utils::movable_function<void(std::vector<database_metadata>, error)>;
|
|
54
|
-
using drop_database_callback = utils::movable_function<void(error)>;
|
|
55
|
-
using create_database_callback = utils::movable_function<void(error)>;
|
|
56
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 <cstdint>
|
|
21
|
-
#include <memory>
|
|
22
|
-
#include <string>
|
|
23
|
-
#include <system_error>
|
|
24
|
-
#include <variant>
|
|
25
|
-
|
|
26
|
-
#include <tao/json/value.hpp>
|
|
27
|
-
|
|
28
|
-
namespace couchbase::core::columnar
|
|
29
|
-
{
|
|
30
|
-
/**
|
|
31
|
-
* Properties specific to query errors. Will only be set if the error code is
|
|
32
|
-
* columnar::errc::query_error
|
|
33
|
-
*/
|
|
34
|
-
struct query_error_properties {
|
|
35
|
-
std::int32_t code{};
|
|
36
|
-
std::string server_message{};
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
using error_properties = std::variant<std::monostate, query_error_properties>;
|
|
40
|
-
|
|
41
|
-
struct error {
|
|
42
|
-
std::error_code ec{};
|
|
43
|
-
std::string message{};
|
|
44
|
-
error_properties properties{};
|
|
45
|
-
tao::json::value ctx = tao::json::empty_object;
|
|
46
|
-
std::shared_ptr<error> cause{};
|
|
47
|
-
|
|
48
|
-
explicit operator bool() const;
|
|
49
|
-
[[nodiscard]] auto message_with_ctx() const -> std::string;
|
|
50
|
-
};
|
|
51
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. Couchbase, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
#include <couchbase/error_codes.hxx>
|
|
19
|
-
|
|
20
|
-
#include "error_codes.hxx"
|
|
21
|
-
|
|
22
|
-
#include <string>
|
|
23
|
-
#include <system_error>
|
|
24
|
-
|
|
25
|
-
namespace couchbase::core::columnar
|
|
26
|
-
{
|
|
27
|
-
struct columnar_error_category : std::error_category {
|
|
28
|
-
[[nodiscard]] auto name() const noexcept -> const char* override
|
|
29
|
-
{
|
|
30
|
-
return "couchbase.core.columnar.errc";
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
[[nodiscard]] auto message(int ev) const noexcept -> std::string override
|
|
34
|
-
{
|
|
35
|
-
switch (static_cast<errc>(ev)) {
|
|
36
|
-
case errc::generic:
|
|
37
|
-
return "generic_columnar_error";
|
|
38
|
-
case errc::invalid_credential:
|
|
39
|
-
return "invalid_credential";
|
|
40
|
-
case errc::timeout:
|
|
41
|
-
return "timeout";
|
|
42
|
-
case errc::query_error:
|
|
43
|
-
return "query_error";
|
|
44
|
-
}
|
|
45
|
-
return "FIXME: unknown error code (recompile with newer library): "
|
|
46
|
-
"couchbase.core.columnar.errc." +
|
|
47
|
-
std::to_string(ev);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const inline static columnar_error_category columnar_category_instance;
|
|
52
|
-
|
|
53
|
-
auto
|
|
54
|
-
columnar_category() noexcept -> const std::error_category&
|
|
55
|
-
{
|
|
56
|
-
return columnar_category_instance;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
struct columnar_client_error_category : std::error_category {
|
|
60
|
-
[[nodiscard]] auto name() const noexcept -> const char* override
|
|
61
|
-
{
|
|
62
|
-
return "couchbase.core.columnar.client_errc";
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
[[nodiscard]] auto message(int ev) const noexcept -> std::string override
|
|
66
|
-
{
|
|
67
|
-
switch (static_cast<client_errc>(ev)) {
|
|
68
|
-
case client_errc::canceled:
|
|
69
|
-
return "canceled";
|
|
70
|
-
case client_errc::cluster_closed:
|
|
71
|
-
return "cluster_closed";
|
|
72
|
-
case client_errc::invalid_argument:
|
|
73
|
-
return "invalid_argument";
|
|
74
|
-
}
|
|
75
|
-
return "FIXME: unknown error code (recompile with newer library): "
|
|
76
|
-
"couchbase.core.columnar.client_errc" +
|
|
77
|
-
std::to_string(ev);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const inline static columnar_client_error_category columnar_client_category_instance;
|
|
82
|
-
|
|
83
|
-
auto
|
|
84
|
-
columnar_client_category() noexcept -> const std::error_category&
|
|
85
|
-
{
|
|
86
|
-
return columnar_client_category_instance;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
auto
|
|
90
|
-
maybe_convert_error_code(std::error_code e) -> std::error_code
|
|
91
|
-
{
|
|
92
|
-
if (e == couchbase::errc::common::unambiguous_timeout ||
|
|
93
|
-
e == couchbase::errc::common::ambiguous_timeout) {
|
|
94
|
-
return errc::timeout;
|
|
95
|
-
}
|
|
96
|
-
if (e == couchbase::errc::common::request_canceled) {
|
|
97
|
-
return client_errc::canceled;
|
|
98
|
-
}
|
|
99
|
-
if (e == couchbase::errc::network::cluster_closed) {
|
|
100
|
-
return client_errc::cluster_closed;
|
|
101
|
-
}
|
|
102
|
-
if (e == couchbase::errc::common::invalid_argument) {
|
|
103
|
-
return client_errc::invalid_argument;
|
|
104
|
-
}
|
|
105
|
-
return e;
|
|
106
|
-
}
|
|
107
|
-
} // namespace couchbase::core::columnar
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2024. 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 <cstdint>
|
|
21
|
-
#include <system_error>
|
|
22
|
-
|
|
23
|
-
namespace couchbase::core::columnar
|
|
24
|
-
{
|
|
25
|
-
auto
|
|
26
|
-
columnar_category() noexcept -> const std::error_category&;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Error codes used when the error is the result of an unsuccessful client-server interaction.
|
|
30
|
-
* Wrapper SDKs should expose them as an error that extends ColumnarError.
|
|
31
|
-
*/
|
|
32
|
-
enum class errc : std::uint8_t {
|
|
33
|
-
generic = 1,
|
|
34
|
-
invalid_credential = 2,
|
|
35
|
-
timeout = 3,
|
|
36
|
-
query_error = 4,
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
inline auto
|
|
40
|
-
make_error_code(errc e) noexcept -> std::error_code
|
|
41
|
-
{
|
|
42
|
-
return { static_cast<int>(e), columnar_category() };
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
auto
|
|
46
|
-
columnar_client_category() noexcept -> const std::error_category&;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Error codes used for client-side errors.
|
|
50
|
-
* Wrapper SDKs should expose them using platform-idiomatic error types that do _not_ extend
|
|
51
|
-
* ColumnarError.
|
|
52
|
-
*/
|
|
53
|
-
enum class client_errc : std::uint8_t {
|
|
54
|
-
canceled = 1,
|
|
55
|
-
invalid_argument = 2,
|
|
56
|
-
cluster_closed = 3,
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
inline auto
|
|
60
|
-
make_error_code(client_errc e) noexcept -> std::error_code
|
|
61
|
-
{
|
|
62
|
-
return { static_cast<int>(e), columnar_client_category() };
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
auto
|
|
66
|
-
maybe_convert_error_code(std::error_code e) -> std::error_code;
|
|
67
|
-
} // namespace couchbase::core::columnar
|
|
68
|
-
|
|
69
|
-
template<>
|
|
70
|
-
struct std::is_error_code_enum<couchbase::core::columnar::errc> : std::true_type {
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
template<>
|
|
74
|
-
struct std::is_error_code_enum<couchbase::core::columnar::client_errc> : std::true_type {
|
|
75
|
-
};
|