couchbase 4.2.8 → 4.2.10
Sign up to get free protection for your applications and to get access to all the features.
- package/CMakeLists.txt +1 -1
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +139 -56
- package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
- package/deps/couchbase-cxx-client/CMakeLists.txt +401 -424
- package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +7 -3
- package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +1 -0
- package/deps/couchbase-cxx-client/core/agent_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/agent_group.cxx +0 -1
- package/deps/couchbase-cxx-client/core/agent_group.hxx +9 -0
- package/deps/couchbase-cxx-client/core/agent_group_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/bucket.cxx +74 -10
- package/deps/couchbase-cxx-client/core/bucket.hxx +4 -2
- package/deps/couchbase-cxx-client/core/cluster.cxx +1491 -108
- package/deps/couchbase-cxx-client/core/cluster.hxx +183 -473
- package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +1 -1
- package/deps/couchbase-cxx-client/core/cluster_options.cxx +12 -2
- package/deps/couchbase-cxx-client/core/cluster_options.hxx +9 -8
- package/deps/couchbase-cxx-client/core/config_profiles.cxx +2 -2
- package/deps/couchbase-cxx-client/core/config_profiles.hxx +1 -1
- package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +1 -2
- package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +3 -2
- package/deps/couchbase-cxx-client/core/diagnostics.hxx +0 -1
- package/deps/couchbase-cxx-client/core/dispatcher.cxx +2 -2
- package/deps/couchbase-cxx-client/core/impl/analytics.cxx +38 -76
- package/deps/couchbase-cxx-client/core/impl/analytics.hxx +40 -0
- package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +820 -0
- package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +403 -0
- package/deps/couchbase-cxx-client/core/impl/bucket.cxx +102 -0
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +299 -44
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +1384 -0
- package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +306 -0
- package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +3 -1
- package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +294 -0
- package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +39 -0
- package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -0
- package/deps/couchbase-cxx-client/core/{operations/mcbp_noop.cxx → impl/doc_id_query.cxx} +19 -15
- package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +4 -2
- package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +0 -10
- package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +0 -10
- package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +24 -17
- package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/query.cxx +45 -68
- package/deps/couchbase-cxx-client/core/impl/query.hxx +34 -0
- package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +628 -0
- package/deps/couchbase-cxx-client/core/impl/scope.cxx +187 -0
- package/deps/couchbase-cxx-client/core/impl/search.cxx +81 -57
- package/deps/couchbase-cxx-client/core/impl/search.hxx +45 -0
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +712 -0
- package/deps/couchbase-cxx-client/core/impl/search_request.cxx +139 -0
- package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +12 -0
- package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +87 -0
- package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +42 -0
- package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +40 -0
- package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +23 -25
- package/deps/couchbase-cxx-client/core/io/dns_config.cxx +28 -0
- package/deps/couchbase-cxx-client/core/io/dns_config.hxx +6 -25
- package/deps/couchbase-cxx-client/core/io/http_session.hxx +6 -3
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +9 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +1 -1
- package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +3 -2
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +75 -53
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +3 -1
- package/deps/couchbase-cxx-client/core/logger/logger.cxx +1 -1
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -4
- package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -1
- package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +1 -1
- package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +1 -1
- package/deps/couchbase-cxx-client/core/meta/features.hxx +38 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +23 -2
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/document_search.cxx +37 -1
- package/deps/couchbase-cxx-client/core/operations/document_search.hxx +11 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +9 -6
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +9 -8
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +9 -5
- package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +2 -2
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +4 -4
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +4 -4
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +23 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +23 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +23 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +39 -22
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +20 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +19 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
- package/deps/couchbase-cxx-client/core/operations_fwd.hxx +260 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +146 -5
- package/deps/couchbase-cxx-client/core/origin.hxx +30 -140
- package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +3 -3
- package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -0
- package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +4 -4
- package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +6 -0
- package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +3 -0
- package/deps/couchbase-cxx-client/core/protocol/status.cxx +6 -0
- package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
- package/deps/couchbase-cxx-client/core/query_context.hxx +11 -7
- package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +1 -1
- package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +1 -1
- package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +1 -1
- package/deps/couchbase-cxx-client/core/topology/configuration.cxx +23 -0
- package/deps/couchbase-cxx-client/core/topology/configuration.hxx +8 -12
- package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +3 -3
- package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
- package/deps/couchbase-cxx-client/core/topology/error_map.hxx +2 -2
- package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +4 -0
- package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +58 -0
- package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +5 -40
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +30 -0
- package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +18 -18
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +36 -0
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +39 -41
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +2 -2
- package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +3 -1
- package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +2 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +32 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +4 -30
- package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +41 -0
- package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +17 -15
- package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +1 -1
- package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +4 -4
- package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +5 -13
- package/deps/couchbase-cxx-client/core/transactions/result.hxx +0 -26
- package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +46 -0
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +16 -14
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +6 -6
- package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +48 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +1 -0
- package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +61 -4
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +9 -8
- package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +9 -16
- package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +7 -6
- package/deps/couchbase-cxx-client/core/transactions.hxx +6 -5
- package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +4 -3
- package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +4 -4
- package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +23 -0
- package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +463 -0
- package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/append_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +19 -115
- package/deps/couchbase-cxx-client/couchbase/bucket.hxx +42 -30
- package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +8 -7
- package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -1
- package/deps/couchbase-cxx-client/couchbase/cluster.hxx +151 -73
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
- package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +2 -1
- package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +78 -0
- package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +72 -0
- package/deps/couchbase-cxx-client/couchbase/collection.hxx +176 -386
- package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +8 -9
- package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +21 -24
- package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +116 -0
- package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +3 -3
- package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +32 -3
- package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +120 -0
- package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +85 -0
- package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +103 -0
- package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +63 -0
- package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +75 -0
- package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +124 -0
- package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +105 -0
- package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +103 -0
- package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +84 -0
- package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +103 -0
- package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +63 -0
- package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +206 -0
- package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +205 -0
- package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +22 -1
- package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +6 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -0
- package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +37 -0
- package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +66 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +65 -0
- package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +1 -4
- package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +45 -0
- package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +121 -0
- package/deps/couchbase-cxx-client/couchbase/get_options.hxx +1 -29
- package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +67 -0
- package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +44 -0
- package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +12 -0
- package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
- package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +48 -0
- package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +48 -0
- package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +239 -0
- package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +3 -3
- package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +40 -0
- package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -1
- package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/network_options.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +19 -0
- package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +93 -0
- package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +118 -0
- package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +99 -20
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +0 -21
- package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +0 -23
- package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +63 -0
- package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/scope.hxx +37 -53
- package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +291 -0
- package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +1 -7
- package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +26 -0
- package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +292 -0
- package/deps/couchbase-cxx-client/couchbase/search_request.hxx +120 -0
- package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +10 -0
- package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +84 -0
- package/deps/couchbase-cxx-client/couchbase/security_options.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/service_type.hxx +58 -0
- package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +10 -7
- package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +10 -10
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +8 -58
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +28 -70
- package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +7 -2
- package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +2 -1
- package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +11 -38
- package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +43 -0
- package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +32 -3
- package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
- package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +99 -0
- package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +85 -0
- package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +76 -0
- package/dist/binding.d.ts +16 -9
- package/dist/binding.js +4 -1
- package/dist/bindingutilities.d.ts +6 -1
- package/dist/bindingutilities.js +17 -1
- package/dist/cluster.d.ts +12 -1
- package/dist/cluster.js +22 -0
- package/dist/collection.js +3 -3
- package/dist/couchbase.d.ts +1 -0
- package/dist/couchbase.js +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +14 -2
- package/dist/searchexecutor.d.ts +2 -2
- package/dist/searchexecutor.js +19 -3
- package/dist/searchtypes.d.ts +46 -0
- package/dist/searchtypes.js +81 -1
- package/dist/transactions.d.ts +2 -0
- package/dist/transactions.js +2 -3
- package/dist/usermanager.js +1 -1
- package/dist/vectorsearch.d.ts +99 -0
- package/dist/vectorsearch.js +132 -0
- package/package.json +7 -7
- package/src/binding.cpp +1 -0
- package/src/connection.cpp +12 -9
- package/src/connection.hpp +3 -3
- package/src/connection_autogen.cpp +7 -5
- package/src/constants.cpp +14 -0
- package/src/instance.cpp +2 -2
- package/src/instance.hpp +1 -1
- package/src/jstocbpp_autogen.hpp +45 -45
- package/src/jstocbpp_basic.hpp +2 -0
- package/src/jstocbpp_errors.hpp +1 -0
- package/src/jstocbpp_transactions.hpp +6 -22
- package/src/mutationtoken.hpp +1 -0
- package/tools/gen-bindings-json.py +41 -16
- package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
- package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
- package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
- package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
- package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
- package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
- package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
- package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
- package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
- package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
- package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
- package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
- package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
- package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
- package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
- package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
- package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
- package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
- package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
- package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
- package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
- package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
- package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
- package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
- package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
- package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
- package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
- package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
- package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
- package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
- package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
- package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
- package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
- package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
- package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
- package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
- package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
- package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
- /package/deps/couchbase-cxx-client/core/impl/{streaming_json_lexter_error_category.cxx → streaming_json_lexer_error_category.cxx} +0 -0
@@ -44,8 +44,8 @@ static const tao::json::value KV_TXDATA{ { "kv", true } };
|
|
44
44
|
// the config may have nullptr for attempt context hooks, so we use the noop here in that case
|
45
45
|
static auto noop_hooks = attempt_context_testing_hooks{};
|
46
46
|
|
47
|
-
|
48
|
-
attempt_context_impl::cluster_ref()
|
47
|
+
const core::cluster&
|
48
|
+
attempt_context_impl::cluster_ref() const
|
49
49
|
{
|
50
50
|
return overall_.cluster_ref();
|
51
51
|
}
|
@@ -340,8 +340,7 @@ attempt_context_impl::replace_raw(const transaction_get_result& document, const
|
|
340
340
|
}
|
341
341
|
if (existing_sm != nullptr && existing_sm->type() == staged_mutation_type::INSERT) {
|
342
342
|
CB_ATTEMPT_CTX_LOG_DEBUG(this, "found existing INSERT of {} while replacing", document);
|
343
|
-
exp_delay delay(
|
344
|
-
std::chrono::milliseconds(5), std::chrono::milliseconds(300), overall_.config().expiration_time);
|
343
|
+
exp_delay delay(std::chrono::milliseconds(5), std::chrono::milliseconds(300), overall_.config().timeout);
|
345
344
|
create_staged_insert(document.id(), content, existing_sm->doc().cas().value(), delay, op_id, std::move(cb));
|
346
345
|
return;
|
347
346
|
}
|
@@ -393,7 +392,7 @@ attempt_context_impl::create_staged_replace(const transaction_get_result& docume
|
|
393
392
|
}
|
394
393
|
CB_ATTEMPT_CTX_LOG_TRACE(
|
395
394
|
this, "about to replace doc {} with cas {} in txn {}", document.id(), document.cas().value(), overall_.transaction_id());
|
396
|
-
overall_.cluster_ref()
|
395
|
+
overall_.cluster_ref().execute(
|
397
396
|
req,
|
398
397
|
[this, document = std::move(document), content, cb = std::move(cb), error_handler = std::move(error_handler)](
|
399
398
|
core::operations::mutate_in_response resp) mutable {
|
@@ -478,7 +477,7 @@ attempt_context_impl::insert_raw(const core::document_id& id, const std::vector<
|
|
478
477
|
return create_staged_replace(existing_sm->doc(), content, op_id, std::move(cb));
|
479
478
|
}
|
480
479
|
uint64_t cas = 0;
|
481
|
-
exp_delay delay(std::chrono::milliseconds(5), std::chrono::milliseconds(300), overall_.config().
|
480
|
+
exp_delay delay(std::chrono::milliseconds(5), std::chrono::milliseconds(300), overall_.config().timeout);
|
482
481
|
create_staged_insert(id, content, cas, delay, op_id, std::move(cb));
|
483
482
|
});
|
484
483
|
} catch (const std::exception& e) {
|
@@ -645,7 +644,7 @@ attempt_context_impl::remove(const transaction_get_result& document, VoidCallbac
|
|
645
644
|
auto req = create_staging_request(document.id(), &document, "remove", op_id);
|
646
645
|
req.cas = document.cas();
|
647
646
|
req.access_deleted = document.links().is_deleted();
|
648
|
-
overall_.cluster_ref()
|
647
|
+
overall_.cluster_ref().execute(
|
649
648
|
req,
|
650
649
|
[this, document = std::move(document), cb = std::move(cb), error_handler = std::move(error_handler)](
|
651
650
|
core::operations::mutate_in_response resp) mutable {
|
@@ -702,23 +701,23 @@ attempt_context_impl::remove_staged_insert(const core::document_id& id, VoidCall
|
|
702
701
|
wrap_durable_request(req, overall_.config());
|
703
702
|
req.access_deleted = true;
|
704
703
|
|
705
|
-
overall_.cluster_ref()
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
704
|
+
overall_.cluster_ref().execute(req,
|
705
|
+
[this, id = std::move(id), cb = std::move(cb), error_handler = std::move(error_handler)](
|
706
|
+
core::operations::mutate_in_response resp) mutable {
|
707
|
+
auto ec = error_class_from_response(resp);
|
708
|
+
if (!ec) {
|
709
|
+
|
710
|
+
if (auto err = hooks_.after_remove_staged_insert(this, id.key()); err) {
|
711
|
+
error_handler(*err, "after_remove_staged_insert hook returned error", std::move(cb));
|
712
|
+
return;
|
713
|
+
}
|
714
|
+
staged_mutations_->remove_any(id);
|
715
|
+
op_completed_with_callback(std::move(cb));
|
716
|
+
return;
|
717
|
+
}
|
718
|
+
CB_ATTEMPT_CTX_LOG_DEBUG(this, "remove_staged_insert got error {}", *ec);
|
719
|
+
return error_handler(*ec, resp.ctx.ec().message(), std::move(cb));
|
720
|
+
});
|
722
721
|
}
|
723
722
|
|
724
723
|
void
|
@@ -764,8 +763,9 @@ attempt_context_impl::query_begin_work(std::optional<std::string> query_context,
|
|
764
763
|
txdata["state"] = tao::json::empty_object;
|
765
764
|
txdata["state"]["timeLeftMs"] = overall_.remaining().count() / 1000000;
|
766
765
|
txdata["config"] = tao::json::empty_object;
|
766
|
+
auto [ec, origin] = overall_.cluster_ref().origin();
|
767
767
|
txdata["config"]["kvTimeoutMs"] =
|
768
|
-
|
768
|
+
(ec) ? core::timeout_defaults::key_value_durable_timeout.count() : origin.options().key_value_durable_timeout.count();
|
769
769
|
txdata["config"]["numAtrs"] = 1024;
|
770
770
|
opts.raw("numatrs", jsonify(1024));
|
771
771
|
txdata["config"]["durabilityLevel"] = durability_level_to_string(overall_.config().level);
|
@@ -1026,7 +1026,7 @@ attempt_context_impl::wrap_query(const std::string& statement,
|
|
1026
1026
|
return cb(std::make_exception_ptr(transaction_operation_failed(*ec, "before_query hook raised error")), {});
|
1027
1027
|
}
|
1028
1028
|
CB_ATTEMPT_CTX_LOG_TRACE(this, "http request: {}", dump_request(req));
|
1029
|
-
overall_.cluster_ref()
|
1029
|
+
overall_.cluster_ref().execute(req, [this, cb = std::move(cb)](core::operations::query_response resp) mutable {
|
1030
1030
|
CB_ATTEMPT_CTX_LOG_TRACE(this, "response: {} status: {}", resp.ctx.http_body, resp.meta.status);
|
1031
1031
|
if (auto ec = hooks_.after_query(this, resp.ctx.statement)) {
|
1032
1032
|
auto err = std::make_exception_ptr(transaction_operation_failed(*ec, "after_query hook raised error"));
|
@@ -1397,7 +1397,7 @@ attempt_context_impl::atr_commit(bool ambiguity_resolution_mode)
|
|
1397
1397
|
auto barrier = std::make_shared<std::promise<result>>();
|
1398
1398
|
auto f = barrier->get_future();
|
1399
1399
|
CB_ATTEMPT_CTX_LOG_TRACE(this, "updating atr {}, setting to {}", req.id, attempt_state_name(attempt_state::COMMITTED));
|
1400
|
-
overall_.cluster_ref()
|
1400
|
+
overall_.cluster_ref().execute(
|
1401
1401
|
req, [barrier](core::operations::mutate_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
|
1402
1402
|
auto res = wrap_operation_future(f, false);
|
1403
1403
|
ec = hooks_.after_atr_commit(this);
|
@@ -1496,10 +1496,9 @@ attempt_context_impl::atr_commit_ambiguity_resolution()
|
|
1496
1496
|
std::string prefix(ATR_FIELD_ATTEMPTS + "." + id() + ".");
|
1497
1497
|
core::operations::lookup_in_request req{ atr_id_.value() };
|
1498
1498
|
req.specs = lookup_in_specs{ lookup_in_specs::get(prefix + ATR_FIELD_STATUS).xattr() }.specs();
|
1499
|
-
wrap_request(req, overall_.config());
|
1500
1499
|
auto barrier = std::make_shared<std::promise<result>>();
|
1501
1500
|
auto f = barrier->get_future();
|
1502
|
-
overall_.cluster_ref()
|
1501
|
+
overall_.cluster_ref().execute(
|
1503
1502
|
req, [barrier](core::operations::lookup_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
|
1504
1503
|
auto res = wrap_operation_future(f);
|
1505
1504
|
auto atr_status_raw = res.values[0].content_as<std::string>();
|
@@ -1560,7 +1559,7 @@ attempt_context_impl::atr_complete()
|
|
1560
1559
|
wrap_durable_request(req, overall_.config());
|
1561
1560
|
auto barrier = std::make_shared<std::promise<result>>();
|
1562
1561
|
auto f = barrier->get_future();
|
1563
|
-
overall_.cluster_ref()
|
1562
|
+
overall_.cluster_ref().execute(
|
1564
1563
|
req, [barrier](core::operations::mutate_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
|
1565
1564
|
wrap_operation_future(f);
|
1566
1565
|
ec = hooks_.after_atr_complete(this);
|
@@ -1660,7 +1659,7 @@ attempt_context_impl::atr_abort()
|
|
1660
1659
|
wrap_durable_request(req, overall_.config());
|
1661
1660
|
auto barrier = std::make_shared<std::promise<result>>();
|
1662
1661
|
auto f = barrier->get_future();
|
1663
|
-
overall_.cluster_ref()
|
1662
|
+
overall_.cluster_ref().execute(
|
1664
1663
|
req, [barrier](core::operations::mutate_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
|
1665
1664
|
wrap_operation_future(f);
|
1666
1665
|
state(attempt_state::ABORTED);
|
@@ -1718,7 +1717,7 @@ attempt_context_impl::atr_rollback_complete()
|
|
1718
1717
|
wrap_durable_request(req, overall_.config());
|
1719
1718
|
auto barrier = std::make_shared<std::promise<result>>();
|
1720
1719
|
auto f = barrier->get_future();
|
1721
|
-
overall_.cluster_ref()
|
1720
|
+
overall_.cluster_ref().execute(
|
1722
1721
|
req, [barrier](core::operations::mutate_in_response resp) { barrier->set_value(result::create_from_subdoc_response(resp)); });
|
1723
1722
|
wrap_operation_future(f);
|
1724
1723
|
state(attempt_state::ROLLED_BACK);
|
@@ -1805,7 +1804,7 @@ attempt_context_impl::rollback()
|
|
1805
1804
|
}
|
1806
1805
|
if (is_done()) {
|
1807
1806
|
std::string msg("Transaction already done, cannot rollback");
|
1808
|
-
CB_ATTEMPT_CTX_LOG_ERROR(this, msg);
|
1807
|
+
CB_ATTEMPT_CTX_LOG_ERROR(this, "{}", msg);
|
1809
1808
|
// need to raise a FAIL_OTHER which is not retryable or rollback-able
|
1810
1809
|
throw transaction_operation_failed(FAIL_OTHER, msg).no_rollback();
|
1811
1810
|
}
|
@@ -1935,10 +1934,10 @@ attempt_context_impl::set_atr_pending_locked(const core::document_id& id, std::u
|
|
1935
1934
|
CB_ATTEMPT_CTX_LOG_DEBUG(this, "updating atr {}", atr_id_.value());
|
1936
1935
|
|
1937
1936
|
std::chrono::nanoseconds remaining = overall_.remaining();
|
1938
|
-
// This bounds the value to [0-
|
1937
|
+
// This bounds the value to [0-timeout]. It should always be in this range, this is just to protect
|
1939
1938
|
// against the application clock changing.
|
1940
|
-
long remaining_bounded_nanos =
|
1941
|
-
|
1939
|
+
long remaining_bounded_nanos =
|
1940
|
+
std::max(std::min(remaining.count(), overall_.config().timeout.count()), static_cast<std::chrono::nanoseconds::rep>(0));
|
1942
1941
|
long remaining_bounded_msecs = remaining_bounded_nanos / 1'000'000;
|
1943
1942
|
|
1944
1943
|
core::operations::mutate_in_request req{ atr_id_.value() };
|
@@ -1966,7 +1965,7 @@ attempt_context_impl::set_atr_pending_locked(const core::document_id& id, std::u
|
|
1966
1965
|
req.store_semantics = couchbase::store_semantics::upsert;
|
1967
1966
|
|
1968
1967
|
wrap_durable_request(req, overall_.config());
|
1969
|
-
overall_.cluster_ref()
|
1968
|
+
overall_.cluster_ref().execute(
|
1970
1969
|
req, [this, fn = std::forward<Handler>(fn), error_handler](core::operations::mutate_in_response resp) mutable {
|
1971
1970
|
auto ec = error_class_from_response(resp);
|
1972
1971
|
if (!ec) {
|
@@ -2031,7 +2030,7 @@ attempt_context_impl::do_get(const core::document_id& id, const std::optional<st
|
|
2031
2030
|
staged_mutation* own_remove = staged_mutations_->find_remove(id);
|
2032
2031
|
if (own_remove) {
|
2033
2032
|
auto msg = fmt::format("found own-write of removed doc {}", id);
|
2034
|
-
CB_ATTEMPT_CTX_LOG_DEBUG(this, msg);
|
2033
|
+
CB_ATTEMPT_CTX_LOG_DEBUG(this, "{}", msg);
|
2035
2034
|
return cb(FAIL_DOC_NOT_FOUND, msg, std::nullopt);
|
2036
2035
|
}
|
2037
2036
|
|
@@ -2176,9 +2175,8 @@ attempt_context_impl::get_doc(
|
|
2176
2175
|
}
|
2177
2176
|
.specs();
|
2178
2177
|
req.access_deleted = true;
|
2179
|
-
wrap_request(req, overall_.config());
|
2180
2178
|
try {
|
2181
|
-
overall_.cluster_ref()
|
2179
|
+
overall_.cluster_ref().execute(req, [this, id, cb = std::move(cb)](core::operations::lookup_in_response resp) {
|
2182
2180
|
auto ec = error_class_from_response(resp);
|
2183
2181
|
if (ec) {
|
2184
2182
|
CB_ATTEMPT_CTX_LOG_TRACE(this, "get_doc got error {} : {}", resp.ctx.ec().message(), *ec);
|
@@ -2369,7 +2367,7 @@ attempt_context_impl::create_staged_insert(const core::document_id& id,
|
|
2369
2367
|
req.cas = couchbase::cas(cas);
|
2370
2368
|
req.store_semantics = cas == 0 ? couchbase::store_semantics::insert : couchbase::store_semantics::replace;
|
2371
2369
|
wrap_durable_request(req, overall_.config());
|
2372
|
-
overall_.cluster_ref()
|
2370
|
+
overall_.cluster_ref().execute(
|
2373
2371
|
req,
|
2374
2372
|
[this, id, content, cas, op_id, cb = std::forward<Handler>(cb), delay = std::forward<Delay>(delay)](
|
2375
2373
|
core::operations::mutate_in_response resp) mutable {
|
@@ -331,7 +331,7 @@ class attempt_context_impl
|
|
331
331
|
}
|
332
332
|
}
|
333
333
|
|
334
|
-
|
334
|
+
const core::cluster& cluster_ref() const;
|
335
335
|
|
336
336
|
public:
|
337
337
|
explicit attempt_context_impl(transaction_context& transaction_ctx);
|
@@ -627,7 +627,7 @@ class attempt_context_impl
|
|
627
627
|
CB_LOG_DEBUG("ensure_open_bucket called with empty bucket_name");
|
628
628
|
return handler(couchbase::errc::common::bucket_not_found);
|
629
629
|
}
|
630
|
-
cluster_ref()
|
630
|
+
cluster_ref().open_bucket(bucket_name, [handler = std::move(handler)](std::error_code ec) { handler(ec); });
|
631
631
|
}
|
632
632
|
};
|
633
633
|
|
@@ -17,11 +17,13 @@
|
|
17
17
|
#pragma once
|
18
18
|
|
19
19
|
#include "atr_entry.hxx"
|
20
|
+
#include "core/document_id_fmt.hxx"
|
20
21
|
#include "core/transactions/transaction_get_result.hxx"
|
21
22
|
#include "logging.hxx"
|
22
23
|
|
23
|
-
#include <chrono>
|
24
24
|
#include <fmt/format.h>
|
25
|
+
|
26
|
+
#include <chrono>
|
25
27
|
#include <memory>
|
26
28
|
#include <mutex>
|
27
29
|
#include <optional>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2021-Present Couchbase, Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#include "doc_record.hxx"
|
18
|
+
|
19
|
+
#include <tao/json/value.hpp>
|
20
|
+
|
21
|
+
namespace couchbase::core::transactions
|
22
|
+
{
|
23
|
+
doc_record
|
24
|
+
doc_record::create_from(const tao::json::value& obj)
|
25
|
+
{
|
26
|
+
std::string bucket_name = obj.at(ATR_FIELD_PER_DOC_BUCKET).get_string();
|
27
|
+
std::string scope_name = obj.at(ATR_FIELD_PER_DOC_SCOPE).get_string();
|
28
|
+
std::string collection_name = obj.at(ATR_FIELD_PER_DOC_COLLECTION).get_string();
|
29
|
+
std::string id = obj.at(ATR_FIELD_PER_DOC_ID).get_string();
|
30
|
+
return doc_record(bucket_name, scope_name, collection_name, id);
|
31
|
+
}
|
32
|
+
} // namespace couchbase::core::transactions
|
@@ -19,6 +19,8 @@
|
|
19
19
|
|
20
20
|
#include "core/document_id.hxx"
|
21
21
|
|
22
|
+
#include <tao/json/forward.hpp>
|
23
|
+
|
22
24
|
#include <cstdint>
|
23
25
|
#include <string>
|
24
26
|
|
@@ -26,6 +28,8 @@ namespace couchbase::core::transactions
|
|
26
28
|
{
|
27
29
|
struct doc_record {
|
28
30
|
public:
|
31
|
+
static doc_record create_from(const tao::json::value& obj);
|
32
|
+
|
29
33
|
doc_record(std::string bucket_name, std::string scope_name, std::string collection_name, std::string id)
|
30
34
|
: id_(std::move(bucket_name), std::move(scope_name), std::move(collection_name), std::move(id))
|
31
35
|
{
|
@@ -51,15 +55,6 @@ struct doc_record {
|
|
51
55
|
return id_;
|
52
56
|
}
|
53
57
|
|
54
|
-
static doc_record create_from(const tao::json::value& obj)
|
55
|
-
{
|
56
|
-
std::string bucket_name = obj.at(ATR_FIELD_PER_DOC_BUCKET).get_string();
|
57
|
-
std::string scope_name = obj.at(ATR_FIELD_PER_DOC_SCOPE).get_string();
|
58
|
-
std::string collection_name = obj.at(ATR_FIELD_PER_DOC_COLLECTION).get_string();
|
59
|
-
std::string id = obj.at(ATR_FIELD_PER_DOC_ID).get_string();
|
60
|
-
return doc_record(bucket_name, scope_name, collection_name, id);
|
61
|
-
}
|
62
|
-
|
63
58
|
template<typename OStream>
|
64
59
|
friend OStream& operator<<(OStream& os, const doc_record& dr)
|
65
60
|
{
|
@@ -76,24 +71,3 @@ struct doc_record {
|
|
76
71
|
core::document_id id_;
|
77
72
|
};
|
78
73
|
} // namespace couchbase::core::transactions
|
79
|
-
|
80
|
-
template<>
|
81
|
-
struct fmt::formatter<couchbase::core::transactions::doc_record> {
|
82
|
-
public:
|
83
|
-
template<typename ParseContext>
|
84
|
-
constexpr auto parse(ParseContext& ctx)
|
85
|
-
{
|
86
|
-
return ctx.begin();
|
87
|
-
}
|
88
|
-
|
89
|
-
template<typename FormatContext>
|
90
|
-
constexpr auto format(const couchbase::core::transactions::doc_record& r, FormatContext& ctx) const
|
91
|
-
{
|
92
|
-
return format_to(ctx.out(),
|
93
|
-
"doc_record:{{ bucket: {}, scope: {}, collection: {}, key: {} }}",
|
94
|
-
r.document_id().bucket(),
|
95
|
-
r.document_id().scope(),
|
96
|
-
r.document_id().collection(),
|
97
|
-
r.document_id().key());
|
98
|
-
}
|
99
|
-
};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2021-Present Couchbase, Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
#pragma once
|
17
|
+
|
18
|
+
#include "doc_record.hxx"
|
19
|
+
|
20
|
+
#include <fmt/core.h>
|
21
|
+
|
22
|
+
template<>
|
23
|
+
struct fmt::formatter<couchbase::core::transactions::doc_record> {
|
24
|
+
public:
|
25
|
+
template<typename ParseContext>
|
26
|
+
constexpr auto parse(ParseContext& ctx)
|
27
|
+
{
|
28
|
+
return ctx.begin();
|
29
|
+
}
|
30
|
+
|
31
|
+
template<typename FormatContext>
|
32
|
+
constexpr auto format(const couchbase::core::transactions::doc_record& r, FormatContext& ctx) const
|
33
|
+
{
|
34
|
+
return format_to(ctx.out(),
|
35
|
+
"doc_record:{{ bucket: {}, scope: {}, collection: {}, key: {} }}",
|
36
|
+
r.document_id().bucket(),
|
37
|
+
r.document_id().scope(),
|
38
|
+
r.document_id().collection(),
|
39
|
+
r.document_id().key());
|
40
|
+
}
|
41
|
+
};
|
@@ -19,27 +19,29 @@
|
|
19
19
|
|
20
20
|
namespace couchbase::core::transactions
|
21
21
|
{
|
22
|
-
|
23
|
-
|
24
|
-
static const std::string lost_attempt_format_string("[lost_attempt_cleanup]({}) - ");
|
25
|
-
static const std::string attempt_cleanup_format_string("[attempt_cleanup] - ");
|
22
|
+
#define CB_ORIGINAL_FMT(fmt, ...) fmt
|
23
|
+
#define CB_ORIGINAL_REST(fmt, ...) __VA_ARGS__
|
26
24
|
|
27
25
|
#define CB_TXN_LOG(level, ...) COUCHBASE_LOG(__FILE__, __LINE__, COUCHBASE_LOGGER_FUNCTION, level, __VA_ARGS__)
|
28
26
|
|
29
|
-
#define ADD_CTX(ctx, ...)
|
30
|
-
|
31
|
-
#define
|
32
|
-
|
27
|
+
#define ADD_CTX(ctx, ...) \
|
28
|
+
"[transactions]({}/{}) - " CB_ORIGINAL_FMT(__VA_ARGS__, dmmy), (ctx)->transaction_id(), (ctx)->id(), CB_ORIGINAL_REST(__VA_ARGS__)
|
29
|
+
#define ADD_LOST_ATTEMPT(ctx, ...) \
|
30
|
+
"[lost_attempt_cleanup]({}) - " CB_ORIGINAL_FMT(__VA_ARGS__, dmmy), fmt::ptr(ctx), CB_ORIGINAL_REST(__VA_ARGS__)
|
31
|
+
#define ADD_ATTEMPT_CLEANUP(...) "[attempt_cleanup] - " __VA_ARGS__
|
32
|
+
#define ADD_TXN(...) "[transactions] - " __VA_ARGS__
|
33
33
|
|
34
|
-
#define CB_ATTEMPT_CTX_LOG_TRACE(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::trace, ADD_CTX(ctx, __VA_ARGS__))
|
35
|
-
#define CB_ATTEMPT_CTX_LOG_DEBUG(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::debug, ADD_CTX(ctx, __VA_ARGS__))
|
36
|
-
#define CB_ATTEMPT_CTX_LOG_INFO(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::info, ADD_CTX(ctx, __VA_ARGS__))
|
37
|
-
#define CB_ATTEMPT_CTX_LOG_WARNING(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::warn, ADD_CTX(ctx, __VA_ARGS__))
|
38
|
-
#define CB_ATTEMPT_CTX_LOG_ERROR(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::err, ADD_CTX(ctx, __VA_ARGS__))
|
34
|
+
#define CB_ATTEMPT_CTX_LOG_TRACE(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::trace, ADD_CTX(ctx, __VA_ARGS__, nullptr))
|
35
|
+
#define CB_ATTEMPT_CTX_LOG_DEBUG(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::debug, ADD_CTX(ctx, __VA_ARGS__, nullptr))
|
36
|
+
#define CB_ATTEMPT_CTX_LOG_INFO(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::info, ADD_CTX(ctx, __VA_ARGS__, nullptr))
|
37
|
+
#define CB_ATTEMPT_CTX_LOG_WARNING(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::warn, ADD_CTX(ctx, __VA_ARGS__, nullptr))
|
38
|
+
#define CB_ATTEMPT_CTX_LOG_ERROR(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::err, ADD_CTX(ctx, __VA_ARGS__, nullptr))
|
39
39
|
#define CB_ATTEMPT_CTX_LOG_CRITICAL(ctx, ...) CB_TXN_LOG(couchbase::core::logger::level::critical, ADD_CTX(ctx, __VA_ARGS__))
|
40
40
|
|
41
|
-
#define CB_LOST_ATTEMPT_CLEANUP_LOG_TRACE(...)
|
42
|
-
|
41
|
+
#define CB_LOST_ATTEMPT_CLEANUP_LOG_TRACE(...) \
|
42
|
+
CB_TXN_LOG(couchbase::core::logger::level::trace, ADD_LOST_ATTEMPT(this, __VA_ARGS__, nullptr))
|
43
|
+
#define CB_LOST_ATTEMPT_CLEANUP_LOG_DEBUG(...) \
|
44
|
+
CB_TXN_LOG(couchbase::core::logger::level::debug, ADD_LOST_ATTEMPT(this, __VA_ARGS__, nullptr))
|
43
45
|
#define CB_LOST_ATTEMPT_CLEANUP_LOG_INFO(...) CB_TXN_LOG(couchbase::core::logger::level::info, ADD_LOST_ATTEMPT(this, __VA_ARGS__))
|
44
46
|
#define CB_LOST_ATTEMPT_CLEANUP_LOG_WARNING(...) CB_TXN_LOG(couchbase::core::logger::level::warn, ADD_LOST_ATTEMPT(this, __VA_ARGS__))
|
45
47
|
#define CB_LOST_ATTEMPT_CLEANUP_LOG_ERROR(...) CB_TXN_LOG(couchbase::core::logger::level::err, ADD_LOST_ATTEMPT(this, __VA_ARGS__))
|
@@ -87,10 +87,10 @@ struct atr_cleanup_stats {
|
|
87
87
|
class transactions_cleanup
|
88
88
|
{
|
89
89
|
public:
|
90
|
-
transactions_cleanup(
|
90
|
+
transactions_cleanup(core::cluster cluster, const couchbase::transactions::transactions_config::built& config);
|
91
91
|
~transactions_cleanup();
|
92
92
|
|
93
|
-
[[nodiscard]]
|
93
|
+
[[nodiscard]] const core::cluster& cluster_ref() const
|
94
94
|
{
|
95
95
|
return cluster_;
|
96
96
|
};
|
@@ -130,7 +130,7 @@ class transactions_cleanup
|
|
130
130
|
void close();
|
131
131
|
|
132
132
|
private:
|
133
|
-
|
133
|
+
core::cluster cluster_;
|
134
134
|
couchbase::transactions::transactions_config::built config_;
|
135
135
|
const std::chrono::milliseconds cleanup_loop_delay_{ 100 };
|
136
136
|
|
@@ -162,4 +162,4 @@ class transactions_cleanup
|
|
162
162
|
bool running_{ false };
|
163
163
|
};
|
164
164
|
} // namespace transactions
|
165
|
-
} // namespace couchbase::core
|
165
|
+
} // namespace couchbase::core
|
@@ -57,30 +57,18 @@ operator<<(OStream& os, const core::document_id& id)
|
|
57
57
|
return os;
|
58
58
|
}
|
59
59
|
|
60
|
-
template<typename T>
|
61
|
-
T&
|
62
|
-
wrap_request(T&& req, const couchbase::transactions::transactions_config::built& config)
|
63
|
-
{
|
64
|
-
if (config.kv_timeout) {
|
65
|
-
req.timeout = config.kv_timeout.value();
|
66
|
-
}
|
67
|
-
return req;
|
68
|
-
}
|
69
|
-
|
70
60
|
template<typename T>
|
71
61
|
T&
|
72
62
|
wrap_durable_request(T&& req, const couchbase::transactions::transactions_config::built& config)
|
73
63
|
{
|
74
|
-
wrap_request(req, config);
|
75
64
|
req.durability_level = config.level;
|
76
65
|
return req;
|
77
66
|
}
|
78
67
|
|
79
68
|
template<typename T>
|
80
69
|
T&
|
81
|
-
wrap_durable_request(T&& req,
|
70
|
+
wrap_durable_request(T&& req, durability_level level)
|
82
71
|
{
|
83
|
-
wrap_request(req, config);
|
84
72
|
req.durability_level = level;
|
85
73
|
return req;
|
86
74
|
}
|
@@ -254,6 +242,7 @@ struct exp_delay {
|
|
254
242
|
std::chrono::nanoseconds timeout;
|
255
243
|
mutable std::uint32_t retries;
|
256
244
|
mutable std::optional<std::chrono::time_point<std::chrono::steady_clock>> end_time;
|
245
|
+
std::size_t max_retries{ 100 };
|
257
246
|
|
258
247
|
template<typename R1, typename P1, typename R2, typename P2, typename R3, typename P3>
|
259
248
|
exp_delay(std::chrono::duration<R1, P1> initial, std::chrono::duration<R2, P2> max, std::chrono::duration<R3, P3> limit)
|
@@ -267,6 +256,9 @@ struct exp_delay {
|
|
267
256
|
void operator()() const
|
268
257
|
{
|
269
258
|
auto now = std::chrono::steady_clock::now();
|
259
|
+
if (retries >= max_retries) {
|
260
|
+
throw retry_operation_retries_exhausted("retries exhausted");
|
261
|
+
}
|
270
262
|
if (!end_time) {
|
271
263
|
end_time = std::chrono::steady_clock::now() + timeout;
|
272
264
|
return;
|
@@ -22,7 +22,6 @@
|
|
22
22
|
|
23
23
|
#include "couchbase/codec/tao_json_serializer.hxx"
|
24
24
|
|
25
|
-
#include <fmt/format.h>
|
26
25
|
#include <optional>
|
27
26
|
#include <string>
|
28
27
|
#include <vector>
|
@@ -269,28 +268,3 @@ struct result : result_base {
|
|
269
268
|
};
|
270
269
|
} // namespace transactions
|
271
270
|
} // namespace couchbase::core
|
272
|
-
|
273
|
-
template<>
|
274
|
-
struct fmt::formatter<couchbase::core::transactions::result> {
|
275
|
-
public:
|
276
|
-
template<typename ParseContext>
|
277
|
-
constexpr auto parse(ParseContext& ctx)
|
278
|
-
{
|
279
|
-
return ctx.begin();
|
280
|
-
}
|
281
|
-
|
282
|
-
template<typename FormatContext>
|
283
|
-
constexpr auto format(const couchbase::core::transactions::result& r, FormatContext& ctx) const
|
284
|
-
{
|
285
|
-
return format_to(ctx.out(),
|
286
|
-
"result:{{ rc: {}, strerror: {}, cas: {}, is_deleted: {}, datatype: {}, flags: {}, raw_value: {:.{}} }}",
|
287
|
-
r.rc,
|
288
|
-
r.strerror(),
|
289
|
-
r.cas,
|
290
|
-
r.is_deleted,
|
291
|
-
r.datatype,
|
292
|
-
r.flags,
|
293
|
-
couchbase::core::transactions::to_string(r.raw_value),
|
294
|
-
r.raw_value.size() > 1024 ? 1024 : r.raw_value.size());
|
295
|
-
}
|
296
|
-
};
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2021-Present Couchbase, Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#pragma once
|
18
|
+
|
19
|
+
#include "result.hxx"
|
20
|
+
|
21
|
+
#include <fmt/core.h>
|
22
|
+
|
23
|
+
template<>
|
24
|
+
struct fmt::formatter<couchbase::core::transactions::result> {
|
25
|
+
public:
|
26
|
+
template<typename ParseContext>
|
27
|
+
constexpr auto parse(ParseContext& ctx)
|
28
|
+
{
|
29
|
+
return ctx.begin();
|
30
|
+
}
|
31
|
+
|
32
|
+
template<typename FormatContext>
|
33
|
+
constexpr auto format(const couchbase::core::transactions::result& r, FormatContext& ctx) const
|
34
|
+
{
|
35
|
+
return format_to(ctx.out(),
|
36
|
+
"result:{{ rc: {}, strerror: {}, cas: {}, is_deleted: {}, datatype: {}, flags: {}, raw_value: {:.{}} }}",
|
37
|
+
r.rc,
|
38
|
+
r.strerror(),
|
39
|
+
r.cas,
|
40
|
+
r.is_deleted,
|
41
|
+
r.datatype,
|
42
|
+
r.flags,
|
43
|
+
couchbase::core::transactions::to_string(r.raw_value),
|
44
|
+
r.raw_value.size() > 1024 ? 1024 : r.raw_value.size());
|
45
|
+
}
|
46
|
+
};
|