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.
Files changed (317) 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 +397 -424
  5. package/deps/couchbase-cxx-client/core/agent_config.hxx +1 -1
  6. package/deps/couchbase-cxx-client/core/agent_group.cxx +0 -1
  7. package/deps/couchbase-cxx-client/core/agent_group.hxx +9 -0
  8. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +1 -1
  9. package/deps/couchbase-cxx-client/core/bucket.cxx +22 -8
  10. package/deps/couchbase-cxx-client/core/bucket.hxx +3 -1
  11. package/deps/couchbase-cxx-client/core/cluster.cxx +1453 -108
  12. package/deps/couchbase-cxx-client/core/cluster.hxx +183 -473
  13. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +1 -1
  14. package/deps/couchbase-cxx-client/core/cluster_options.cxx +12 -2
  15. package/deps/couchbase-cxx-client/core/cluster_options.hxx +9 -8
  16. package/deps/couchbase-cxx-client/core/config_profiles.cxx +2 -2
  17. package/deps/couchbase-cxx-client/core/config_profiles.hxx +1 -1
  18. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +1 -2
  19. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +3 -2
  20. package/deps/couchbase-cxx-client/core/diagnostics.hxx +0 -1
  21. package/deps/couchbase-cxx-client/core/dispatcher.cxx +2 -2
  22. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +38 -76
  23. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +40 -0
  24. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +820 -0
  25. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +403 -0
  26. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +78 -0
  27. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +433 -0
  28. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +226 -44
  29. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1384 -0
  30. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +306 -0
  31. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +3 -1
  32. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -0
  33. package/deps/couchbase-cxx-client/core/{operations/mcbp_noop.cxx → impl/doc_id_query.cxx} +19 -15
  34. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +4 -2
  35. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +0 -10
  36. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +0 -10
  37. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +24 -17
  38. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  39. package/deps/couchbase-cxx-client/core/impl/query.cxx +45 -68
  40. package/deps/couchbase-cxx-client/core/impl/query.hxx +34 -0
  41. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +628 -0
  42. package/deps/couchbase-cxx-client/core/impl/scope.cxx +172 -0
  43. package/deps/couchbase-cxx-client/core/impl/search.cxx +12 -61
  44. package/deps/couchbase-cxx-client/core/impl/search.hxx +37 -0
  45. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +469 -0
  46. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +12 -0
  47. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +87 -0
  48. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +23 -25
  49. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +28 -0
  50. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +6 -25
  51. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +9 -1
  52. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +1 -1
  53. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +3 -2
  54. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +51 -21
  55. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +2 -1
  56. package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -4
  57. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +1 -1
  58. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +1 -1
  59. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +1 -1
  60. package/deps/couchbase-cxx-client/core/meta/features.hxx +28 -0
  61. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +17 -1
  62. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -1
  63. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +2 -0
  64. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +2 -0
  65. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +2 -0
  66. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +2 -0
  67. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +2 -0
  68. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +2 -0
  69. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +2 -0
  70. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +2 -0
  71. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +2 -0
  72. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +2 -0
  73. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +1 -1
  74. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -0
  75. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +2 -0
  76. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +2 -0
  77. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +2 -0
  78. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +3 -1
  79. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +2 -0
  80. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +2 -0
  81. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +2 -0
  82. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +6 -5
  83. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +2 -0
  84. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +2 -0
  85. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +2 -0
  86. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +2 -0
  87. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +2 -0
  88. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +2 -0
  89. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +2 -0
  90. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +2 -0
  91. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +2 -0
  92. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +1 -1
  93. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +2 -2
  94. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +4 -1
  95. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +4 -1
  96. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +1 -1
  97. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +1 -1
  98. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -0
  99. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +2 -0
  100. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +2 -0
  101. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +4 -4
  102. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +4 -4
  103. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +2 -0
  104. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +2 -0
  105. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +2 -0
  106. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +2 -0
  107. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +2 -0
  108. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +2 -0
  109. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +1 -1
  110. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +2 -0
  111. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +2 -0
  112. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +2 -0
  113. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -0
  114. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -0
  115. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +2 -0
  116. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -0
  117. package/deps/couchbase-cxx-client/core/operations.hxx +0 -1
  118. package/deps/couchbase-cxx-client/core/operations_fwd.hxx +260 -0
  119. package/deps/couchbase-cxx-client/core/origin.cxx +146 -5
  120. package/deps/couchbase-cxx-client/core/origin.hxx +30 -140
  121. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +3 -3
  122. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -0
  123. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +4 -4
  124. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +6 -0
  125. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +3 -0
  126. package/deps/couchbase-cxx-client/core/protocol/status.cxx +6 -0
  127. package/deps/couchbase-cxx-client/core/protocol/status.hxx +1 -0
  128. package/deps/couchbase-cxx-client/core/query_context.hxx +11 -7
  129. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +1 -1
  130. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +23 -0
  131. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +8 -12
  132. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +3 -3
  133. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
  134. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +2 -2
  135. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +4 -0
  136. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +58 -0
  137. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +5 -40
  138. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +30 -0
  139. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +18 -18
  140. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +36 -0
  141. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +39 -41
  142. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +2 -2
  143. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +3 -1
  144. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +2 -0
  145. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +32 -0
  146. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +4 -30
  147. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +41 -0
  148. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +17 -15
  149. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +1 -1
  150. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +4 -4
  151. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +1 -13
  152. package/deps/couchbase-cxx-client/core/transactions/result.hxx +0 -26
  153. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +46 -0
  154. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +16 -14
  155. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +6 -6
  156. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +48 -0
  157. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +1 -0
  158. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +61 -4
  159. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +9 -8
  160. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +9 -16
  161. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +7 -6
  162. package/deps/couchbase-cxx-client/core/transactions.hxx +6 -5
  163. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +4 -3
  164. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +4 -4
  165. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +44 -0
  166. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +463 -0
  167. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +44 -0
  168. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +0 -24
  169. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +1 -1
  170. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +19 -115
  171. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +13 -30
  172. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +8 -7
  173. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -1
  174. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +41 -73
  175. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +1 -27
  176. package/deps/couchbase-cxx-client/couchbase/collection.hxx +176 -386
  177. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +8 -9
  178. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +21 -24
  179. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +116 -0
  180. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +3 -3
  181. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +3 -2
  182. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +120 -0
  183. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +85 -0
  184. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +103 -0
  185. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +63 -0
  186. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +0 -23
  187. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +43 -0
  188. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +105 -0
  189. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +103 -0
  190. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +84 -0
  191. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +103 -0
  192. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +63 -0
  193. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +43 -0
  194. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +22 -1
  195. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +0 -23
  196. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +6 -0
  197. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +3 -0
  198. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +37 -0
  199. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +43 -0
  200. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +66 -0
  201. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +65 -0
  202. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +1 -4
  203. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +0 -23
  204. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +45 -0
  205. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +0 -24
  206. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +0 -24
  207. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +0 -23
  208. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +43 -0
  209. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +121 -0
  210. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +0 -23
  211. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +67 -0
  212. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +44 -0
  213. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +0 -23
  214. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +0 -24
  215. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +12 -0
  216. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +1 -0
  217. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +0 -24
  218. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +48 -0
  219. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +48 -0
  220. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +239 -0
  221. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +3 -3
  222. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +40 -0
  223. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -1
  224. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +0 -24
  225. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +1 -1
  226. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +43 -0
  227. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +19 -0
  228. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +0 -24
  229. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +99 -20
  230. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +0 -21
  231. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +0 -23
  232. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +63 -0
  233. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +0 -24
  234. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +43 -0
  235. package/deps/couchbase-cxx-client/couchbase/scope.hxx +13 -45
  236. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +1 -7
  237. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +26 -0
  238. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +292 -0
  239. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +10 -0
  240. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +84 -0
  241. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +1 -1
  242. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +0 -24
  243. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +1 -1
  244. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +10 -7
  245. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +10 -10
  246. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +8 -58
  247. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +28 -70
  248. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +7 -2
  249. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +2 -1
  250. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +11 -38
  251. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +43 -0
  252. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +0 -24
  253. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +0 -24
  254. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +41 -0
  255. package/dist/binding.d.ts +7 -9
  256. package/dist/bindingutilities.js +2 -0
  257. package/dist/collection.js +3 -3
  258. package/dist/errors.d.ts +9 -0
  259. package/dist/errors.js +14 -2
  260. package/dist/transactions.d.ts +2 -0
  261. package/dist/transactions.js +2 -3
  262. package/dist/usermanager.js +1 -1
  263. package/package.json +7 -7
  264. package/src/binding.cpp +1 -0
  265. package/src/connection.cpp +12 -9
  266. package/src/connection.hpp +3 -3
  267. package/src/connection_autogen.cpp +7 -5
  268. package/src/constants.cpp +3 -0
  269. package/src/instance.cpp +2 -2
  270. package/src/instance.hpp +1 -1
  271. package/src/jstocbpp_autogen.hpp +21 -38
  272. package/src/jstocbpp_basic.hpp +2 -0
  273. package/src/jstocbpp_errors.hpp +1 -0
  274. package/src/jstocbpp_transactions.hpp +6 -22
  275. package/src/mutationtoken.hpp +1 -0
  276. package/tools/gen-bindings-json.py +39 -16
  277. package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/CMakeLists.txt +0 -23
  278. package/deps/couchbase-cxx-cache/spdlog/66ab2619a0014319471759c03e2de1af6bda14de/spdlog/example/example.cpp +0 -398
  279. package/deps/couchbase-cxx-client/core/impl/append.cxx +0 -87
  280. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +0 -157
  281. package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +0 -158
  282. package/deps/couchbase-cxx-client/core/impl/create_collection.cxx +0 -83
  283. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +0 -232
  284. package/deps/couchbase-cxx-client/core/impl/create_scope.cxx +0 -69
  285. package/deps/couchbase-cxx-client/core/impl/decrement.cxx +0 -96
  286. package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +0 -66
  287. package/deps/couchbase-cxx-client/core/impl/drop_collection.cxx +0 -76
  288. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +0 -187
  289. package/deps/couchbase-cxx-client/core/impl/drop_scope.cxx +0 -68
  290. package/deps/couchbase-cxx-client/core/impl/exists.cxx +0 -47
  291. package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +0 -66
  292. package/deps/couchbase-cxx-client/core/impl/get.cxx +0 -68
  293. package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +0 -178
  294. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +0 -106
  295. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.cxx +0 -145
  296. package/deps/couchbase-cxx-client/core/impl/get_all_scopes.cxx +0 -94
  297. package/deps/couchbase-cxx-client/core/impl/get_and_lock.cxx +0 -49
  298. package/deps/couchbase-cxx-client/core/impl/get_and_touch.cxx +0 -49
  299. package/deps/couchbase-cxx-client/core/impl/get_any_replica.cxx +0 -134
  300. package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +0 -168
  301. package/deps/couchbase-cxx-client/core/impl/increment.cxx +0 -96
  302. package/deps/couchbase-cxx-client/core/impl/insert.cxx +0 -90
  303. package/deps/couchbase-cxx-client/core/impl/lookup_in.cxx +0 -69
  304. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.cxx +0 -178
  305. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.cxx +0 -169
  306. package/deps/couchbase-cxx-client/core/impl/mutate_in.cxx +0 -125
  307. package/deps/couchbase-cxx-client/core/impl/prepend.cxx +0 -87
  308. package/deps/couchbase-cxx-client/core/impl/remove.cxx +0 -86
  309. package/deps/couchbase-cxx-client/core/impl/replace.cxx +0 -102
  310. package/deps/couchbase-cxx-client/core/impl/touch.cxx +0 -49
  311. package/deps/couchbase-cxx-client/core/impl/unlock.cxx +0 -47
  312. package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +0 -133
  313. package/deps/couchbase-cxx-client/core/impl/update_collection.cxx +0 -83
  314. package/deps/couchbase-cxx-client/core/impl/upsert.cxx +0 -100
  315. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +0 -196
  316. package/deps/couchbase-cxx-client/core/operations/mcbp_noop.hxx +0 -49
  317. /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
  }
@@ -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
+ };