couchbase 4.2.8 → 4.2.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (370) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +139 -56
  3. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  4. package/deps/couchbase-cxx-client/CMakeLists.txt +401 -424
  5. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +7 -3
  6. package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +1 -0
  7. package/deps/couchbase-cxx-client/core/agent_config.hxx +1 -1
  8. package/deps/couchbase-cxx-client/core/agent_group.cxx +0 -1
  9. package/deps/couchbase-cxx-client/core/agent_group.hxx +9 -0
  10. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +1 -1
  11. package/deps/couchbase-cxx-client/core/bucket.cxx +74 -10
  12. package/deps/couchbase-cxx-client/core/bucket.hxx +4 -2
  13. package/deps/couchbase-cxx-client/core/cluster.cxx +1491 -108
  14. package/deps/couchbase-cxx-client/core/cluster.hxx +183 -473
  15. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +1 -1
  16. package/deps/couchbase-cxx-client/core/cluster_options.cxx +12 -2
  17. package/deps/couchbase-cxx-client/core/cluster_options.hxx +9 -8
  18. package/deps/couchbase-cxx-client/core/config_profiles.cxx +2 -2
  19. package/deps/couchbase-cxx-client/core/config_profiles.hxx +1 -1
  20. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +1 -2
  21. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +3 -2
  22. package/deps/couchbase-cxx-client/core/diagnostics.hxx +0 -1
  23. package/deps/couchbase-cxx-client/core/dispatcher.cxx +2 -2
  24. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +38 -76
  25. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +40 -0
  26. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +820 -0
  27. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +403 -0
  28. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +102 -0
  29. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
  30. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +299 -44
  31. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1384 -0
  32. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +306 -0
  33. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +3 -1
  34. package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +294 -0
  35. package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +39 -0
  36. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -0
  37. package/deps/couchbase-cxx-client/core/{operations/mcbp_noop.cxx → impl/doc_id_query.cxx} +19 -15
  38. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +4 -2
  39. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +0 -10
  40. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +0 -10
  41. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +24 -17
  42. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  43. package/deps/couchbase-cxx-client/core/impl/query.cxx +45 -68
  44. package/deps/couchbase-cxx-client/core/impl/query.hxx +34 -0
  45. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +628 -0
  46. package/deps/couchbase-cxx-client/core/impl/scope.cxx +187 -0
  47. package/deps/couchbase-cxx-client/core/impl/search.cxx +81 -57
  48. package/deps/couchbase-cxx-client/core/impl/search.hxx +45 -0
  49. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +712 -0
  50. package/deps/couchbase-cxx-client/core/impl/search_request.cxx +139 -0
  51. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +12 -0
  52. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +87 -0
  53. package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +42 -0
  54. package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +40 -0
  55. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +23 -25
  56. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +28 -0
  57. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +6 -25
  58. package/deps/couchbase-cxx-client/core/io/http_session.hxx +6 -3
  59. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +9 -1
  60. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +1 -1
  61. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +3 -2
  62. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +75 -53
  63. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +3 -1
  64. package/deps/couchbase-cxx-client/core/logger/logger.cxx +1 -1
  65. package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -4
  66. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -1
  67. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +1 -1
  68. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +1 -1
  69. package/deps/couchbase-cxx-client/core/meta/features.hxx +38 -0
  70. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +23 -2
  71. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
  72. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +37 -1
  73. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +11 -0
  74. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +2 -0
  75. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +2 -0
  76. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +2 -0
  77. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +2 -0
  78. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +2 -0
  79. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +2 -0
  80. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +2 -0
  81. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +2 -0
  82. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +2 -0
  83. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +2 -0
  84. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +1 -1
  85. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -0
  86. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +2 -0
  87. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +2 -0
  88. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +2 -0
  89. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +3 -1
  90. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +9 -6
  91. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +1 -1
  92. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
  93. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +9 -8
  94. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +1 -1
  95. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +9 -5
  96. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +2 -0
  97. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +2 -0
  98. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +2 -0
  99. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +2 -0
  100. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +2 -0
  101. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +2 -0
  102. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +2 -0
  103. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +2 -0
  104. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +2 -0
  105. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +1 -1
  106. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +2 -2
  107. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +4 -1
  108. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +4 -1
  109. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +1 -1
  110. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +1 -1
  111. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -0
  112. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +2 -0
  113. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +2 -0
  114. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +4 -4
  115. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +4 -4
  116. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +19 -1
  117. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +3 -0
  118. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +23 -1
  119. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +3 -0
  120. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +23 -1
  121. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +3 -0
  122. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +23 -1
  123. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +3 -0
  124. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +19 -1
  125. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +3 -0
  126. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +19 -1
  127. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +2 -0
  128. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +39 -22
  129. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +3 -0
  130. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +20 -1
  131. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +3 -0
  132. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +2 -0
  133. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +19 -1
  134. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +3 -0
  135. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -0
  136. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -0
  137. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +2 -0
  138. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -0
  139. package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
  140. package/deps/couchbase-cxx-client/core/operations_fwd.hxx +260 -0
  141. package/deps/couchbase-cxx-client/core/origin.cxx +146 -5
  142. package/deps/couchbase-cxx-client/core/origin.hxx +30 -140
  143. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +3 -3
  144. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -0
  145. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +4 -4
  146. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +6 -0
  147. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +3 -0
  148. package/deps/couchbase-cxx-client/core/protocol/status.cxx +6 -0
  149. package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
  150. package/deps/couchbase-cxx-client/core/query_context.hxx +11 -7
  151. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +1 -1
  152. package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +1 -1
  153. package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +1 -1
  154. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +23 -0
  155. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +8 -12
  156. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +3 -3
  157. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
  158. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +2 -2
  159. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +4 -0
  160. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +58 -0
  161. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +5 -40
  162. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +30 -0
  163. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +18 -18
  164. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +36 -0
  165. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +39 -41
  166. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +2 -2
  167. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +3 -1
  168. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +2 -0
  169. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +32 -0
  170. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +4 -30
  171. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +41 -0
  172. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +17 -15
  173. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +1 -1
  174. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +4 -4
  175. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +5 -13
  176. package/deps/couchbase-cxx-client/core/transactions/result.hxx +0 -26
  177. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +46 -0
  178. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +16 -14
  179. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +6 -6
  180. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +48 -0
  181. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +1 -0
  182. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +61 -4
  183. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +9 -8
  184. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +9 -16
  185. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +7 -6
  186. package/deps/couchbase-cxx-client/core/transactions.hxx +6 -5
  187. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +4 -3
  188. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +4 -4
  189. package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +23 -0
  190. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +44 -0
  191. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +463 -0
  192. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +44 -0
  193. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +0 -24
  194. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +1 -1
  195. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +19 -115
  196. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +42 -30
  197. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +8 -7
  198. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -1
  199. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +151 -73
  200. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
  201. package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +1 -1
  202. package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +2 -1
  203. package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +78 -0
  204. package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +72 -0
  205. package/deps/couchbase-cxx-client/couchbase/collection.hxx +176 -386
  206. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +8 -9
  207. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +21 -24
  208. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +116 -0
  209. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +3 -3
  210. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +32 -3
  211. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +120 -0
  212. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +85 -0
  213. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +103 -0
  214. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +63 -0
  215. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +0 -23
  216. package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +75 -0
  217. package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +124 -0
  218. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +43 -0
  219. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +105 -0
  220. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +103 -0
  221. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +84 -0
  222. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +103 -0
  223. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +63 -0
  224. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +43 -0
  225. package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +206 -0
  226. package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +205 -0
  227. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +22 -1
  228. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +0 -23
  229. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +6 -0
  230. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -0
  231. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +37 -0
  232. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +43 -0
  233. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +66 -0
  234. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +65 -0
  235. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +1 -4
  236. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +0 -23
  237. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +45 -0
  238. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +0 -24
  239. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +0 -24
  240. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +0 -23
  241. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +43 -0
  242. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +121 -0
  243. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +1 -29
  244. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +67 -0
  245. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +44 -0
  246. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +0 -23
  247. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +0 -24
  248. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +12 -0
  249. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
  250. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +0 -24
  251. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +48 -0
  252. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +48 -0
  253. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +239 -0
  254. package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +1 -1
  255. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +3 -3
  256. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +40 -0
  257. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -1
  258. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +0 -24
  259. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +1 -1
  260. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +43 -0
  261. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +19 -0
  262. package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +93 -0
  263. package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +118 -0
  264. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +0 -24
  265. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +99 -20
  266. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +0 -21
  267. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +0 -23
  268. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +63 -0
  269. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +0 -24
  270. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +43 -0
  271. package/deps/couchbase-cxx-client/couchbase/scope.hxx +37 -53
  272. package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +291 -0
  273. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +1 -7
  274. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +26 -0
  275. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +292 -0
  276. package/deps/couchbase-cxx-client/couchbase/search_request.hxx +120 -0
  277. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +10 -0
  278. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +84 -0
  279. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +1 -1
  280. package/deps/couchbase-cxx-client/couchbase/service_type.hxx +58 -0
  281. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +0 -24
  282. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +1 -1
  283. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +10 -7
  284. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +10 -10
  285. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +8 -58
  286. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +28 -70
  287. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +7 -2
  288. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +2 -1
  289. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +11 -38
  290. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +43 -0
  291. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +0 -24
  292. package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +32 -3
  293. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +0 -24
  294. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
  295. package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +99 -0
  296. package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +85 -0
  297. package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +76 -0
  298. package/dist/binding.d.ts +16 -9
  299. package/dist/binding.js +4 -1
  300. package/dist/bindingutilities.d.ts +6 -1
  301. package/dist/bindingutilities.js +17 -1
  302. package/dist/cluster.d.ts +12 -1
  303. package/dist/cluster.js +22 -0
  304. package/dist/collection.js +3 -3
  305. package/dist/couchbase.d.ts +1 -0
  306. package/dist/couchbase.js +1 -0
  307. package/dist/errors.d.ts +9 -0
  308. package/dist/errors.js +14 -2
  309. package/dist/searchexecutor.d.ts +2 -2
  310. package/dist/searchexecutor.js +19 -3
  311. package/dist/searchtypes.d.ts +46 -0
  312. package/dist/searchtypes.js +81 -1
  313. package/dist/transactions.d.ts +2 -0
  314. package/dist/transactions.js +2 -3
  315. package/dist/usermanager.js +1 -1
  316. package/dist/vectorsearch.d.ts +99 -0
  317. package/dist/vectorsearch.js +132 -0
  318. package/package.json +7 -7
  319. package/src/binding.cpp +1 -0
  320. package/src/connection.cpp +12 -9
  321. package/src/connection.hpp +3 -3
  322. package/src/connection_autogen.cpp +7 -5
  323. package/src/constants.cpp +14 -0
  324. package/src/instance.cpp +2 -2
  325. package/src/instance.hpp +1 -1
  326. package/src/jstocbpp_autogen.hpp +45 -45
  327. package/src/jstocbpp_basic.hpp +2 -0
  328. package/src/jstocbpp_errors.hpp +1 -0
  329. package/src/jstocbpp_transactions.hpp +6 -22
  330. package/src/mutationtoken.hpp +1 -0
  331. package/tools/gen-bindings-json.py +41 -16
  332. package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
  333. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
  334. package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
  335. package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
  336. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
  337. package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
  338. package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
  339. package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
  340. package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
  341. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
  342. package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
  343. package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
  344. package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
  345. package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
  346. package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
  347. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
  348. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
  349. package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
  350. package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
  351. package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
  352. package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
  353. package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
  354. package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
  355. package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
  356. package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
  357. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
  358. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
  359. package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
  360. package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
  361. package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
  362. package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
  363. package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
  364. package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
  365. package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
  366. package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
  367. package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
  368. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
  369. package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
  370. /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
