couchbase 4.2.8-dev.1 → 4.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +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 +397 -424
- 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 +22 -8
- package/deps/couchbase-cxx-client/core/bucket.hxx +3 -1
- package/deps/couchbase-cxx-client/core/cluster.cxx +1453 -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 +78 -0
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +226 -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/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 +172 -0
- package/deps/couchbase-cxx-client/core/impl/search.cxx +12 -61
- package/deps/couchbase-cxx-client/core/impl/search.hxx +37 -0
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +469 -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/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_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 +51 -21
- package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +2 -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 +28 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.cxx +17 -1
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
- 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 +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +6 -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 +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +1 -1
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +2 -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 +2 -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/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 +1 -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/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 +13 -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 +41 -73
- package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
- 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 +3 -2
- 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/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/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 +0 -23
- 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/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/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 +13 -45
- 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_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/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/upsert_options.hxx +0 -24
- package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
- package/dist/binding.d.ts +7 -9
- package/dist/bindingutilities.js +2 -0
- package/dist/collection.js +3 -3
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +14 -2
- package/dist/transactions.d.ts +2 -0
- package/dist/transactions.js +2 -3
- package/dist/usermanager.js +1 -1
- 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 +3 -0
- package/src/instance.cpp +2 -2
- package/src/instance.hpp +1 -1
- package/src/jstocbpp_autogen.hpp +21 -38
- 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 +39 -16
- package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/CMakeLists.txt +0 -23
- package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/example.cpp +0 -398
- 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
|
}
|
|
@@ -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
|
+
};
|