- std::shared_ptr<core::cluster>
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()->execute(
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().expiration_time);
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()->execute(
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()->execute(req,
706
- [this, id = std::move(id), cb = std::move(cb), error_handler = std::move(error_handler)](
707
- core::operations::mutate_in_response resp) mutable {
708
- auto ec = error_class_from_response(resp);
709
- if (!ec) {
710
-
711
- if (auto err = hooks_.after_remove_staged_insert(this, id.key()); err) {
712
- error_handler(*err, "after_remove_staged_insert hook returned error", std::move(cb));
713
- return;
714
- }
715
- staged_mutations_->remove_any(id);
716
- op_completed_with_callback(std::move(cb));
717
- return;
718
- }
719
- CB_ATTEMPT_CTX_LOG_DEBUG(this, "remove_staged_insert got error {}", *ec);
720
- return error_handler(*ec, resp.ctx.ec().message(), std::move(cb));
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
- overall_.config().kv_timeout ? overall_.config().kv_timeout->count() : core::timeout_defaults::key_value_timeout.count();
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()->execute(req, [this, cb = std::move(cb)](core::operations::query_response resp) mutable {
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()->execute(
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()->execute(
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()->execute(
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()->execute(
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()->execute(
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-expirationTime]. It should always be in this range, this is just to protect
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 = std::max(std::min(remaining.count(), overall_.config().expiration_time.count()),
1941
- static_cast<std::chrono::nanoseconds::rep>(0));
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()->execute(
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()->execute(req, [this, id, cb = std::move(cb)](core::operations::lookup_in_response resp) {
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()->execute(
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
- std::shared_ptr<core::cluster> cluster_ref();
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()->open_bucket(bucket_name, [handler = std::move(handler)](std::error_code ec) { handler(ec); });
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>
@@ -19,6 +19,8 @@
19
19
  #include "core/transactions/attempt_state.hxx"
20
20
  #include "doc_record.hxx"
21
21
 
22
+ #include <tao/json/value.hpp>
23
+
22
24
  #include <chrono>
23
25
  #include <cstdint>
24
26
  #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
- static const std::string txn_format_string("[transactions] - ");
23
- static const std::string attempt_format_string("[transactions]({}/{}) - ");
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, ...) fmt::format(attempt_format_string, ctx->transaction_id(), ctx->id()) + __VA_ARGS__
30
- #define ADD_LOST_ATTEMPT(ctx, ...) fmt::format(couchbase::core::transactions::lost_attempt_format_string, fmt::ptr(ctx)) + __VA_ARGS__
31
- #define ADD_ATTEMPT_CLEANUP(...) couchbase::core::transactions::attempt_cleanup_format_string + __VA_ARGS__
32
- #define ADD_TXN(...) couchbase::core::transactions::txn_format_string + __VA_ARGS__
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(...) CB_TXN_LOG(couchbase::core::logger::level::trace, ADD_LOST_ATTEMPT(this, __VA_ARGS__))
42
- #define CB_LOST_ATTEMPT_CLEANUP_LOG_DEBUG(...) CB_TXN_LOG(couchbase::core::logger::level::debug, ADD_LOST_ATTEMPT(this, __VA_ARGS__))
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__))
@@ -72,7 +72,7 @@ class transaction_context
72
72
  attempts_.back().state = s;
73
73
  }
74
74
 
75
- [[nodiscard]] std::shared_ptr<core::cluster> cluster_ref()
75
+ [[nodiscard]] const core::cluster& cluster_ref() const
76
76
  {
77
77
  return transactions_.cluster_ref();
78
78
  }
@@ -87,10 +87,10 @@ struct atr_cleanup_stats {
87
87
  class transactions_cleanup
88
88
  {
89
89
  public:
90
- transactions_cleanup(std::shared_ptr<core::cluster> cluster, const couchbase::transactions::transactions_config::built& config);
90
+ transactions_cleanup(core::cluster cluster, const couchbase::transactions::transactions_config::built& config);
91
91
  ~transactions_cleanup();
92
92
 
93
- [[nodiscard]] std::shared_ptr<core::cluster> cluster_ref() const
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
- std::shared_ptr<core::cluster> cluster_;
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, const couchbase::transactions::transactions_config::built& config, durability_level level)
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
+ };