couchbase 4.3.1 → 4.4.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1104) hide show
  1. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +19 -32
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  3. package/deps/couchbase-cxx-client/CMakeLists.txt +16 -9
  4. package/deps/couchbase-cxx-client/README.md +39 -44
  5. package/deps/couchbase-cxx-client/cmake/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +3 -4
  6. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +2 -1
  7. package/deps/couchbase-cxx-client/cmake/Packaging.cmake +41 -0
  8. package/deps/couchbase-cxx-client/cmake/Sanitizers.cmake +1 -0
  9. package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +5 -5
  10. package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
  11. package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.pc.in +10 -0
  12. package/deps/couchbase-cxx-client/cmake/test_boringssl.cxx +1 -1
  13. package/deps/couchbase-cxx-client/cmake/test_openssl.cxx +1 -1
  14. package/deps/couchbase-cxx-client/core/agent.cxx +353 -304
  15. package/deps/couchbase-cxx-client/core/agent.hxx +94 -76
  16. package/deps/couchbase-cxx-client/core/agent_config.cxx +9 -8
  17. package/deps/couchbase-cxx-client/core/agent_config.hxx +7 -7
  18. package/deps/couchbase-cxx-client/core/agent_group.cxx +132 -120
  19. package/deps/couchbase-cxx-client/core/agent_group.hxx +26 -22
  20. package/deps/couchbase-cxx-client/core/agent_group_config.cxx +8 -7
  21. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +6 -6
  22. package/deps/couchbase-cxx-client/core/agent_unit_test_api.hxx +6 -6
  23. package/deps/couchbase-cxx-client/core/analytics_query_options.cxx +21 -21
  24. package/deps/couchbase-cxx-client/core/analytics_query_options.hxx +19 -18
  25. package/deps/couchbase-cxx-client/core/analytics_scan_consistency.hxx +2 -2
  26. package/deps/couchbase-cxx-client/core/bucket.cxx +848 -776
  27. package/deps/couchbase-cxx-client/core/bucket.hxx +151 -139
  28. package/deps/couchbase-cxx-client/core/capella_ca.hxx +20 -19
  29. package/deps/couchbase-cxx-client/core/cluster.cxx +1240 -927
  30. package/deps/couchbase-cxx-client/core/cluster.hxx +254 -167
  31. package/deps/couchbase-cxx-client/core/cluster_agent.cxx +7 -7
  32. package/deps/couchbase-cxx-client/core/cluster_agent.hxx +4 -4
  33. package/deps/couchbase-cxx-client/core/cluster_agent_config.cxx +8 -7
  34. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +6 -6
  35. package/deps/couchbase-cxx-client/core/cluster_options.cxx +17 -17
  36. package/deps/couchbase-cxx-client/core/cluster_options.hxx +50 -47
  37. package/deps/couchbase-cxx-client/core/cluster_state.hxx +3 -3
  38. package/deps/couchbase-cxx-client/core/collection_id_cache_entry.hxx +5 -4
  39. package/deps/couchbase-cxx-client/core/collections_component.cxx +372 -329
  40. package/deps/couchbase-cxx-client/core/collections_component.hxx +17 -13
  41. package/deps/couchbase-cxx-client/core/collections_component_unit_test_api.hxx +6 -6
  42. package/deps/couchbase-cxx-client/core/collections_options.hxx +29 -27
  43. package/deps/couchbase-cxx-client/core/config_listener.hxx +3 -3
  44. package/deps/couchbase-cxx-client/core/config_profile.hxx +3 -3
  45. package/deps/couchbase-cxx-client/core/config_profiles.cxx +31 -31
  46. package/deps/couchbase-cxx-client/core/config_profiles.hxx +19 -19
  47. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +2 -1
  48. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +2 -2
  49. package/deps/couchbase-cxx-client/core/crud_component.cxx +310 -276
  50. package/deps/couchbase-cxx-client/core/crud_component.hxx +21 -15
  51. package/deps/couchbase-cxx-client/core/crud_options.hxx +361 -354
  52. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.cc +732 -627
  53. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.h +12 -3
  54. package/deps/couchbase-cxx-client/core/design_document_namespace.hxx +2 -2
  55. package/deps/couchbase-cxx-client/core/design_document_namespace_fmt.hxx +18 -18
  56. package/deps/couchbase-cxx-client/core/diagnostics.hxx +44 -44
  57. package/deps/couchbase-cxx-client/core/diagnostics_fmt.hxx +76 -76
  58. package/deps/couchbase-cxx-client/core/diagnostics_json.hxx +61 -60
  59. package/deps/couchbase-cxx-client/core/diagntostics_options.hxx +14 -14
  60. package/deps/couchbase-cxx-client/core/dispatcher.cxx +4 -3
  61. package/deps/couchbase-cxx-client/core/dispatcher.hxx +8 -7
  62. package/deps/couchbase-cxx-client/core/document_id.cxx +37 -34
  63. package/deps/couchbase-cxx-client/core/document_id.hxx +87 -86
  64. package/deps/couchbase-cxx-client/core/document_id_fmt.hxx +10 -10
  65. package/deps/couchbase-cxx-client/core/durability_options.hxx +50 -49
  66. package/deps/couchbase-cxx-client/core/error_context/analytics.hxx +18 -18
  67. package/deps/couchbase-cxx-client/core/error_context/analytics_json.hxx +115 -0
  68. package/deps/couchbase-cxx-client/core/error_context/base_error_context.hxx +184 -0
  69. package/deps/couchbase-cxx-client/core/error_context/http.hxx +14 -14
  70. package/deps/couchbase-cxx-client/core/error_context/http_json.hxx +90 -0
  71. package/deps/couchbase-cxx-client/core/error_context/internal_tof_metadata_json.hxx +36 -0
  72. package/deps/couchbase-cxx-client/core/error_context/key_value.cxx +27 -27
  73. package/deps/couchbase-cxx-client/core/error_context/key_value.hxx +41 -38
  74. package/deps/couchbase-cxx-client/core/error_context/key_value_error_context.hxx +235 -0
  75. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_attribute.hxx +142 -0
  76. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_info.hxx +139 -0
  77. package/deps/couchbase-cxx-client/core/error_context/key_value_extended_error_info.hxx +86 -0
  78. package/deps/couchbase-cxx-client/core/error_context/key_value_json.hxx +83 -0
  79. package/deps/couchbase-cxx-client/core/error_context/key_value_status_code.hxx +109 -0
  80. package/deps/couchbase-cxx-client/core/error_context/query.hxx +18 -18
  81. package/deps/couchbase-cxx-client/core/error_context/query_error_context.hxx +150 -0
  82. package/deps/couchbase-cxx-client/core/error_context/query_json.hxx +114 -0
  83. package/deps/couchbase-cxx-client/core/error_context/query_public_json.hxx +84 -0
  84. package/deps/couchbase-cxx-client/core/error_context/search.hxx +17 -17
  85. package/deps/couchbase-cxx-client/core/error_context/search_json.hxx +101 -0
  86. package/deps/couchbase-cxx-client/core/error_context/subdocument_error_context.hxx +147 -0
  87. package/deps/couchbase-cxx-client/core/error_context/subdocument_json.hxx +48 -0
  88. package/deps/couchbase-cxx-client/{couchbase → core/error_context}/transaction_error_context.hxx +22 -22
  89. package/deps/couchbase-cxx-client/core/error_context/transaction_op_error_context.hxx +79 -0
  90. package/deps/couchbase-cxx-client/core/error_context/view.hxx +17 -17
  91. package/deps/couchbase-cxx-client/core/fmt/key_value_error_map_attribute.hxx +100 -0
  92. package/deps/couchbase-cxx-client/{couchbase → core}/fmt/key_value_extended_error_info.hxx +20 -20
  93. package/deps/couchbase-cxx-client/core/fmt/key_value_status_code.hxx +269 -0
  94. package/deps/couchbase-cxx-client/core/free_form_http_request.cxx +26 -26
  95. package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +34 -33
  96. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +111 -131
  97. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +5 -7
  98. package/deps/couchbase-cxx-client/core/impl/analytics_error_category.cxx +29 -28
  99. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +615 -516
  100. package/deps/couchbase-cxx-client/core/impl/best_effort_retry_strategy.cxx +53 -50
  101. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +346 -285
  102. package/deps/couchbase-cxx-client/core/impl/boolean_field_query.cxx +10 -10
  103. package/deps/couchbase-cxx-client/core/impl/boolean_query.cxx +27 -27
  104. package/deps/couchbase-cxx-client/core/impl/bootstrap_state_listener.hxx +6 -6
  105. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +39 -34
  106. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +354 -313
  107. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +430 -325
  108. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1033 -1187
  109. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +201 -170
  110. package/deps/couchbase-cxx-client/core/impl/common_error_category.cxx +58 -55
  111. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +46 -32
  112. package/deps/couchbase-cxx-client/core/impl/conjunction_query.cxx +17 -17
  113. package/deps/couchbase-cxx-client/core/impl/date_range.cxx +24 -20
  114. package/deps/couchbase-cxx-client/core/impl/date_range_facet.cxx +22 -22
  115. package/deps/couchbase-cxx-client/core/impl/date_range_facet_result.cxx +6 -6
  116. package/deps/couchbase-cxx-client/core/impl/date_range_query.cxx +50 -48
  117. package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +211 -198
  118. package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +7 -6
  119. package/deps/couchbase-cxx-client/core/impl/disjunction_query.cxx +18 -17
  120. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +92 -75
  121. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.hxx +24 -20
  122. package/deps/couchbase-cxx-client/core/impl/doc_id_query.cxx +9 -9
  123. package/deps/couchbase-cxx-client/core/impl/encoded_search_facet.hxx +2 -2
  124. package/deps/couchbase-cxx-client/core/impl/encoded_search_query.hxx +2 -2
  125. package/deps/couchbase-cxx-client/core/impl/encoded_search_sort.hxx +2 -2
  126. package/deps/couchbase-cxx-client/core/impl/error.cxx +171 -0
  127. package/deps/couchbase-cxx-client/core/impl/error.hxx +64 -0
  128. package/deps/couchbase-cxx-client/core/impl/error_context.cxx +56 -0
  129. package/deps/couchbase-cxx-client/core/impl/expiry.cxx +66 -53
  130. package/deps/couchbase-cxx-client/core/impl/fail_fast_retry_strategy.cxx +5 -4
  131. package/deps/couchbase-cxx-client/core/impl/field_level_encryption_error_category.cxx +30 -28
  132. package/deps/couchbase-cxx-client/core/impl/geo_bounding_box_query.cxx +17 -17
  133. package/deps/couchbase-cxx-client/core/impl/geo_distance_query.cxx +14 -14
  134. package/deps/couchbase-cxx-client/core/impl/geo_polygon_query.cxx +17 -17
  135. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +26 -22
  136. package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +25 -23
  137. package/deps/couchbase-cxx-client/core/impl/get_replica.cxx +18 -15
  138. package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +23 -18
  139. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.cxx +16 -14
  140. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.hxx +16 -15
  141. package/deps/couchbase-cxx-client/core/impl/internal_error_context.cxx +79 -0
  142. package/deps/couchbase-cxx-client/core/impl/internal_error_context.hxx +52 -0
  143. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.cxx +18 -15
  144. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.hxx +16 -15
  145. package/deps/couchbase-cxx-client/core/impl/internal_scan_result.hxx +7 -7
  146. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.cxx +25 -22
  147. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.hxx +32 -31
  148. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.cxx +15 -13
  149. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.hxx +10 -9
  150. package/deps/couchbase-cxx-client/core/impl/internal_search_result.cxx +30 -22
  151. package/deps/couchbase-cxx-client/core/impl/internal_search_result.hxx +10 -9
  152. package/deps/couchbase-cxx-client/core/impl/internal_search_row.cxx +10 -10
  153. package/deps/couchbase-cxx-client/core/impl/internal_search_row.hxx +16 -16
  154. package/deps/couchbase-cxx-client/core/impl/internal_search_row_location.hxx +2 -2
  155. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.cxx +68 -65
  156. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.hxx +16 -13
  157. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.cxx +16 -14
  158. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.hxx +15 -15
  159. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +73 -72
  160. package/deps/couchbase-cxx-client/core/impl/key_value_error_context.cxx +65 -65
  161. package/deps/couchbase-cxx-client/core/impl/logger.cxx +91 -0
  162. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +32 -29
  163. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +33 -29
  164. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.cxx +75 -68
  165. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +30 -26
  166. package/deps/couchbase-cxx-client/core/impl/management_error_category.cxx +41 -40
  167. package/deps/couchbase-cxx-client/core/impl/match_all_query.cxx +6 -6
  168. package/deps/couchbase-cxx-client/core/impl/match_none_query.cxx +6 -6
  169. package/deps/couchbase-cxx-client/core/impl/match_phrase_query.cxx +13 -13
  170. package/deps/couchbase-cxx-client/core/impl/match_query.cxx +28 -28
  171. package/deps/couchbase-cxx-client/core/impl/network_error_category.cxx +39 -38
  172. package/deps/couchbase-cxx-client/core/impl/numeric_range.cxx +6 -6
  173. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet.cxx +22 -22
  174. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet_result.cxx +6 -6
  175. package/deps/couchbase-cxx-client/core/impl/numeric_range_query.cxx +22 -22
  176. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +294 -277
  177. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  178. package/deps/couchbase-cxx-client/core/impl/observe_seqno.cxx +21 -18
  179. package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +31 -26
  180. package/deps/couchbase-cxx-client/core/impl/phrase_query.cxx +10 -10
  181. package/deps/couchbase-cxx-client/core/impl/prefix_query.cxx +10 -10
  182. package/deps/couchbase-cxx-client/core/impl/query.cxx +163 -154
  183. package/deps/couchbase-cxx-client/core/impl/query.hxx +6 -7
  184. package/deps/couchbase-cxx-client/core/impl/query_error_category.cxx +22 -21
  185. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +45 -45
  186. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +488 -408
  187. package/deps/couchbase-cxx-client/core/impl/query_string_query.cxx +7 -7
  188. package/deps/couchbase-cxx-client/core/impl/regexp_query.cxx +10 -10
  189. package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +66 -0
  190. package/deps/couchbase-cxx-client/core/impl/replica_utils.hxx +48 -0
  191. package/deps/couchbase-cxx-client/core/impl/retry_action.cxx +3 -3
  192. package/deps/couchbase-cxx-client/core/impl/retry_reason.cxx +129 -56
  193. package/deps/couchbase-cxx-client/core/impl/retry_reason.hxx +28 -0
  194. package/deps/couchbase-cxx-client/core/impl/scan_result.cxx +53 -49
  195. package/deps/couchbase-cxx-client/core/impl/scope.cxx +103 -94
  196. package/deps/couchbase-cxx-client/core/impl/search.cxx +139 -130
  197. package/deps/couchbase-cxx-client/core/impl/search.hxx +4 -4
  198. package/deps/couchbase-cxx-client/core/impl/search_error_category.cxx +18 -17
  199. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +492 -390
  200. package/deps/couchbase-cxx-client/core/impl/search_meta_data.cxx +3 -3
  201. package/deps/couchbase-cxx-client/core/impl/search_request.cxx +78 -78
  202. package/deps/couchbase-cxx-client/core/impl/search_result.cxx +5 -5
  203. package/deps/couchbase-cxx-client/core/impl/search_row.cxx +7 -7
  204. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +9 -8
  205. package/deps/couchbase-cxx-client/core/impl/search_row_locations.cxx +8 -7
  206. package/deps/couchbase-cxx-client/core/impl/search_sort_field.cxx +53 -53
  207. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +49 -48
  208. package/deps/couchbase-cxx-client/core/impl/search_sort_id.cxx +10 -10
  209. package/deps/couchbase-cxx-client/core/impl/search_sort_score.cxx +10 -10
  210. package/deps/couchbase-cxx-client/core/impl/streaming_json_lexer_error_category.cxx +70 -68
  211. package/deps/couchbase-cxx-client/core/impl/subdoc/array_add_unique.cxx +6 -6
  212. package/deps/couchbase-cxx-client/core/impl/subdoc/array_append.cxx +6 -6
  213. package/deps/couchbase-cxx-client/core/impl/subdoc/array_insert.cxx +6 -6
  214. package/deps/couchbase-cxx-client/core/impl/subdoc/array_prepend.cxx +6 -6
  215. package/deps/couchbase-cxx-client/core/impl/subdoc/command.hxx +5 -5
  216. package/deps/couchbase-cxx-client/core/impl/subdoc/command_bundle.hxx +11 -11
  217. package/deps/couchbase-cxx-client/core/impl/subdoc/count.cxx +6 -6
  218. package/deps/couchbase-cxx-client/core/impl/subdoc/counter.cxx +6 -6
  219. package/deps/couchbase-cxx-client/core/impl/subdoc/exists.cxx +6 -6
  220. package/deps/couchbase-cxx-client/core/impl/subdoc/get.cxx +6 -6
  221. package/deps/couchbase-cxx-client/core/impl/subdoc/insert.cxx +6 -6
  222. package/deps/couchbase-cxx-client/core/impl/subdoc/join_values.cxx +25 -25
  223. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_macro.cxx +61 -60
  224. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_specs.cxx +9 -9
  225. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_macro.cxx +48 -39
  226. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_specs.cxx +9 -9
  227. package/deps/couchbase-cxx-client/core/impl/subdoc/opcode.hxx +16 -16
  228. package/deps/couchbase-cxx-client/core/impl/subdoc/path_flags.hxx +40 -17
  229. package/deps/couchbase-cxx-client/core/impl/subdoc/remove.cxx +6 -6
  230. package/deps/couchbase-cxx-client/core/impl/subdoc/replace.cxx +6 -6
  231. package/deps/couchbase-cxx-client/core/impl/subdoc/upsert.cxx +6 -6
  232. package/deps/couchbase-cxx-client/core/impl/term_facet.cxx +8 -8
  233. package/deps/couchbase-cxx-client/core/impl/term_facet_result.cxx +6 -6
  234. package/deps/couchbase-cxx-client/core/impl/term_query.cxx +25 -25
  235. package/deps/couchbase-cxx-client/core/impl/term_range_query.cxx +22 -22
  236. package/deps/couchbase-cxx-client/core/impl/transaction_error_category.cxx +21 -20
  237. package/deps/couchbase-cxx-client/core/impl/transaction_get_result.cxx +41 -30
  238. package/deps/couchbase-cxx-client/core/impl/transaction_op_error_category.cxx +55 -56
  239. package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +15 -10
  240. package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +9 -9
  241. package/deps/couchbase-cxx-client/core/impl/view_error_category.cxx +17 -16
  242. package/deps/couchbase-cxx-client/core/impl/wildcard_query.cxx +10 -10
  243. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +30 -29
  244. package/deps/couchbase-cxx-client/core/io/dns_client.cxx +257 -232
  245. package/deps/couchbase-cxx-client/core/io/dns_client.hxx +19 -18
  246. package/deps/couchbase-cxx-client/core/io/dns_codec.hxx +156 -154
  247. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +114 -109
  248. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +15 -13
  249. package/deps/couchbase-cxx-client/core/io/dns_message.hxx +365 -342
  250. package/deps/couchbase-cxx-client/core/io/http_command.hxx +155 -134
  251. package/deps/couchbase-cxx-client/core/io/http_context.hxx +5 -5
  252. package/deps/couchbase-cxx-client/core/io/http_message.hxx +75 -71
  253. package/deps/couchbase-cxx-client/core/io/http_parser.cxx +70 -67
  254. package/deps/couchbase-cxx-client/core/io/http_parser.hxx +18 -18
  255. package/deps/couchbase-cxx-client/core/io/http_session.hxx +620 -520
  256. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +406 -315
  257. package/deps/couchbase-cxx-client/core/io/http_traits.hxx +7 -0
  258. package/deps/couchbase-cxx-client/core/io/ip_protocol.hxx +3 -3
  259. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +298 -278
  260. package/deps/couchbase-cxx-client/core/io/mcbp_context.hxx +7 -6
  261. package/deps/couchbase-cxx-client/core/io/mcbp_message.cxx +8 -8
  262. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +19 -19
  263. package/deps/couchbase-cxx-client/core/io/mcbp_parser.cxx +60 -51
  264. package/deps/couchbase-cxx-client/core/io/mcbp_parser.hxx +21 -17
  265. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +1769 -1616
  266. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +63 -57
  267. package/deps/couchbase-cxx-client/core/io/query_cache.hxx +34 -34
  268. package/deps/couchbase-cxx-client/core/io/retry_context.hxx +45 -45
  269. package/deps/couchbase-cxx-client/core/io/retry_orchestrator.hxx +52 -42
  270. package/deps/couchbase-cxx-client/core/io/streams.hxx +210 -193
  271. package/deps/couchbase-cxx-client/core/json_string.hxx +47 -47
  272. package/deps/couchbase-cxx-client/core/key_value_config.cxx +8 -8
  273. package/deps/couchbase-cxx-client/core/key_value_config.hxx +12 -11
  274. package/deps/couchbase-cxx-client/core/logger/configuration.hxx +35 -35
  275. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.cxx +73 -72
  276. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.hxx +20 -18
  277. package/deps/couchbase-cxx-client/core/logger/level.hxx +9 -1
  278. package/deps/couchbase-cxx-client/core/logger/logger.cxx +279 -252
  279. package/deps/couchbase-cxx-client/core/logger/logger.hxx +110 -58
  280. package/deps/couchbase-cxx-client/core/management/analytics_dataset.hxx +4 -4
  281. package/deps/couchbase-cxx-client/core/management/analytics_index.hxx +4 -4
  282. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.cxx +35 -33
  283. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.hxx +36 -35
  284. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external_json.hxx +24 -20
  285. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.cxx +66 -65
  286. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.hxx +77 -70
  287. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote_json.hxx +38 -32
  288. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.cxx +26 -25
  289. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.hxx +30 -30
  290. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external_json.hxx +18 -16
  291. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +109 -91
  292. package/deps/couchbase-cxx-client/core/management/bucket_settings_json.hxx +112 -94
  293. package/deps/couchbase-cxx-client/core/management/design_document.hxx +9 -9
  294. package/deps/couchbase-cxx-client/core/management/eventing_function.hxx +124 -121
  295. package/deps/couchbase-cxx-client/core/management/eventing_function_json.hxx +228 -184
  296. package/deps/couchbase-cxx-client/core/management/eventing_status.hxx +41 -41
  297. package/deps/couchbase-cxx-client/core/management/eventing_status_json.hxx +53 -45
  298. package/deps/couchbase-cxx-client/core/management/rbac.hxx +33 -28
  299. package/deps/couchbase-cxx-client/core/management/rbac_fmt.hxx +21 -21
  300. package/deps/couchbase-cxx-client/core/management/rbac_json.hxx +132 -125
  301. package/deps/couchbase-cxx-client/core/management/search_index.cxx +79 -0
  302. package/deps/couchbase-cxx-client/core/management/search_index.hxx +11 -10
  303. package/deps/couchbase-cxx-client/core/management/search_index_json.hxx +27 -26
  304. package/deps/couchbase-cxx-client/core/mcbp/barrier_frame.hxx +4 -3
  305. package/deps/couchbase-cxx-client/core/mcbp/big_endian.cxx +22 -22
  306. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.cxx +22 -19
  307. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.hxx +9 -9
  308. package/deps/couchbase-cxx-client/core/mcbp/codec.cxx +419 -397
  309. package/deps/couchbase-cxx-client/core/mcbp/codec.hxx +14 -12
  310. package/deps/couchbase-cxx-client/core/mcbp/command_code.cxx +48 -48
  311. package/deps/couchbase-cxx-client/core/mcbp/completion_token.hxx +33 -33
  312. package/deps/couchbase-cxx-client/core/mcbp/datatype.hxx +3 -3
  313. package/deps/couchbase-cxx-client/core/mcbp/durability_level.hxx +8 -7
  314. package/deps/couchbase-cxx-client/core/mcbp/durability_level_frame.hxx +3 -2
  315. package/deps/couchbase-cxx-client/core/mcbp/durability_timeout_frame.hxx +4 -3
  316. package/deps/couchbase-cxx-client/core/mcbp/open_tracing_frame.hxx +3 -2
  317. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.cxx +3 -3
  318. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.hxx +9 -9
  319. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx +76 -70
  320. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.hxx +18 -17
  321. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +65 -51
  322. package/deps/couchbase-cxx-client/core/mcbp/packet.hxx +25 -25
  323. package/deps/couchbase-cxx-client/core/mcbp/preserve_expiry_frame.hxx +4 -2
  324. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +3 -2
  325. package/deps/couchbase-cxx-client/core/mcbp/queue_request.cxx +65 -62
  326. package/deps/couchbase-cxx-client/core/mcbp/queue_request.hxx +54 -52
  327. package/deps/couchbase-cxx-client/core/mcbp/queue_request_connection_info.hxx +3 -3
  328. package/deps/couchbase-cxx-client/core/mcbp/queue_response.hxx +7 -7
  329. package/deps/couchbase-cxx-client/core/mcbp/read_units_frame.hxx +3 -2
  330. package/deps/couchbase-cxx-client/core/mcbp/server_duration.cxx +7 -7
  331. package/deps/couchbase-cxx-client/core/mcbp/server_duration_frame.hxx +3 -2
  332. package/deps/couchbase-cxx-client/core/mcbp/stream_id_frame.hxx +3 -2
  333. package/deps/couchbase-cxx-client/core/mcbp/unsupported_frame.hxx +4 -3
  334. package/deps/couchbase-cxx-client/core/mcbp/user_impersonation_frame.hxx +1 -1
  335. package/deps/couchbase-cxx-client/core/mcbp/write_units_frame.hxx +3 -2
  336. package/deps/couchbase-cxx-client/core/meta/features.hxx +58 -0
  337. package/deps/couchbase-cxx-client/core/meta/version.cxx +255 -204
  338. package/deps/couchbase-cxx-client/core/meta/version.hxx +31 -20
  339. package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +160 -154
  340. package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +16 -15
  341. package/deps/couchbase-cxx-client/core/metrics/logging_meter_options.hxx +1 -1
  342. package/deps/couchbase-cxx-client/core/metrics/noop_meter.hxx +14 -13
  343. package/deps/couchbase-cxx-client/core/mozilla_ca_bundle.hxx +2 -2
  344. package/deps/couchbase-cxx-client/core/n1ql_query_options.cxx +31 -31
  345. package/deps/couchbase-cxx-client/core/n1ql_query_options.hxx +22 -21
  346. package/deps/couchbase-cxx-client/core/operation_map.hxx +3 -3
  347. package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +187 -176
  348. package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +79 -71
  349. package/deps/couchbase-cxx-client/core/operations/document_append.cxx +18 -15
  350. package/deps/couchbase-cxx-client/core/operations/document_append.hxx +18 -16
  351. package/deps/couchbase-cxx-client/core/operations/document_decrement.cxx +26 -23
  352. package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +24 -20
  353. package/deps/couchbase-cxx-client/core/operations/document_exists.cxx +23 -21
  354. package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +25 -23
  355. package/deps/couchbase-cxx-client/core/operations/document_get.cxx +17 -15
  356. package/deps/couchbase-cxx-client/core/operations/document_get.hxx +17 -15
  357. package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +121 -92
  358. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.cxx +19 -16
  359. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +21 -17
  360. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.cxx +19 -16
  361. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +22 -18
  362. package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +111 -82
  363. package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +193 -184
  364. package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +25 -21
  365. package/deps/couchbase-cxx-client/core/operations/document_increment.cxx +26 -23
  366. package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +24 -20
  367. package/deps/couchbase-cxx-client/core/operations/document_insert.cxx +23 -20
  368. package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +20 -18
  369. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.cxx +80 -67
  370. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +31 -27
  371. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +187 -149
  372. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +190 -145
  373. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.cxx +98 -80
  374. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +38 -33
  375. package/deps/couchbase-cxx-client/core/operations/document_prepend.cxx +18 -15
  376. package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +18 -16
  377. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +367 -356
  378. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +83 -79
  379. package/deps/couchbase-cxx-client/core/operations/document_remove.cxx +18 -15
  380. package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +18 -16
  381. package/deps/couchbase-cxx-client/core/operations/document_replace.cxx +27 -24
  382. package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +22 -20
  383. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +322 -308
  384. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +125 -121
  385. package/deps/couchbase-cxx-client/core/operations/document_touch.cxx +16 -14
  386. package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +19 -17
  387. package/deps/couchbase-cxx-client/core/operations/document_unlock.cxx +16 -14
  388. package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +19 -17
  389. package/deps/couchbase-cxx-client/core/operations/document_upsert.cxx +26 -23
  390. package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +21 -19
  391. package/deps/couchbase-cxx-client/core/operations/document_view.cxx +169 -159
  392. package/deps/couchbase-cxx-client/core/operations/document_view.hxx +68 -65
  393. package/deps/couchbase-cxx-client/core/operations/http_noop.cxx +38 -35
  394. package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +12 -10
  395. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +58 -56
  396. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +20 -17
  397. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +49 -44
  398. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +18 -15
  399. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.cxx +46 -43
  400. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +16 -13
  401. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +48 -43
  402. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +17 -14
  403. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +48 -43
  404. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +17 -14
  405. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +38 -35
  406. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +16 -14
  407. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.cxx +68 -66
  408. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +20 -17
  409. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +56 -51
  410. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +19 -16
  411. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.cxx +44 -42
  412. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +16 -13
  413. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +49 -43
  414. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +23 -20
  415. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.cxx +52 -51
  416. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +33 -30
  417. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +46 -42
  418. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +22 -19
  419. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +70 -67
  420. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +22 -19
  421. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +92 -85
  422. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +27 -24
  423. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.cxx +52 -51
  424. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +33 -30
  425. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_utils.hxx +6 -4
  426. package/deps/couchbase-cxx-client/core/operations/management/analytics_problem.hxx +2 -2
  427. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +158 -149
  428. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +14 -12
  429. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +118 -42
  430. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +47 -22
  431. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +19 -18
  432. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +13 -11
  433. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +25 -24
  434. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +13 -11
  435. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +24 -22
  436. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +14 -12
  437. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.cxx +25 -23
  438. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +13 -11
  439. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +112 -107
  440. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +15 -13
  441. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +22 -20
  442. package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +13 -11
  443. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.cxx +52 -50
  444. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +31 -29
  445. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.cxx +14 -12
  446. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +13 -11
  447. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +48 -46
  448. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +19 -16
  449. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +37 -35
  450. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +16 -14
  451. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +49 -47
  452. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +19 -16
  453. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.cxx +11 -9
  454. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +17 -13
  455. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +210 -198
  456. package/deps/couchbase-cxx-client/core/operations/management/error_utils.hxx +3 -1
  457. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +30 -28
  458. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +17 -14
  459. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +31 -29
  460. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +17 -14
  461. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.cxx +49 -43
  462. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +17 -14
  463. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +29 -27
  464. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +18 -15
  465. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.cxx +45 -39
  466. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +17 -14
  467. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +30 -28
  468. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +17 -14
  469. package/deps/couchbase-cxx-client/core/operations/management/eventing_problem.hxx +3 -3
  470. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +30 -28
  471. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +17 -14
  472. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +30 -28
  473. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +17 -14
  474. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +328 -318
  475. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +17 -14
  476. package/deps/couchbase-cxx-client/core/operations/management/freeform.cxx +23 -22
  477. package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +19 -17
  478. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +18 -17
  479. package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +13 -11
  480. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +25 -23
  481. package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +14 -12
  482. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +23 -22
  483. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +13 -11
  484. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.cxx +58 -55
  485. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +14 -12
  486. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +53 -48
  487. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +25 -22
  488. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +75 -67
  489. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +128 -122
  490. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +31 -28
  491. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +95 -93
  492. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +26 -24
  493. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +97 -93
  494. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +24 -21
  495. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +66 -62
  496. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +24 -22
  497. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.cxx +24 -22
  498. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +13 -11
  499. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +38 -36
  500. package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +15 -13
  501. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +33 -32
  502. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +15 -13
  503. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +27 -25
  504. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +14 -12
  505. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +12 -10
  506. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +13 -11
  507. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +72 -67
  508. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +20 -18
  509. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +62 -59
  510. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +19 -16
  511. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +62 -59
  512. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +19 -17
  513. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +62 -59
  514. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +19 -16
  515. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +58 -55
  516. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +18 -15
  517. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +59 -56
  518. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +18 -16
  519. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +51 -46
  520. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +18 -15
  521. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +66 -61
  522. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +19 -17
  523. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +38 -36
  524. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +17 -14
  525. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +98 -95
  526. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +20 -17
  527. package/deps/couchbase-cxx-client/core/operations/management/user_drop.cxx +18 -17
  528. package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +16 -12
  529. package/deps/couchbase-cxx-client/core/operations/management/user_get.cxx +25 -23
  530. package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +17 -13
  531. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.cxx +24 -22
  532. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +16 -12
  533. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.cxx +63 -60
  534. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +17 -13
  535. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +16 -12
  536. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +15 -13
  537. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +40 -35
  538. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +16 -14
  539. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +73 -69
  540. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +16 -13
  541. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +39 -35
  542. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +15 -12
  543. package/deps/couchbase-cxx-client/core/origin.cxx +259 -249
  544. package/deps/couchbase-cxx-client/core/origin.hxx +55 -49
  545. package/deps/couchbase-cxx-client/core/pending_operation.hxx +3 -3
  546. package/deps/couchbase-cxx-client/core/ping_collector.hxx +3 -3
  547. package/deps/couchbase-cxx-client/core/ping_options.hxx +30 -30
  548. package/deps/couchbase-cxx-client/core/ping_reporter.hxx +3 -3
  549. package/deps/couchbase-cxx-client/core/platform/backtrace.c +100 -91
  550. package/deps/couchbase-cxx-client/core/platform/base64.cc +135 -134
  551. package/deps/couchbase-cxx-client/core/platform/dirutils.cc +66 -63
  552. package/deps/couchbase-cxx-client/core/platform/random.cc +43 -42
  553. package/deps/couchbase-cxx-client/core/platform/random.h +4 -4
  554. package/deps/couchbase-cxx-client/core/platform/string_hex.cc +42 -40
  555. package/deps/couchbase-cxx-client/core/platform/terminate_handler.cc +54 -52
  556. package/deps/couchbase-cxx-client/core/platform/uuid.cc +47 -47
  557. package/deps/couchbase-cxx-client/core/protocol/client_opcode.hxx +336 -327
  558. package/deps/couchbase-cxx-client/core/protocol/client_opcode_fmt.hxx +291 -291
  559. package/deps/couchbase-cxx-client/core/protocol/client_request.cxx +13 -10
  560. package/deps/couchbase-cxx-client/core/protocol/client_request.hxx +133 -130
  561. package/deps/couchbase-cxx-client/core/protocol/client_response.cxx +40 -40
  562. package/deps/couchbase-cxx-client/core/protocol/client_response.hxx +153 -150
  563. package/deps/couchbase-cxx-client/core/protocol/cmd_append.cxx +24 -23
  564. package/deps/couchbase-cxx-client/core/protocol/cmd_append.hxx +65 -65
  565. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.cxx +25 -21
  566. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +33 -25
  567. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.cxx +38 -38
  568. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.hxx +87 -87
  569. package/deps/couchbase-cxx-client/core/protocol/cmd_get.cxx +17 -17
  570. package/deps/couchbase-cxx-client/core/protocol/cmd_get.hxx +59 -59
  571. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.cxx +20 -20
  572. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.hxx +72 -72
  573. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.cxx +20 -20
  574. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.hxx +72 -72
  575. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.cxx +46 -39
  576. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.hxx +57 -49
  577. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.cxx +17 -17
  578. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.hxx +59 -59
  579. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.cxx +16 -14
  580. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.hxx +39 -39
  581. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.cxx +18 -17
  582. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.hxx +62 -62
  583. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.cxx +24 -23
  584. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.hxx +81 -79
  585. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.cxx +23 -23
  586. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.hxx +44 -44
  587. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.cxx +28 -27
  588. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +106 -105
  589. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.cxx +38 -38
  590. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.hxx +87 -87
  591. package/deps/couchbase-cxx-client/core/protocol/cmd_info.hxx +3 -3
  592. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.cxx +27 -27
  593. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.hxx +81 -81
  594. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.cxx +54 -51
  595. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.hxx +90 -90
  596. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.cxx +54 -51
  597. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.hxx +88 -88
  598. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.cxx +105 -97
  599. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.hxx +161 -153
  600. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.cxx +4 -4
  601. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.hxx +32 -32
  602. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.cxx +36 -34
  603. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +89 -89
  604. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.cxx +22 -22
  605. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.hxx +63 -63
  606. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.cxx +23 -23
  607. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.hxx +54 -54
  608. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.cxx +28 -28
  609. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.hxx +88 -88
  610. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.cxx +17 -15
  611. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.hxx +56 -56
  612. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.cxx +24 -19
  613. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.hxx +39 -39
  614. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.cxx +17 -15
  615. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.hxx +56 -56
  616. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.cxx +6 -6
  617. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.hxx +36 -36
  618. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.cxx +8 -8
  619. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.hxx +38 -38
  620. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.cxx +5 -5
  621. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.hxx +36 -36
  622. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.cxx +28 -28
  623. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.hxx +83 -83
  624. package/deps/couchbase-cxx-client/core/protocol/datatype.hxx +19 -18
  625. package/deps/couchbase-cxx-client/core/protocol/frame_info_id.hxx +108 -103
  626. package/deps/couchbase-cxx-client/core/protocol/frame_info_id_fmt.hxx +45 -45
  627. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.cxx +24 -21
  628. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.hxx +3 -1
  629. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +211 -175
  630. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +93 -90
  631. package/deps/couchbase-cxx-client/core/protocol/magic.hxx +24 -24
  632. package/deps/couchbase-cxx-client/core/protocol/magic_fmt.hxx +30 -30
  633. package/deps/couchbase-cxx-client/core/protocol/server_opcode.hxx +11 -11
  634. package/deps/couchbase-cxx-client/core/protocol/server_opcode_fmt.hxx +18 -18
  635. package/deps/couchbase-cxx-client/core/protocol/server_request.hxx +90 -86
  636. package/deps/couchbase-cxx-client/core/protocol/status.cxx +138 -138
  637. package/deps/couchbase-cxx-client/core/protocol/status.hxx +86 -86
  638. package/deps/couchbase-cxx-client/core/query_context.hxx +44 -43
  639. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.cxx +51 -50
  640. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.hxx +26 -25
  641. package/deps/couchbase-cxx-client/core/range_scan_options.cxx +2 -2
  642. package/deps/couchbase-cxx-client/core/range_scan_options.hxx +62 -59
  643. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +515 -470
  644. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.hxx +23 -18
  645. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +10 -10
  646. package/deps/couchbase-cxx-client/core/resource_units.hxx +2 -2
  647. package/deps/couchbase-cxx-client/core/response_handler.hxx +8 -8
  648. package/deps/couchbase-cxx-client/core/retry_orchestrator.cxx +27 -19
  649. package/deps/couchbase-cxx-client/core/retry_orchestrator.hxx +3 -2
  650. package/deps/couchbase-cxx-client/core/sasl/client.cc +22 -18
  651. package/deps/couchbase-cxx-client/core/sasl/client.h +66 -62
  652. package/deps/couchbase-cxx-client/core/sasl/context.cc +4 -4
  653. package/deps/couchbase-cxx-client/core/sasl/context.h +19 -19
  654. package/deps/couchbase-cxx-client/core/sasl/error.h +12 -1
  655. package/deps/couchbase-cxx-client/core/sasl/error_fmt.h +42 -42
  656. package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +13 -10
  657. package/deps/couchbase-cxx-client/core/sasl/mechanism.h +8 -3
  658. package/deps/couchbase-cxx-client/core/sasl/plain/plain.cc +8 -8
  659. package/deps/couchbase-cxx-client/core/sasl/plain/plain.h +25 -24
  660. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.cc +225 -218
  661. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.h +133 -115
  662. package/deps/couchbase-cxx-client/core/sasl/scram-sha/stringutils.cc +20 -20
  663. package/deps/couchbase-cxx-client/core/scan_result.cxx +38 -38
  664. package/deps/couchbase-cxx-client/core/scan_result.hxx +16 -16
  665. package/deps/couchbase-cxx-client/core/search_highlight_style.hxx +4 -1
  666. package/deps/couchbase-cxx-client/core/search_query_options.cxx +21 -21
  667. package/deps/couchbase-cxx-client/core/search_query_options.hxx +19 -18
  668. package/deps/couchbase-cxx-client/core/search_scan_consistency.hxx +3 -1
  669. package/deps/couchbase-cxx-client/core/seed_config.cxx +10 -7
  670. package/deps/couchbase-cxx-client/core/seed_config.hxx +8 -8
  671. package/deps/couchbase-cxx-client/core/service_type.hxx +7 -7
  672. package/deps/couchbase-cxx-client/core/service_type_fmt.hxx +33 -33
  673. package/deps/couchbase-cxx-client/core/stats_options.hxx +13 -13
  674. package/deps/couchbase-cxx-client/core/subdoc_options.hxx +60 -58
  675. package/deps/couchbase-cxx-client/core/tls_verify_mode.hxx +2 -2
  676. package/deps/couchbase-cxx-client/core/topology/capabilities.hxx +83 -83
  677. package/deps/couchbase-cxx-client/core/topology/capabilities_fmt.hxx +111 -111
  678. package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +14 -14
  679. package/deps/couchbase-cxx-client/core/topology/collections_manifest_fmt.hxx +23 -21
  680. package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +26 -25
  681. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +213 -192
  682. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +104 -91
  683. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +131 -128
  684. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +276 -242
  685. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +5 -5
  686. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +65 -60
  687. package/deps/couchbase-cxx-client/core/tracing/constants.hxx +153 -153
  688. package/deps/couchbase-cxx-client/core/tracing/noop_tracer.hxx +29 -28
  689. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +30 -30
  690. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +354 -344
  691. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +12 -12
  692. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +153 -33
  693. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +30 -118
  694. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +8 -2
  695. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +163 -127
  696. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +358 -334
  697. package/deps/couchbase-cxx-client/core/transactions/atr_ids.cxx +270 -185
  698. package/deps/couchbase-cxx-client/core/transactions/atr_ids.hxx +4 -4
  699. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +9 -5
  700. package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +194 -154
  701. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +3278 -2159
  702. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +446 -573
  703. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.cxx +15 -10
  704. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.hxx +58 -49
  705. package/deps/couchbase-cxx-client/core/transactions/attempt_state.hxx +72 -72
  706. package/deps/couchbase-cxx-client/core/transactions/binary.cxx +3 -3
  707. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.cxx +2 -2
  708. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.hxx +28 -24
  709. package/deps/couchbase-cxx-client/core/transactions/document_metadata.hxx +68 -68
  710. package/deps/couchbase-cxx-client/core/transactions/durability_level.hxx +53 -53
  711. package/deps/couchbase-cxx-client/core/transactions/error_class.hxx +12 -12
  712. package/deps/couchbase-cxx-client/core/transactions/error_list.hxx +22 -22
  713. package/deps/couchbase-cxx-client/core/transactions/exceptions.cxx +167 -114
  714. package/deps/couchbase-cxx-client/core/transactions/exceptions.hxx +170 -139
  715. package/deps/couchbase-cxx-client/core/transactions/exceptions_fmt.hxx +105 -0
  716. package/deps/couchbase-cxx-client/core/transactions/forward_compat.cxx +220 -0
  717. package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +63 -207
  718. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +110 -102
  719. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +144 -144
  720. package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +53 -50
  721. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +5 -5
  722. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +38 -35
  723. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +17 -16
  724. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +238 -281
  725. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal_fmt.hxx +103 -0
  726. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +52 -29
  727. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_attempt.hxx +3 -3
  728. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +136 -120
  729. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_fields.hxx +2 -1
  730. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +127 -122
  731. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +244 -219
  732. package/deps/couchbase-cxx-client/core/transactions/result.cxx +41 -40
  733. package/deps/couchbase-cxx-client/core/transactions/result.hxx +143 -141
  734. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +21 -20
  735. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +759 -627
  736. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +175 -156
  737. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +231 -179
  738. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.cxx +185 -198
  739. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +207 -222
  740. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +15 -11
  741. package/deps/couchbase-cxx-client/core/transactions/transaction_links.cxx +11 -7
  742. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +222 -201
  743. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +44 -41
  744. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +167 -125
  745. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +491 -424
  746. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +25 -19
  747. package/deps/couchbase-cxx-client/core/transactions/uid_generator.cxx +3 -3
  748. package/deps/couchbase-cxx-client/core/transactions/uid_generator.hxx +2 -2
  749. package/deps/couchbase-cxx-client/core/transactions/utils.cxx +82 -69
  750. package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +154 -140
  751. package/deps/couchbase-cxx-client/core/transactions.hxx +184 -180
  752. package/deps/couchbase-cxx-client/core/utils/binary.cxx +3 -3
  753. package/deps/couchbase-cxx-client/core/utils/binary.hxx +19 -15
  754. package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +17 -17
  755. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +395 -328
  756. package/deps/couchbase-cxx-client/core/utils/connection_string.hxx +37 -36
  757. package/deps/couchbase-cxx-client/core/utils/crc32.hxx +42 -34
  758. package/deps/couchbase-cxx-client/core/utils/duration_parser.cxx +142 -133
  759. package/deps/couchbase-cxx-client/core/utils/duration_parser.hxx +9 -9
  760. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +24 -24
  761. package/deps/couchbase-cxx-client/core/utils/json.cxx +234 -228
  762. package/deps/couchbase-cxx-client/core/utils/json.hxx +12 -12
  763. package/deps/couchbase-cxx-client/core/utils/json_stream_control.hxx +8 -8
  764. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.cxx +288 -263
  765. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.hxx +20 -17
  766. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +22 -21
  767. package/deps/couchbase-cxx-client/core/utils/movable_function.hxx +78 -76
  768. package/deps/couchbase-cxx-client/core/utils/mutation_token.cxx +7 -3
  769. package/deps/couchbase-cxx-client/core/utils/mutation_token.hxx +3 -1
  770. package/deps/couchbase-cxx-client/core/utils/name_codec.hxx +13 -13
  771. package/deps/couchbase-cxx-client/core/utils/split_string.cxx +9 -9
  772. package/deps/couchbase-cxx-client/core/utils/split_string.hxx +2 -2
  773. package/deps/couchbase-cxx-client/core/utils/unsigned_leb128.hxx +92 -88
  774. package/deps/couchbase-cxx-client/core/utils/url_codec.cxx +301 -297
  775. package/deps/couchbase-cxx-client/core/utils/url_codec.hxx +35 -35
  776. package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +4 -1
  777. package/deps/couchbase-cxx-client/core/view_on_error.hxx +4 -3
  778. package/deps/couchbase-cxx-client/core/view_query_options.cxx +21 -21
  779. package/deps/couchbase-cxx-client/core/view_query_options.hxx +23 -22
  780. package/deps/couchbase-cxx-client/core/view_scan_consistency.hxx +3 -3
  781. package/deps/couchbase-cxx-client/core/view_sort_order.hxx +4 -1
  782. package/deps/couchbase-cxx-client/core/wait_until_ready_options.hxx +11 -10
  783. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +11 -11
  784. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +423 -405
  785. package/deps/couchbase-cxx-client/couchbase/analytics_meta_data.hxx +105 -105
  786. package/deps/couchbase-cxx-client/couchbase/analytics_metrics.hxx +120 -118
  787. package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +318 -292
  788. package/deps/couchbase-cxx-client/couchbase/analytics_result.hxx +56 -55
  789. package/deps/couchbase-cxx-client/couchbase/analytics_scan_consistency.hxx +24 -21
  790. package/deps/couchbase-cxx-client/couchbase/analytics_status.hxx +10 -10
  791. package/deps/couchbase-cxx-client/couchbase/analytics_warning.hxx +44 -43
  792. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +9 -9
  793. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +51 -47
  794. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +75 -69
  795. package/deps/couchbase-cxx-client/couchbase/best_effort_retry_strategy.hxx +12 -10
  796. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +213 -183
  797. package/deps/couchbase-cxx-client/couchbase/boolean_field_query.hxx +38 -38
  798. package/deps/couchbase-cxx-client/couchbase/boolean_query.hxx +166 -157
  799. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +69 -68
  800. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +97 -88
  801. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +22 -21
  802. package/deps/couchbase-cxx-client/couchbase/cas.hxx +74 -73
  803. package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +10 -10
  804. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +266 -310
  805. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +235 -241
  806. package/deps/couchbase-cxx-client/couchbase/codec/binary_noop_serializer.hxx +11 -11
  807. package/deps/couchbase-cxx-client/couchbase/codec/codec_flags.hxx +39 -35
  808. package/deps/couchbase-cxx-client/couchbase/codec/encoded_value.hxx +15 -2
  809. package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +17 -15
  810. package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +19 -17
  811. package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +31 -24
  812. package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +20 -18
  813. package/deps/couchbase-cxx-client/couchbase/codec/tao_json_serializer.hxx +38 -30
  814. package/deps/couchbase-cxx-client/couchbase/collection.hxx +1007 -902
  815. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +115 -107
  816. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +200 -188
  817. package/deps/couchbase-cxx-client/couchbase/common_durability_options.hxx +68 -62
  818. package/deps/couchbase-cxx-client/couchbase/common_options.hxx +67 -67
  819. package/deps/couchbase-cxx-client/couchbase/compression_options.hxx +33 -33
  820. package/deps/couchbase-cxx-client/couchbase/configuration_profile.hxx +12 -11
  821. package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +24 -22
  822. package/deps/couchbase-cxx-client/couchbase/conjunction_query.hxx +47 -45
  823. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +74 -72
  824. package/deps/couchbase-cxx-client/couchbase/counter_result.hxx +32 -32
  825. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +9 -10
  826. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +35 -34
  827. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +76 -76
  828. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +44 -44
  829. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +60 -60
  830. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +25 -25
  831. package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +95 -94
  832. package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +97 -96
  833. package/deps/couchbase-cxx-client/couchbase/create_scope_options.hxx +9 -9
  834. package/deps/couchbase-cxx-client/couchbase/date_range.hxx +29 -27
  835. package/deps/couchbase-cxx-client/couchbase/date_range_facet.hxx +20 -20
  836. package/deps/couchbase-cxx-client/couchbase/date_range_facet_result.hxx +14 -14
  837. package/deps/couchbase-cxx-client/couchbase/date_range_query.hxx +219 -205
  838. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +93 -91
  839. package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +42 -41
  840. package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +82 -83
  841. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +11 -10
  842. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +62 -62
  843. package/deps/couchbase-cxx-client/couchbase/disjunction_query.hxx +61 -60
  844. package/deps/couchbase-cxx-client/couchbase/dns_options.hxx +30 -30
  845. package/deps/couchbase-cxx-client/couchbase/doc_id_query.hxx +69 -69
  846. package/deps/couchbase-cxx-client/couchbase/drop_bucket_options.hxx +9 -9
  847. package/deps/couchbase-cxx-client/couchbase/drop_collection_options.hxx +9 -9
  848. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +60 -60
  849. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +44 -44
  850. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +60 -60
  851. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +25 -25
  852. package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +58 -58
  853. package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +44 -44
  854. package/deps/couchbase-cxx-client/couchbase/drop_scope_options.hxx +9 -9
  855. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +9 -9
  856. package/deps/couchbase-cxx-client/couchbase/durability_level.hxx +32 -29
  857. package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +171 -171
  858. package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +166 -169
  859. package/deps/couchbase-cxx-client/couchbase/error.hxx +51 -0
  860. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +975 -940
  861. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +19 -152
  862. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +25 -24
  863. package/deps/couchbase-cxx-client/couchbase/exists_result.hxx +32 -32
  864. package/deps/couchbase-cxx-client/couchbase/fail_fast_retry_strategy.hxx +4 -4
  865. package/deps/couchbase-cxx-client/couchbase/flush_bucket_options.hxx +9 -9
  866. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_scan_consistency.hxx +18 -18
  867. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_status.hxx +42 -42
  868. package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +10 -10
  869. package/deps/couchbase-cxx-client/couchbase/fmt/durability_level.hxx +24 -24
  870. package/deps/couchbase-cxx-client/couchbase/fmt/error.hxx +53 -0
  871. package/deps/couchbase-cxx-client/couchbase/fmt/error_context.hxx +43 -0
  872. package/deps/couchbase-cxx-client/couchbase/fmt/mutation_token.hxx +15 -11
  873. package/deps/couchbase-cxx-client/couchbase/fmt/query_profile.hxx +21 -21
  874. package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +18 -18
  875. package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +42 -42
  876. package/deps/couchbase-cxx-client/couchbase/fmt/retry_reason.hxx +75 -75
  877. package/deps/couchbase-cxx-client/couchbase/fmt/search_scan_consistency.hxx +15 -15
  878. package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +18 -18
  879. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +15 -11
  880. package/deps/couchbase-cxx-client/couchbase/fork_event.hxx +12 -12
  881. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +9 -9
  882. package/deps/couchbase-cxx-client/couchbase/geo_bounding_box_query.hxx +71 -64
  883. package/deps/couchbase-cxx-client/couchbase/geo_distance_query.hxx +73 -66
  884. package/deps/couchbase-cxx-client/couchbase/geo_point.hxx +2 -2
  885. package/deps/couchbase-cxx-client/couchbase/geo_polygon_query.hxx +40 -39
  886. package/deps/couchbase-cxx-client/couchbase/get_all_buckets_options.hxx +9 -9
  887. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +25 -25
  888. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +26 -25
  889. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +27 -25
  890. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +49 -26
  891. package/deps/couchbase-cxx-client/couchbase/get_all_scopes_options.hxx +9 -9
  892. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +9 -9
  893. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +25 -24
  894. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +25 -24
  895. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +49 -26
  896. package/deps/couchbase-cxx-client/couchbase/get_bucket_options.hxx +9 -9
  897. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +9 -9
  898. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +74 -74
  899. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +63 -60
  900. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +30 -28
  901. package/deps/couchbase-cxx-client/couchbase/get_replica_result.hxx +79 -75
  902. package/deps/couchbase-cxx-client/couchbase/get_result.hxx +86 -80
  903. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +9 -9
  904. package/deps/couchbase-cxx-client/couchbase/highlight_style.hxx +14 -14
  905. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +94 -91
  906. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +62 -59
  907. package/deps/couchbase-cxx-client/couchbase/ip_protocol.hxx +3 -3
  908. package/deps/couchbase-cxx-client/couchbase/logger.hxx +51 -0
  909. package/deps/couchbase-cxx-client/couchbase/lookup_in_all_replicas_options.hxx +54 -43
  910. package/deps/couchbase-cxx-client/couchbase/lookup_in_any_replica_options.hxx +54 -44
  911. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +40 -40
  912. package/deps/couchbase-cxx-client/couchbase/lookup_in_replica_result.hxx +38 -35
  913. package/deps/couchbase-cxx-client/couchbase/lookup_in_result.hxx +222 -216
  914. package/deps/couchbase-cxx-client/couchbase/lookup_in_specs.hxx +101 -101
  915. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +16 -16
  916. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +16 -16
  917. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +193 -189
  918. package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +91 -75
  919. package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +4 -4
  920. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +10 -10
  921. package/deps/couchbase-cxx-client/couchbase/management/scope_spec.hxx +2 -2
  922. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +9 -9
  923. package/deps/couchbase-cxx-client/couchbase/match_all_query.hxx +10 -9
  924. package/deps/couchbase-cxx-client/couchbase/match_none_query.hxx +10 -9
  925. package/deps/couchbase-cxx-client/couchbase/match_operator.hxx +15 -14
  926. package/deps/couchbase-cxx-client/couchbase/match_phrase_query.hxx +70 -65
  927. package/deps/couchbase-cxx-client/couchbase/match_query.hxx +115 -114
  928. package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +33 -30
  929. package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +86 -74
  930. package/deps/couchbase-cxx-client/couchbase/metrics_options.hxx +34 -34
  931. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +160 -149
  932. package/deps/couchbase-cxx-client/couchbase/mutate_in_result.hxx +130 -123
  933. package/deps/couchbase-cxx-client/couchbase/mutate_in_specs.hxx +473 -454
  934. package/deps/couchbase-cxx-client/couchbase/mutation_result.hxx +32 -32
  935. package/deps/couchbase-cxx-client/couchbase/mutation_state.hxx +35 -34
  936. package/deps/couchbase-cxx-client/couchbase/mutation_token.hxx +78 -78
  937. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +101 -72
  938. package/deps/couchbase-cxx-client/couchbase/numeric_range.hxx +26 -26
  939. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet.hxx +20 -20
  940. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet_result.hxx +14 -14
  941. package/deps/couchbase-cxx-client/couchbase/numeric_range_query.hxx +97 -95
  942. package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +17 -17
  943. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +11 -10
  944. package/deps/couchbase-cxx-client/couchbase/persist_to.hxx +45 -44
  945. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +69 -65
  946. package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +55 -54
  947. package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +79 -77
  948. package/deps/couchbase-cxx-client/couchbase/prefix_query.hxx +43 -40
  949. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +51 -47
  950. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +207 -199
  951. package/deps/couchbase-cxx-client/couchbase/query_meta_data.hxx +120 -120
  952. package/deps/couchbase-cxx-client/couchbase/query_metrics.hxx +135 -133
  953. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +518 -493
  954. package/deps/couchbase-cxx-client/couchbase/query_profile.hxx +29 -26
  955. package/deps/couchbase-cxx-client/couchbase/query_result.hxx +56 -55
  956. package/deps/couchbase-cxx-client/couchbase/query_scan_consistency.hxx +24 -21
  957. package/deps/couchbase-cxx-client/couchbase/query_status.hxx +10 -10
  958. package/deps/couchbase-cxx-client/couchbase/query_string_query.hxx +34 -29
  959. package/deps/couchbase-cxx-client/couchbase/query_warning.hxx +75 -71
  960. package/deps/couchbase-cxx-client/couchbase/read_preference.hxx +58 -0
  961. package/deps/couchbase-cxx-client/couchbase/regexp_query.hxx +40 -39
  962. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +51 -47
  963. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +25 -25
  964. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +112 -104
  965. package/deps/couchbase-cxx-client/couchbase/replicate_to.hxx +28 -28
  966. package/deps/couchbase-cxx-client/couchbase/result.hxx +28 -28
  967. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +11 -10
  968. package/deps/couchbase-cxx-client/couchbase/retry_action.hxx +10 -10
  969. package/deps/couchbase-cxx-client/couchbase/retry_reason.hxx +53 -51
  970. package/deps/couchbase-cxx-client/couchbase/retry_request.hxx +7 -7
  971. package/deps/couchbase-cxx-client/couchbase/retry_strategy.hxx +4 -4
  972. package/deps/couchbase-cxx-client/couchbase/scan_options.hxx +114 -108
  973. package/deps/couchbase-cxx-client/couchbase/scan_result.hxx +97 -96
  974. package/deps/couchbase-cxx-client/couchbase/scan_result_item.hxx +120 -118
  975. package/deps/couchbase-cxx-client/couchbase/scan_type.hxx +237 -232
  976. package/deps/couchbase-cxx-client/couchbase/scope.hxx +164 -157
  977. package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +263 -238
  978. package/deps/couchbase-cxx-client/couchbase/search_date_range.hxx +32 -29
  979. package/deps/couchbase-cxx-client/couchbase/search_facet.hxx +25 -25
  980. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +11 -11
  981. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +11 -1
  982. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +261 -238
  983. package/deps/couchbase-cxx-client/couchbase/search_meta_data.hxx +37 -37
  984. package/deps/couchbase-cxx-client/couchbase/search_metrics.hxx +84 -83
  985. package/deps/couchbase-cxx-client/couchbase/search_numeric_range.hxx +32 -32
  986. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +449 -435
  987. package/deps/couchbase-cxx-client/couchbase/search_query.hxx +32 -30
  988. package/deps/couchbase-cxx-client/couchbase/search_request.hxx +69 -68
  989. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +29 -26
  990. package/deps/couchbase-cxx-client/couchbase/search_row.hxx +52 -52
  991. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +20 -20
  992. package/deps/couchbase-cxx-client/couchbase/search_row_locations.hxx +39 -38
  993. package/deps/couchbase-cxx-client/couchbase/search_scan_consistency.hxx +11 -10
  994. package/deps/couchbase-cxx-client/couchbase/search_sort.hxx +20 -20
  995. package/deps/couchbase-cxx-client/couchbase/search_sort_field.hxx +77 -71
  996. package/deps/couchbase-cxx-client/couchbase/search_sort_field_missing.hxx +2 -2
  997. package/deps/couchbase-cxx-client/couchbase/search_sort_field_mode.hxx +3 -3
  998. package/deps/couchbase-cxx-client/couchbase/search_sort_field_type.hxx +4 -4
  999. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +41 -41
  1000. package/deps/couchbase-cxx-client/couchbase/search_sort_id.hxx +23 -23
  1001. package/deps/couchbase-cxx-client/couchbase/search_sort_score.hxx +23 -23
  1002. package/deps/couchbase-cxx-client/couchbase/search_term_range.hxx +17 -17
  1003. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +50 -50
  1004. package/deps/couchbase-cxx-client/couchbase/service_type.hxx +34 -34
  1005. package/deps/couchbase-cxx-client/couchbase/store_semantics.hxx +28 -28
  1006. package/deps/couchbase-cxx-client/couchbase/subdoc/array_add_unique.hxx +54 -54
  1007. package/deps/couchbase-cxx-client/couchbase/subdoc/array_append.hxx +40 -40
  1008. package/deps/couchbase-cxx-client/couchbase/subdoc/array_insert.hxx +41 -41
  1009. package/deps/couchbase-cxx-client/couchbase/subdoc/array_prepend.hxx +41 -41
  1010. package/deps/couchbase-cxx-client/couchbase/subdoc/count.hxx +24 -24
  1011. package/deps/couchbase-cxx-client/couchbase/subdoc/counter.hxx +41 -41
  1012. package/deps/couchbase-cxx-client/couchbase/subdoc/exists.hxx +24 -24
  1013. package/deps/couchbase-cxx-client/couchbase/subdoc/get.hxx +45 -29
  1014. package/deps/couchbase-cxx-client/couchbase/subdoc/insert.hxx +70 -54
  1015. package/deps/couchbase-cxx-client/couchbase/subdoc/lookup_in_macro.hxx +13 -12
  1016. package/deps/couchbase-cxx-client/couchbase/subdoc/mutate_in_macro.hxx +7 -2
  1017. package/deps/couchbase-cxx-client/couchbase/subdoc/remove.hxx +24 -24
  1018. package/deps/couchbase-cxx-client/couchbase/subdoc/replace.hxx +55 -39
  1019. package/deps/couchbase-cxx-client/couchbase/subdoc/upsert.hxx +70 -54
  1020. package/deps/couchbase-cxx-client/couchbase/term_facet.hxx +16 -16
  1021. package/deps/couchbase-cxx-client/couchbase/term_facet_result.hxx +14 -14
  1022. package/deps/couchbase-cxx-client/couchbase/term_query.hxx +107 -104
  1023. package/deps/couchbase-cxx-client/couchbase/term_range_query.hxx +99 -96
  1024. package/deps/couchbase-cxx-client/couchbase/timeout_options.hxx +118 -112
  1025. package/deps/couchbase-cxx-client/couchbase/tls_verify_mode.hxx +2 -2
  1026. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +25 -24
  1027. package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +45 -44
  1028. package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +34 -34
  1029. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +27 -25
  1030. package/deps/couchbase-cxx-client/couchbase/tracing_options.hxx +147 -142
  1031. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +149 -115
  1032. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +146 -95
  1033. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_result.hxx +52 -80
  1034. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +33 -29
  1035. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +101 -96
  1036. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +228 -223
  1037. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_result.hxx +11 -12
  1038. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_result.hxx +2 -3
  1039. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +105 -104
  1040. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +191 -187
  1041. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_query_config.hxx +32 -32
  1042. package/deps/couchbase-cxx-client/couchbase/transactions.hxx +56 -37
  1043. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +11 -10
  1044. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +25 -24
  1045. package/deps/couchbase-cxx-client/couchbase/update_bucket_options.hxx +9 -9
  1046. package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +35 -34
  1047. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +85 -80
  1048. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +9 -9
  1049. package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +82 -62
  1050. package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +51 -47
  1051. package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +45 -41
  1052. package/deps/couchbase-cxx-client/couchbase/wan_development_configuration_profile.hxx +13 -13
  1053. package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +41 -41
  1054. package/deps/couchbase-cxx-client/couchbase/wildcard_query.hxx +42 -41
  1055. package/deps/couchbase-cxx-client/third_party/expected/include/tl/expected.hpp +1746 -1584
  1056. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.c +2664 -2638
  1057. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.h +359 -342
  1058. package/dist/binding.d.ts +39 -4
  1059. package/dist/binding.js +4 -1
  1060. package/dist/collection.js +0 -1
  1061. package/dist/diagnosticstypes.js +2 -2
  1062. package/dist/searchtypes.d.ts +0 -4
  1063. package/dist/searchtypes.js +0 -4
  1064. package/dist/transactions.d.ts +1 -0
  1065. package/dist/transactions.js +12 -2
  1066. package/dist/vectorsearch.d.ts +4 -19
  1067. package/dist/vectorsearch.js +24 -19
  1068. package/package.json +29 -28
  1069. package/src/constants.cpp +111 -75
  1070. package/src/jstocbpp_autogen.hpp +146 -15
  1071. package/src/jstocbpp_basic.hpp +23 -0
  1072. package/src/jstocbpp_errors.hpp +9 -9
  1073. package/src/jstocbpp_transactions.hpp +17 -12
  1074. package/src/transaction.cpp +10 -5
  1075. package/tools/gen-bindings-js.js +1 -0
  1076. package/tools/gen-bindings-json.py +5 -2
  1077. package/deps/couchbase-cxx-cache/asio/41f31469d0dd420500b334dc8c2fd3ffe7320d8e/asio/asio/COPYING +0 -4
  1078. package/deps/couchbase-cxx-cache/asio/41f31469d0dd420500b334dc8c2fd3ffe7320d8e/asio/asio/README +0 -4
  1079. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/crypto/obj/README +0 -15
  1080. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/crypto/perlasm/readme +0 -100
  1081. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/nist-pkits/README.chromium +0 -19
  1082. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/ssl/certificates/README +0 -318
  1083. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/verify_certificate_chain_unittest/README +0 -87
  1084. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/verify_signed_data_unittest/README +0 -35
  1085. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/third_party/fiat/README.chromium +0 -11
  1086. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/util/bot/README +0 -3
  1087. package/deps/couchbase-cxx-cache/fmt/d3c862243fcf1c41b4c09903f35479bd42f135b7/fmt/support/README +0 -4
  1088. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.cxx +0 -113
  1089. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.hxx +0 -60
  1090. package/deps/couchbase-cxx-client/core/impl/manager_error_context.cxx +0 -100
  1091. package/deps/couchbase-cxx-client/core/impl/search_error_context.cxx +0 -147
  1092. package/deps/couchbase-cxx-client/couchbase/analytics_error_context.hxx +0 -143
  1093. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +0 -100
  1094. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +0 -269
  1095. package/deps/couchbase-cxx-client/couchbase/key_value_error_context.hxx +0 -229
  1096. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +0 -136
  1097. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_info.hxx +0 -138
  1098. package/deps/couchbase-cxx-client/couchbase/key_value_extended_error_info.hxx +0 -86
  1099. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +0 -109
  1100. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -111
  1101. package/deps/couchbase-cxx-client/couchbase/query_error_context.hxx +0 -145
  1102. package/deps/couchbase-cxx-client/couchbase/search_error_context.hxx +0 -138
  1103. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +0 -147
  1104. package/deps/couchbase-cxx-client/couchbase/transaction_op_error_context.hxx +0 -76
@@ -20,6 +20,8 @@
20
20
  #include "attempt_context_testing_hooks.hxx"
21
21
  #include "core/cluster.hxx"
22
22
 
23
+ #include "core/logger/logger.hxx"
24
+ #include "core/transactions/internal/logging.hxx"
23
25
  #include "internal/transaction_fields.hxx"
24
26
  #include "internal/utils.hxx"
25
27
  #include "result.hxx"
@@ -30,793 +32,923 @@
30
32
 
31
33
  namespace couchbase::core::transactions
32
34
  {
33
-
34
- bool
35
- unstaging_state::wait_until_unstage_possible()
35
+ auto
36
+ unstaging_state::wait_until_unstage_possible() -> bool
36
37
  {
37
- std::unique_lock lock(mutex_);
38
- auto success = cv_.wait_for(lock, ctx_->overall().remaining(), [this] { return (in_flight_count_ < MAX_PARALLELISM) || abort_; });
39
- if (!abort_) {
40
- if (success) {
41
- in_flight_count_++;
42
- } else {
43
- abort_ = true;
44
- }
38
+ std::unique_lock lock(mutex_);
39
+ auto success = cv_.wait_for(lock, ctx_->overall()->remaining(), [this] {
40
+ return (in_flight_count_ < MAX_PARALLELISM) || abort_;
41
+ });
42
+ if (!abort_) {
43
+ if (success) {
44
+ in_flight_count_++;
45
+ } else {
46
+ abort_ = true;
45
47
  }
46
- lock.unlock();
47
- return !abort_;
48
+ }
49
+ return !abort_;
48
50
  }
49
51
 
50
52
  void
51
53
  unstaging_state::notify_unstage_complete()
52
54
  {
53
- std::lock_guard lock(mutex_);
54
- in_flight_count_--;
55
- cv_.notify_one();
55
+ std::lock_guard lock(mutex_);
56
+ in_flight_count_--;
57
+ cv_.notify_one();
56
58
  }
57
59
 
58
60
  void
59
61
  unstaging_state::notify_unstage_error()
60
62
  {
61
- std::lock_guard lock(mutex_);
62
- abort_ = true;
63
- in_flight_count_--;
64
- cv_.notify_all();
63
+ std::lock_guard lock(mutex_);
64
+ abort_ = true;
65
+ in_flight_count_--;
66
+ cv_.notify_all();
65
67
  }
66
68
 
67
- bool
68
- staged_mutation_queue::empty()
69
+ auto
70
+ staged_mutation_queue::empty() -> bool
69
71
  {
70
- std::lock_guard<std::mutex> lock(mutex_);
71
- return queue_.empty();
72
+ std::lock_guard<std::mutex> lock(mutex_);
73
+ return queue_.empty();
72
74
  }
73
75
 
74
76
  void
75
77
  staged_mutation_queue::add(const staged_mutation& mutation)
76
78
  {
77
- std::lock_guard<std::mutex> lock(mutex_);
78
- // Can only have one staged mutation per document.
79
- queue_.erase(std::remove_if(queue_.begin(),
80
- queue_.end(),
81
- [&mutation](const staged_mutation& item) { return document_ids_equal(item.id(), mutation.id()); }),
82
- queue_.end());
83
- queue_.push_back(mutation);
79
+ std::lock_guard<std::mutex> lock(mutex_);
80
+ // Can only have one staged mutation per document.
81
+ queue_.erase(std::remove_if(queue_.begin(),
82
+ queue_.end(),
83
+ [&mutation](const staged_mutation& item) {
84
+ return document_ids_equal(item.id(), mutation.id());
85
+ }),
86
+ queue_.end());
87
+ queue_.push_back(mutation);
84
88
  }
85
89
 
86
90
  void
87
- staged_mutation_queue::extract_to(const std::string& prefix, core::operations::mutate_in_request& req)
91
+ staged_mutation_queue::extract_to(const std::string& prefix,
92
+ core::operations::mutate_in_request& req)
88
93
  {
89
- std::lock_guard<std::mutex> lock(mutex_);
90
- tao::json::value inserts = tao::json::empty_array;
91
- tao::json::value replaces = tao::json::empty_array;
92
- tao::json::value removes = tao::json::empty_array;
93
-
94
- for (const auto& mutation : queue_) {
95
- tao::json::value doc{ { ATR_FIELD_PER_DOC_ID, mutation.doc().id().key() },
96
- { ATR_FIELD_PER_DOC_BUCKET, mutation.doc().id().bucket() },
97
- { ATR_FIELD_PER_DOC_SCOPE, mutation.doc().id().scope() },
98
- { ATR_FIELD_PER_DOC_COLLECTION, mutation.doc().id().collection() } };
99
- switch (mutation.type()) {
100
- case staged_mutation_type::INSERT:
101
- inserts.push_back(doc);
102
- break;
103
- case staged_mutation_type::REMOVE:
104
- removes.push_back(doc);
105
- break;
106
- case staged_mutation_type::REPLACE:
107
- replaces.push_back(doc);
108
- break;
109
- }
94
+ std::lock_guard<std::mutex> lock(mutex_);
95
+ tao::json::value inserts = tao::json::empty_array;
96
+ tao::json::value replaces = tao::json::empty_array;
97
+ tao::json::value removes = tao::json::empty_array;
98
+
99
+ for (const auto& mutation : queue_) {
100
+ tao::json::value doc{ { ATR_FIELD_PER_DOC_ID, mutation.doc().id().key() },
101
+ { ATR_FIELD_PER_DOC_BUCKET, mutation.doc().id().bucket() },
102
+ { ATR_FIELD_PER_DOC_SCOPE, mutation.doc().id().scope() },
103
+ { ATR_FIELD_PER_DOC_COLLECTION, mutation.doc().id().collection() } };
104
+ switch (mutation.type()) {
105
+ case staged_mutation_type::INSERT:
106
+ inserts.push_back(doc);
107
+ break;
108
+ case staged_mutation_type::REMOVE:
109
+ removes.push_back(doc);
110
+ break;
111
+ case staged_mutation_type::REPLACE:
112
+ replaces.push_back(doc);
113
+ break;
110
114
  }
111
- auto specs =
112
- couchbase::mutate_in_specs{
113
- couchbase::mutate_in_specs::upsert_raw(prefix + ATR_FIELD_DOCS_INSERTED, core::utils::json::generate_binary(inserts))
114
- .xattr()
115
- .create_path(),
116
- couchbase::mutate_in_specs::upsert_raw(prefix + ATR_FIELD_DOCS_REPLACED, core::utils::json::generate_binary(replaces))
117
- .xattr()
118
- .create_path(),
119
- couchbase::mutate_in_specs::upsert_raw(prefix + ATR_FIELD_DOCS_REMOVED, core::utils::json::generate_binary(removes))
120
- .xattr()
121
- .create_path(),
122
- }
123
- .specs();
124
- req.specs.insert(req.specs.end(), specs.begin(), specs.end());
115
+ }
116
+ auto specs =
117
+ couchbase::mutate_in_specs{
118
+ couchbase::mutate_in_specs::upsert_raw(prefix + ATR_FIELD_DOCS_INSERTED,
119
+ core::utils::json::generate_binary(inserts))
120
+ .xattr()
121
+ .create_path(),
122
+ couchbase::mutate_in_specs::upsert_raw(prefix + ATR_FIELD_DOCS_REPLACED,
123
+ core::utils::json::generate_binary(replaces))
124
+ .xattr()
125
+ .create_path(),
126
+ couchbase::mutate_in_specs::upsert_raw(prefix + ATR_FIELD_DOCS_REMOVED,
127
+ core::utils::json::generate_binary(removes))
128
+ .xattr()
129
+ .create_path(),
130
+ }
131
+ .specs();
132
+ req.specs.insert(req.specs.end(), specs.begin(), specs.end());
125
133
  }
126
134
 
127
135
  void
128
136
  staged_mutation_queue::remove_any(const core::document_id& id)
129
137
  {
130
- const std::lock_guard<std::mutex> lock(mutex_);
131
- auto new_end =
132
- std::remove_if(queue_.begin(), queue_.end(), [&id](const staged_mutation& item) { return document_ids_equal(item.id(), id); });
133
- queue_.erase(new_end, queue_.end());
138
+ const std::lock_guard<std::mutex> lock(mutex_);
139
+ auto new_end = std::remove_if(queue_.begin(), queue_.end(), [&id](const staged_mutation& item) {
140
+ return document_ids_equal(item.id(), id);
141
+ });
142
+ queue_.erase(new_end, queue_.end());
134
143
  }
135
144
 
136
- staged_mutation*
137
- staged_mutation_queue::find_any(const core::document_id& id)
145
+ auto
146
+ staged_mutation_queue::find_any(const core::document_id& id) -> staged_mutation*
138
147
  {
139
- const std::lock_guard<std::mutex> lock(mutex_);
140
- for (auto& item : queue_) {
141
- if (document_ids_equal(item.doc().id(), id)) {
142
- return &item;
143
- }
148
+ const std::lock_guard<std::mutex> lock(mutex_);
149
+ for (auto& item : queue_) {
150
+ if (document_ids_equal(item.doc().id(), id)) {
151
+ return &item;
144
152
  }
145
- return nullptr;
153
+ }
154
+ return nullptr;
146
155
  }
147
156
 
148
- staged_mutation*
149
- staged_mutation_queue::find_replace(const core::document_id& id)
157
+ auto
158
+ staged_mutation_queue::find_replace(const core::document_id& id) -> staged_mutation*
150
159
  {
151
- std::lock_guard<std::mutex> lock(mutex_);
152
- for (auto& item : queue_) {
153
- if (item.type() == staged_mutation_type::REPLACE && document_ids_equal(item.doc().id(), id)) {
154
- return &item;
155
- }
160
+ std::lock_guard<std::mutex> lock(mutex_);
161
+ for (auto& item : queue_) {
162
+ if (item.type() == staged_mutation_type::REPLACE && document_ids_equal(item.doc().id(), id)) {
163
+ return &item;
156
164
  }
157
- return nullptr;
165
+ }
166
+ return nullptr;
158
167
  }
159
168
 
160
- staged_mutation*
161
- staged_mutation_queue::find_insert(const core::document_id& id)
169
+ auto
170
+ staged_mutation_queue::find_insert(const core::document_id& id) -> staged_mutation*
162
171
  {
163
- std::lock_guard<std::mutex> lock(mutex_);
164
- for (auto& item : queue_) {
165
- if (item.type() == staged_mutation_type::INSERT && document_ids_equal(item.doc().id(), id)) {
166
- return &item;
167
- }
172
+ std::lock_guard<std::mutex> lock(mutex_);
173
+ for (auto& item : queue_) {
174
+ if (item.type() == staged_mutation_type::INSERT && document_ids_equal(item.doc().id(), id)) {
175
+ return &item;
168
176
  }
169
- return nullptr;
177
+ }
178
+ return nullptr;
170
179
  }
171
180
 
172
- staged_mutation*
173
- staged_mutation_queue::find_remove(const core::document_id& id)
181
+ auto
182
+ staged_mutation_queue::find_remove(const core::document_id& id) -> staged_mutation*
174
183
  {
175
- std::lock_guard<std::mutex> lock(mutex_);
176
- for (auto& item : queue_) {
177
- if (item.type() == staged_mutation_type::REMOVE && document_ids_equal(item.doc().id(), id)) {
178
- return &item;
179
- }
184
+ std::lock_guard<std::mutex> lock(mutex_);
185
+ for (auto& item : queue_) {
186
+ if (item.type() == staged_mutation_type::REMOVE && document_ids_equal(item.doc().id(), id)) {
187
+ return &item;
180
188
  }
181
- return nullptr;
189
+ }
190
+ return nullptr;
182
191
  }
183
192
  void
184
193
  staged_mutation_queue::iterate(std::function<void(staged_mutation&)> op)
185
194
  {
186
- std::lock_guard<std::mutex> lock(mutex_);
187
- for (auto& item : queue_) {
188
- op(item);
189
- }
195
+ std::lock_guard<std::mutex> lock(mutex_);
196
+ for (auto& item : queue_) {
197
+ op(item);
198
+ }
190
199
  }
191
200
 
192
201
  void
193
- staged_mutation_queue::commit(attempt_context_impl* ctx)
202
+ staged_mutation_queue::commit(std::shared_ptr<attempt_context_impl> ctx)
194
203
  {
195
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "committing staged mutations...");
196
- std::lock_guard<std::mutex> lock(mutex_);
204
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "committing staged mutations...");
205
+ std::lock_guard<std::mutex> lock(mutex_);
197
206
 
198
- unstaging_state state{ ctx };
199
- std::vector<std::future<void>> futures{};
200
- futures.reserve(queue_.size());
207
+ unstaging_state state{ ctx };
208
+ std::vector<std::future<void>> futures{};
209
+ futures.reserve(queue_.size());
201
210
 
202
- bool aborted = false;
211
+ bool aborted = false;
203
212
 
204
- for (auto& item : queue_) {
205
- aborted = !state.wait_until_unstage_possible();
206
- if (aborted) {
207
- // Do not commit any more mutations
208
- break;
209
- }
213
+ for (auto& item : queue_) {
214
+ aborted = !state.wait_until_unstage_possible();
215
+ if (aborted) {
216
+ // Do not commit any more mutations
217
+ break;
218
+ }
210
219
 
211
- auto barrier = std::make_shared<std::promise<void>>();
212
- auto future = barrier->get_future();
213
-
214
- try {
215
- auto timer = std::make_shared<asio::steady_timer>(ctx->cluster_ref().io_context());
216
- async_constant_delay delay(timer);
217
-
218
- switch (item.type()) {
219
- case staged_mutation_type::REMOVE:
220
- remove_doc(ctx, item, delay, [&state, barrier](const std::exception_ptr& exc) {
221
- if (exc) {
222
- state.notify_unstage_error();
223
- barrier->set_exception(exc);
224
- } else {
225
- state.notify_unstage_complete();
226
- barrier->set_value();
227
- }
228
- });
229
- break;
230
- case staged_mutation_type::INSERT:
231
- case staged_mutation_type::REPLACE:
232
- commit_doc(ctx, item, delay, [&state, barrier](const std::exception_ptr& exc) {
233
- if (exc) {
234
- state.notify_unstage_error();
235
- barrier->set_exception(exc);
236
- } else {
237
- state.notify_unstage_complete();
238
- barrier->set_value();
239
- }
240
- });
241
- break;
242
- }
243
- } catch (...) {
244
- // This should not happen, but catching it to ensure that we wait for in-flight operations
245
- CB_ATTEMPT_CTX_LOG_ERROR(ctx,
246
- "caught exception while trying to initiate commit for {}. Aborting rest of commit and waiting for "
247
- "in-flight rollback operations to finish",
248
- item.doc().id());
249
- aborted = true;
250
- break;
251
- }
220
+ auto barrier = std::make_shared<std::promise<void>>();
221
+ auto future = barrier->get_future();
252
222
 
253
- futures.push_back(std::move(future));
254
- }
223
+ try {
224
+ auto timer = std::make_shared<asio::steady_timer>(ctx->cluster_ref().io_context());
225
+ async_constant_delay delay(timer);
255
226
 
256
- std::exception_ptr exc{};
257
- for (auto& future : futures) {
258
- try {
259
- future.get();
260
- } catch (...) {
261
- if (!exc) {
262
- exc = std::current_exception();
227
+ switch (item.type()) {
228
+ case staged_mutation_type::REMOVE:
229
+ remove_doc(ctx, item, delay, [&state, barrier](const std::exception_ptr& exc) {
230
+ if (exc) {
231
+ state.notify_unstage_error();
232
+ barrier->set_exception(exc);
233
+ } else {
234
+ state.notify_unstage_complete();
235
+ barrier->set_value();
263
236
  }
264
- }
265
- }
266
- if (exc) {
267
- rethrow_exception(exc);
237
+ });
238
+ break;
239
+ case staged_mutation_type::INSERT:
240
+ case staged_mutation_type::REPLACE:
241
+ commit_doc(ctx, item, delay, [&state, barrier](const std::exception_ptr& exc) {
242
+ if (exc) {
243
+ state.notify_unstage_error();
244
+ barrier->set_exception(exc);
245
+ } else {
246
+ state.notify_unstage_complete();
247
+ barrier->set_value();
248
+ }
249
+ });
250
+ break;
251
+ }
252
+ } catch (...) {
253
+ // This should not happen, but catching it to ensure that we wait for in-flight operations
254
+ CB_ATTEMPT_CTX_LOG_ERROR(ctx,
255
+ "caught exception while trying to initiate commit for {}. Aborting "
256
+ "rest of commit and waiting for "
257
+ "in-flight rollback operations to finish",
258
+ item.doc().id());
259
+ aborted = true;
260
+ break;
268
261
  }
269
- if (aborted) {
270
- // Commit was aborted but no exception was raised from the futures (possibly timeout during wait_until_unstage_possible())
271
- throw transaction_operation_failed(FAIL_OTHER, "commit aborted").no_rollback().failed_post_commit();
262
+
263
+ futures.push_back(std::move(future));
264
+ }
265
+
266
+ std::exception_ptr exc{};
267
+ for (auto& future : futures) {
268
+ try {
269
+ future.get();
270
+ } catch (...) {
271
+ if (!exc) {
272
+ exc = std::current_exception();
273
+ }
272
274
  }
275
+ }
276
+ if (exc) {
277
+ rethrow_exception(exc);
278
+ }
279
+ if (aborted) {
280
+ // Commit was aborted but no exception was raised from the futures (possibly timeout during
281
+ // wait_until_unstage_possible())
282
+ throw transaction_operation_failed(FAIL_OTHER, "commit aborted")
283
+ .no_rollback()
284
+ .failed_post_commit();
285
+ }
273
286
  }
274
287
 
275
288
  void
276
- staged_mutation_queue::rollback(attempt_context_impl* ctx)
289
+ staged_mutation_queue::rollback(std::shared_ptr<attempt_context_impl> ctx)
277
290
  {
278
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rolling back staged mutations...");
279
- std::lock_guard<std::mutex> lock(mutex_);
291
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rolling back staged mutations...");
292
+ std::lock_guard<std::mutex> lock(mutex_);
280
293
 
281
- unstaging_state state{ ctx };
282
- std::vector<std::future<void>> futures{};
283
- futures.reserve(queue_.size());
294
+ unstaging_state state{ ctx };
295
+ std::vector<std::future<void>> futures{};
296
+ futures.reserve(queue_.size());
284
297
 
285
- bool aborted = false;
298
+ bool aborted = false;
286
299
 
287
- for (auto& item : queue_) {
288
- aborted = !state.wait_until_unstage_possible();
289
- if (aborted) {
290
- // Do not roll back any more mutations
291
- break;
292
- }
300
+ for (auto& item : queue_) {
301
+ aborted = !state.wait_until_unstage_possible();
302
+ if (aborted) {
303
+ // Do not roll back any more mutations
304
+ break;
305
+ }
293
306
 
294
- auto barrier = std::make_shared<std::promise<void>>();
295
- auto future = barrier->get_future();
296
-
297
- try {
298
- auto timer = std::make_shared<asio::steady_timer>(ctx->cluster_ref().io_context());
299
- async_exp_delay delay(timer);
300
-
301
- switch (item.type()) {
302
- case staged_mutation_type::INSERT:
303
- rollback_insert(ctx, item, delay, [&state, barrier](const std::exception_ptr& exc) {
304
- if (exc) {
305
- state.notify_unstage_error();
306
- barrier->set_exception(exc);
307
- } else {
308
- state.notify_unstage_complete();
309
- barrier->set_value();
310
- }
311
- });
312
- break;
313
- case staged_mutation_type::REMOVE:
314
- case staged_mutation_type::REPLACE:
315
- rollback_remove_or_replace(ctx, item, delay, [&state, barrier](std::exception_ptr exc) {
316
- if (exc) {
317
- state.notify_unstage_error();
318
- barrier->set_exception(exc);
319
- } else {
320
- state.notify_unstage_complete();
321
- barrier->set_value();
322
- }
323
- });
324
- break;
325
- }
326
- } catch (...) {
327
- // This should not happen, but catching it to ensure that we wait for in-flight operations
328
- CB_ATTEMPT_CTX_LOG_ERROR(ctx,
329
- "caught exception while trying to initiate rollback for {}. Aborting rollback and waiting for "
330
- "in-flight rollback operations to finish",
331
- item.doc().id());
332
- aborted = true;
333
- break;
334
- }
307
+ auto barrier = std::make_shared<std::promise<void>>();
308
+ auto future = barrier->get_future();
335
309
 
336
- futures.push_back(std::move(future));
337
- }
310
+ try {
311
+ auto timer = std::make_shared<asio::steady_timer>(ctx->cluster_ref().io_context());
312
+ async_exp_delay delay(timer);
338
313
 
339
- std::exception_ptr exc{};
340
- for (auto& future : futures) {
341
- try {
342
- future.get();
343
- } catch (...) {
344
- if (!exc) {
345
- exc = std::current_exception();
314
+ switch (item.type()) {
315
+ case staged_mutation_type::INSERT:
316
+ rollback_insert(ctx, item, delay, [&state, barrier](const std::exception_ptr& exc) {
317
+ if (exc) {
318
+ state.notify_unstage_error();
319
+ barrier->set_exception(exc);
320
+ } else {
321
+ state.notify_unstage_complete();
322
+ barrier->set_value();
346
323
  }
347
- }
348
- }
349
- if (exc) {
350
- rethrow_exception(exc);
324
+ });
325
+ break;
326
+ case staged_mutation_type::REMOVE:
327
+ case staged_mutation_type::REPLACE:
328
+ rollback_remove_or_replace(ctx, item, delay, [&state, barrier](std::exception_ptr exc) {
329
+ if (exc) {
330
+ state.notify_unstage_error();
331
+ barrier->set_exception(exc);
332
+ } else {
333
+ state.notify_unstage_complete();
334
+ barrier->set_value();
335
+ }
336
+ });
337
+ break;
338
+ }
339
+ } catch (...) {
340
+ // This should not happen, but catching it to ensure that we wait for in-flight operations
341
+ CB_ATTEMPT_CTX_LOG_ERROR(ctx,
342
+ "caught exception while trying to initiate rollback for {}. "
343
+ "Aborting rollback and waiting for "
344
+ "in-flight rollback operations to finish",
345
+ item.doc().id());
346
+ aborted = true;
347
+ break;
351
348
  }
352
- if (aborted) {
353
- // Rollback was aborted but no exception was raised from the futures (possibly timeout during wait_until_unstage_possible())
354
- throw transaction_operation_failed(FAIL_OTHER, "rollback aborted").no_rollback();
349
+
350
+ futures.push_back(std::move(future));
351
+ }
352
+
353
+ std::exception_ptr exc{};
354
+ for (auto& future : futures) {
355
+ try {
356
+ future.get();
357
+ } catch (...) {
358
+ if (!exc) {
359
+ exc = std::current_exception();
360
+ }
355
361
  }
362
+ }
363
+ if (exc) {
364
+ rethrow_exception(exc);
365
+ }
366
+ if (aborted) {
367
+ // Rollback was aborted but no exception was raised from the futures (possibly timeout during
368
+ // wait_until_unstage_possible())
369
+ throw transaction_operation_failed(FAIL_OTHER, "rollback aborted").no_rollback();
370
+ }
356
371
  }
357
372
 
358
373
  void
359
- staged_mutation_queue::rollback_insert(attempt_context_impl* ctx,
374
+ staged_mutation_queue::rollback_insert(std::shared_ptr<attempt_context_impl> ctx,
360
375
  const staged_mutation& item,
361
376
  async_exp_delay& delay,
362
377
  utils::movable_function<void(std::exception_ptr)> callback)
363
378
  {
364
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rolling back staged insert for {} with cas {}", item.doc().id(), item.doc().cas().value());
365
-
366
- asio::post(asio::bind_executor(ctx->cluster_ref().io_context(), [this, callback = std::move(callback), ctx, &item, delay]() mutable {
367
- auto handler = [this, callback = std::move(callback), ctx, &item, delay](const std::optional<client_error>& e) mutable {
368
- if (e) {
369
- return handle_rollback_insert_error(e.value(), ctx, item, delay, std::move(callback));
370
- }
371
- return callback({});
372
- };
373
-
374
- auto ec = ctx->error_if_expired_and_not_in_overtime(STAGE_DELETE_INSERTED, item.doc().id().key());
375
- if (ec) {
376
- return handler(client_error(*ec, "expired in rollback and not in overtime mode"));
379
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx,
380
+ "rolling back staged insert for {} with cas {}",
381
+ item.doc().id(),
382
+ item.doc().cas().value());
383
+
384
+ asio::post(asio::bind_executor(
385
+ ctx->cluster_ref().io_context(),
386
+ [this, callback = std::move(callback), ctx, &item, delay]() mutable {
387
+ auto handler = [this, callback = std::move(callback), ctx, &item, delay](
388
+ const std::optional<client_error>& e) mutable {
389
+ if (e) {
390
+ return handle_rollback_insert_error(e.value(), ctx, item, delay, std::move(callback));
377
391
  }
392
+ return callback({});
393
+ };
378
394
 
379
- return ctx->hooks_.before_rollback_delete_inserted(
380
- ctx, item.doc().id().key(), [handler = std::move(handler), ctx, &item, delay](std::optional<error_class> ec) mutable {
381
- if (ec) {
382
- return handler(client_error(*ec, "before_rollback_delete_insert hook threw error"));
383
- }
384
- core::operations::mutate_in_request req{ item.doc().id() };
385
- req.specs =
386
- couchbase::mutate_in_specs{
387
- couchbase::mutate_in_specs::remove(TRANSACTION_INTERFACE_PREFIX_ONLY).xattr(),
388
- }
389
- .specs();
390
- req.access_deleted = true;
391
- req.cas = item.doc().cas();
392
- wrap_durable_request(req, ctx->overall().config());
393
- return ctx->cluster_ref().execute(
394
- req, [handler = std::move(handler), ctx, &item, delay](const core::operations::mutate_in_response& resp) mutable {
395
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "mutate_in for {} with cas {}", item.doc().id(), item.doc().cas().value());
396
-
397
- auto res = result::create_from_subdoc_response(resp);
398
- return validate_rollback_insert_result(ctx, res, item, std::move(handler));
399
- });
400
- });
395
+ auto ec =
396
+ ctx->error_if_expired_and_not_in_overtime(STAGE_DELETE_INSERTED, item.doc().id().key());
397
+ if (ec) {
398
+ return handler(client_error(*ec, "expired in rollback and not in overtime mode"));
399
+ }
400
+
401
+ return ctx->hooks_.before_rollback_delete_inserted(
402
+ ctx,
403
+ item.doc().id().key(),
404
+ [handler = std::move(handler), ctx, &item, delay](std::optional<error_class> ec) mutable {
405
+ if (ec) {
406
+ return handler(client_error(*ec, "before_rollback_delete_insert hook threw error"));
407
+ }
408
+ core::operations::mutate_in_request req{ item.doc().id() };
409
+ req.specs =
410
+ couchbase::mutate_in_specs{
411
+ couchbase::mutate_in_specs::remove(TRANSACTION_INTERFACE_PREFIX_ONLY).xattr(),
412
+ }
413
+ .specs();
414
+ req.access_deleted = true;
415
+ req.cas = item.doc().cas();
416
+ wrap_durable_request(req, ctx->overall()->config());
417
+ return ctx->cluster_ref().execute(
418
+ req,
419
+ [handler = std::move(handler), ctx, &item, delay](
420
+ const core::operations::mutate_in_response& resp) mutable {
421
+ CB_ATTEMPT_CTX_LOG_TRACE(
422
+ ctx, "mutate_in for {} with cas {}", item.doc().id(), item.doc().cas().value());
423
+
424
+ auto res = result::create_from_subdoc_response(resp);
425
+ return validate_rollback_insert_result(ctx, res, item, std::move(handler));
426
+ });
427
+ });
401
428
  }));
402
429
  }
403
430
 
404
431
  void
405
- staged_mutation_queue::rollback_remove_or_replace(attempt_context_impl* ctx,
406
- const staged_mutation& item,
407
- async_exp_delay& delay,
408
- utils::movable_function<void(std::exception_ptr)> callback)
432
+ staged_mutation_queue::rollback_remove_or_replace(
433
+ std::shared_ptr<attempt_context_impl> ctx,
434
+ const staged_mutation& item,
435
+ async_exp_delay& delay,
436
+ utils::movable_function<void(std::exception_ptr)> callback)
409
437
  {
410
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rolling back staged remove/replace for {} with cas {}", item.doc().id(), item.doc().cas().value());
411
-
412
- asio::post(asio::bind_executor(ctx->cluster_ref().io_context(), [this, callback = std::move(callback), ctx, &item, delay]() mutable {
413
- auto handler = [this, callback = std::move(callback), ctx, &item, delay](const std::optional<client_error>& e) mutable {
414
- if (e) {
415
- return handle_rollback_remove_or_replace_error(e.value(), ctx, item, delay, std::move(callback));
416
- }
417
- return callback({});
418
- };
419
- auto ec = ctx->error_if_expired_and_not_in_overtime(STAGE_ROLLBACK_DOC, item.doc().id().key());
420
- if (ec) {
421
- return handler(client_error(*ec, "expired in rollback_remove_or_replace and not in expiry overtime"));
438
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx,
439
+ "rolling back staged remove/replace for {} with cas {}",
440
+ item.doc().id(),
441
+ item.doc().cas().value());
442
+
443
+ asio::post(asio::bind_executor(
444
+ ctx->cluster_ref().io_context(),
445
+ [this, callback = std::move(callback), ctx, &item, delay]() mutable {
446
+ auto handler = [this, callback = std::move(callback), ctx, &item, delay](
447
+ const std::optional<client_error>& e) mutable {
448
+ if (e) {
449
+ return handle_rollback_remove_or_replace_error(
450
+ e.value(), ctx, item, delay, std::move(callback));
422
451
  }
423
- ctx->hooks_.before_doc_rolled_back(
424
- ctx, item.doc().id().key(), [handler = std::move(handler), ctx, &item, delay](std::optional<error_class> ec) mutable {
425
- if (ec) {
426
- return handler(client_error(*ec, "before_doc_rolled_back hook threw error"));
427
- }
428
- core::operations::mutate_in_request req{ item.doc().id() };
429
- req.specs =
430
- couchbase::mutate_in_specs{
431
- couchbase::mutate_in_specs::remove(TRANSACTION_INTERFACE_PREFIX_ONLY).xattr(),
432
- }
433
- .specs();
434
- req.cas = item.doc().cas();
435
- wrap_durable_request(req, ctx->overall().config());
436
- return ctx->cluster_ref().execute(
437
- req, [handler = std::move(handler), ctx, &item, delay](const core::operations::mutate_in_response& resp) mutable {
438
- auto res = result::create_from_subdoc_response(resp);
439
- return validate_rollback_remove_or_replace_result(ctx, res, item, std::move(handler));
440
- });
441
- });
452
+ return callback({});
453
+ };
454
+ auto ec =
455
+ ctx->error_if_expired_and_not_in_overtime(STAGE_ROLLBACK_DOC, item.doc().id().key());
456
+ if (ec) {
457
+ return handler(
458
+ client_error(*ec, "expired in rollback_remove_or_replace and not in expiry overtime"));
459
+ }
460
+ ctx->hooks_.before_doc_rolled_back(
461
+ ctx,
462
+ item.doc().id().key(),
463
+ [handler = std::move(handler), ctx, &item, delay](std::optional<error_class> ec) mutable {
464
+ if (ec) {
465
+ return handler(client_error(*ec, "before_doc_rolled_back hook threw error"));
466
+ }
467
+ core::operations::mutate_in_request req{ item.doc().id() };
468
+ req.specs =
469
+ couchbase::mutate_in_specs{
470
+ couchbase::mutate_in_specs::remove(TRANSACTION_INTERFACE_PREFIX_ONLY).xattr(),
471
+ }
472
+ .specs();
473
+ req.cas = item.doc().cas();
474
+ req.flags = item.doc().content().flags;
475
+ wrap_durable_request(req, ctx->overall()->config());
476
+ return ctx->cluster_ref().execute(
477
+ req,
478
+ [handler = std::move(handler), ctx, &item, delay](
479
+ const core::operations::mutate_in_response& resp) mutable {
480
+ auto res = result::create_from_subdoc_response(resp);
481
+ return validate_rollback_remove_or_replace_result(ctx, res, item, std::move(handler));
482
+ });
483
+ });
442
484
  }));
443
485
  }
444
486
 
445
487
  void
446
- staged_mutation_queue::commit_doc(attempt_context_impl* ctx,
488
+ staged_mutation_queue::commit_doc(std::shared_ptr<attempt_context_impl> ctx,
447
489
  staged_mutation& item,
448
490
  async_constant_delay& delay,
449
491
  utils::movable_function<void(std::exception_ptr)> callback,
450
492
  bool ambiguity_resolution_mode,
451
493
  bool cas_zero_mode)
452
494
  {
453
- CB_ATTEMPT_CTX_LOG_TRACE(
454
- ctx, "commit doc {}, cas_zero_mode {}, ambiguity_resolution_mode {}", item.doc().id(), cas_zero_mode, ambiguity_resolution_mode);
455
-
456
- asio::post(asio::bind_executor(
457
- ctx->cluster_ref().io_context(),
458
- [this, callback = std::move(callback), ctx, &item, delay, cas_zero_mode, ambiguity_resolution_mode]() mutable {
459
- ctx->check_expiry_during_commit_or_rollback(STAGE_COMMIT_DOC, std::optional<const std::string>(item.doc().id().key()));
460
-
461
- auto handler = [this, callback = std::move(callback), ctx, &item, delay](
462
- const std::optional<client_error>& e, bool ambiguity_resolution_mode, bool cas_zero_mode) mutable {
463
- if (e) {
464
- return handle_commit_doc_error(
465
- e.value(), ctx, item, delay, ambiguity_resolution_mode, cas_zero_mode, std::move(callback));
495
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx,
496
+ "commit doc {}, cas_zero_mode {}, ambiguity_resolution_mode {}",
497
+ item.doc().id(),
498
+ cas_zero_mode,
499
+ ambiguity_resolution_mode);
500
+
501
+ asio::post(asio::bind_executor(
502
+ ctx->cluster_ref().io_context(),
503
+ [this,
504
+ callback = std::move(callback),
505
+ ctx,
506
+ &item,
507
+ delay,
508
+ cas_zero_mode,
509
+ ambiguity_resolution_mode]() mutable {
510
+ ctx->check_expiry_during_commit_or_rollback(
511
+ STAGE_COMMIT_DOC, std::optional<const std::string>(item.doc().id().key()));
512
+
513
+ auto handler = [this, callback = std::move(callback), ctx, &item, delay](
514
+ const std::optional<client_error>& e,
515
+ bool ambiguity_resolution_mode,
516
+ bool cas_zero_mode) mutable {
517
+ if (e) {
518
+ return handle_commit_doc_error(e.value(),
519
+ ctx,
520
+ item,
521
+ delay,
522
+ ambiguity_resolution_mode,
523
+ cas_zero_mode,
524
+ std::move(callback));
525
+ }
526
+ callback({});
527
+ };
528
+
529
+ ctx->hooks_.before_doc_committed(
530
+ ctx,
531
+ item.doc().id().key(),
532
+ [handler = std::move(handler), ctx, &item, delay, ambiguity_resolution_mode, cas_zero_mode](
533
+ std::optional<error_class> ec) mutable {
534
+ if (ec) {
535
+ return handler(client_error(*ec, "before_doc_committed hook threw error"),
536
+ ambiguity_resolution_mode,
537
+ cas_zero_mode);
538
+ }
539
+ // move staged content into doc
540
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx,
541
+ "commit doc id {}, content {}, cas {}",
542
+ item.doc().id(),
543
+ to_string(item.content().data),
544
+ item.doc().cas().value());
545
+
546
+ if (item.type() == staged_mutation_type::INSERT && !cas_zero_mode) {
547
+ core::operations::insert_request req{ item.doc().id(), item.content().data };
548
+ req.flags = item.content().flags;
549
+ wrap_durable_request(req, ctx->overall()->config());
550
+ return ctx->cluster_ref().execute(
551
+ req,
552
+ [handler = std::move(handler),
553
+ ctx,
554
+ &item,
555
+ delay,
556
+ ambiguity_resolution_mode,
557
+ cas_zero_mode](const core::operations::insert_response& resp) mutable {
558
+ auto res = result::create_from_mutation_response(resp);
559
+ return validate_commit_doc_result(
560
+ ctx,
561
+ res,
562
+ item,
563
+ [ambiguity_resolution_mode, cas_zero_mode, handler = std::move(handler)](
564
+ auto e) mutable {
565
+ if (e) {
566
+ return handler(e, ambiguity_resolution_mode, cas_zero_mode);
567
+ }
568
+ // Commit successful
569
+ return handler({}, {}, {});
570
+ });
571
+ });
572
+ } else {
573
+ core::operations::mutate_in_request req{ item.doc().id() };
574
+ req.specs =
575
+ couchbase::mutate_in_specs{
576
+ // TODO(SA): upsert null to "txn" to match Java implementation
577
+ //
578
+ // from CoreTransactionAttemptContext.java:
579
+ // > Upsert this field to better handle illegal doc mutation.
580
+ // > E.g. run shadowDocSameTxnKVInsert without this, fails
581
+ // > at this point as path has been removed. Could also handle
582
+ // > with a spec change to handle that.
583
+ couchbase::mutate_in_specs::remove(TRANSACTION_INTERFACE_PREFIX_ONLY).xattr(),
584
+ // subdoc::opcode::set_doc used in replace w/ empty path
585
+ couchbase::mutate_in_specs::replace_raw("", std::move(item.content().data)),
466
586
  }
467
- callback({});
468
- };
469
-
470
- ctx->hooks_.before_doc_committed(
471
- ctx,
472
- item.doc().id().key(),
473
- [handler = std::move(handler), ctx, &item, delay, ambiguity_resolution_mode, cas_zero_mode](
474
- std::optional<error_class> ec) mutable {
475
- if (ec) {
476
- return handler(client_error(*ec, "before_doc_committed hook threw error"), ambiguity_resolution_mode, cas_zero_mode);
477
- }
478
- // move staged content into doc
479
- CB_ATTEMPT_CTX_LOG_TRACE(
480
- ctx, "commit doc id {}, content {}, cas {}", item.doc().id(), to_string(item.content()), item.doc().cas().value());
481
-
482
- if (item.type() == staged_mutation_type::INSERT && !cas_zero_mode) {
483
- core::operations::insert_request req{ item.doc().id(), item.content() };
484
- req.flags = couchbase::codec::codec_flags::json_common_flags;
485
- wrap_durable_request(req, ctx->overall().config());
486
- return ctx->cluster_ref().execute(
487
- req,
488
- [handler = std::move(handler), ctx, &item, delay, ambiguity_resolution_mode, cas_zero_mode](
489
- const core::operations::insert_response& resp) mutable {
490
- auto res = result::create_from_mutation_response(resp);
491
- return validate_commit_doc_result(
492
- ctx, res, item, [ambiguity_resolution_mode, cas_zero_mode, handler = std::move(handler)](auto e) mutable {
493
- if (e) {
494
- return handler(e, ambiguity_resolution_mode, cas_zero_mode);
495
- }
496
- // Commit successful
497
- return handler({}, {}, {});
498
- });
499
- });
500
- } else {
501
- core::operations::mutate_in_request req{ item.doc().id() };
502
- req.specs =
503
- couchbase::mutate_in_specs{
504
- couchbase::mutate_in_specs::remove(TRANSACTION_INTERFACE_PREFIX_ONLY).xattr(),
505
- // subdoc::opcode::set_doc used in replace w/ empty path
506
- couchbase::mutate_in_specs::replace_raw("", item.content()),
507
- }
508
- .specs();
509
- req.store_semantics = couchbase::store_semantics::replace;
510
- req.cas = couchbase::cas(cas_zero_mode ? 0 : item.doc().cas().value());
511
- wrap_durable_request(req, ctx->overall().config());
512
- return ctx->cluster_ref().execute(
513
- req,
514
- [handler = std::move(handler), ctx, &item, delay, ambiguity_resolution_mode, cas_zero_mode](
515
- const core::operations::mutate_in_response resp) mutable {
516
- auto res = result::create_from_subdoc_response(resp);
517
- return validate_commit_doc_result(
518
- ctx, res, item, [ambiguity_resolution_mode, cas_zero_mode, handler = std::move(handler)](auto e) mutable {
519
- if (e) {
520
- return handler(e, ambiguity_resolution_mode, cas_zero_mode);
521
- }
522
- // Commit successful
523
- return handler({}, {}, {});
524
- });
525
- });
526
- }
527
- });
528
- }));
587
+ .specs();
588
+ req.store_semantics = couchbase::store_semantics::replace;
589
+ req.cas = couchbase::cas(cas_zero_mode ? 0 : item.doc().cas().value());
590
+ req.flags = item.content().flags;
591
+ wrap_durable_request(req, ctx->overall()->config());
592
+ return ctx->cluster_ref().execute(
593
+ req,
594
+ [handler = std::move(handler),
595
+ ctx,
596
+ &item,
597
+ delay,
598
+ ambiguity_resolution_mode,
599
+ cas_zero_mode](const core::operations::mutate_in_response resp) mutable {
600
+ auto res = result::create_from_subdoc_response(resp);
601
+ return validate_commit_doc_result(
602
+ ctx,
603
+ res,
604
+ item,
605
+ [ambiguity_resolution_mode, cas_zero_mode, handler = std::move(handler)](
606
+ auto e) mutable {
607
+ if (e) {
608
+ return handler(e, ambiguity_resolution_mode, cas_zero_mode);
609
+ }
610
+ // Commit successful
611
+ return handler({}, {}, {});
612
+ });
613
+ });
614
+ }
615
+ });
616
+ }));
529
617
  }
530
618
 
531
619
  void
532
- staged_mutation_queue::remove_doc(attempt_context_impl* ctx,
620
+ staged_mutation_queue::remove_doc(std::shared_ptr<attempt_context_impl> ctx,
533
621
  const staged_mutation& item,
534
622
  async_constant_delay& delay,
535
623
  utils::movable_function<void(std::exception_ptr)> callback)
536
624
  {
537
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove doc {}", item.doc().id());
538
-
539
- asio::post(asio::bind_executor(ctx->cluster_ref().io_context(), [this, callback = std::move(callback), ctx, &item, delay]() mutable {
540
- auto handler = [this, ctx, &item, delay, callback = std::move(callback)](const std::optional<client_error>& e) mutable {
541
- if (e) {
542
- return handle_remove_doc_error(e.value(), ctx, item, delay, std::move(callback));
543
- }
544
- return callback({});
545
- };
546
-
547
- ctx->check_expiry_during_commit_or_rollback(STAGE_REMOVE_DOC, std::optional<const std::string>(item.doc().id().key()));
548
- return ctx->hooks_.before_doc_removed(
549
- ctx, item.doc().id().key(), [ctx, &item, delay, handler = std::move(handler)](auto ec) mutable {
550
- if (ec) {
551
- return handler(client_error(*ec, "before_doc_removed hook threw error"));
552
- }
553
- core::operations::remove_request req{ item.doc().id() };
554
- wrap_durable_request(req, ctx->overall().config());
555
- return ctx->cluster_ref().execute(
556
- req, [handler = std::move(handler), ctx, &item, delay](core::operations::remove_response resp) mutable {
557
- auto res = result::create_from_mutation_response(resp);
558
- return validate_remove_doc_result(ctx, res, item, std::move(handler));
559
- });
560
- });
625
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove doc {}", item.doc().id());
626
+
627
+ asio::post(asio::bind_executor(
628
+ ctx->cluster_ref().io_context(),
629
+ [this, callback = std::move(callback), ctx, &item, delay]() mutable {
630
+ auto handler = [this, ctx, &item, delay, callback = std::move(callback)](
631
+ const std::optional<client_error>& e) mutable {
632
+ if (e) {
633
+ return handle_remove_doc_error(e.value(), ctx, item, delay, std::move(callback));
634
+ }
635
+ return callback({});
636
+ };
637
+
638
+ ctx->check_expiry_during_commit_or_rollback(
639
+ STAGE_REMOVE_DOC, std::optional<const std::string>(item.doc().id().key()));
640
+ return ctx->hooks_.before_doc_removed(
641
+ ctx,
642
+ item.doc().id().key(),
643
+ [ctx, &item, delay, handler = std::move(handler)](auto ec) mutable {
644
+ if (ec) {
645
+ return handler(client_error(*ec, "before_doc_removed hook threw error"));
646
+ }
647
+ core::operations::remove_request req{ item.doc().id() };
648
+ wrap_durable_request(req, ctx->overall()->config());
649
+ return ctx->cluster_ref().execute(
650
+ req,
651
+ [handler = std::move(handler), ctx, &item, delay](
652
+ core::operations::remove_response resp) mutable {
653
+ auto res = result::create_from_mutation_response(resp);
654
+ return validate_remove_doc_result(ctx, res, item, std::move(handler));
655
+ });
656
+ });
561
657
  }));
562
658
  }
563
659
 
564
660
  void
565
- staged_mutation_queue::validate_commit_doc_result(attempt_context_impl* ctx,
661
+ staged_mutation_queue::validate_commit_doc_result(std::shared_ptr<attempt_context_impl> ctx,
566
662
  result& res,
567
663
  staged_mutation& item,
568
664
  client_error_handler&& handler)
569
665
  {
570
- try {
571
- validate_operation_result(res);
572
- } catch (const client_error& e) {
573
- return handler(e);
574
- }
575
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "commit doc result {}", res);
576
- // TODO: mutation tokens
577
- ctx->hooks_.after_doc_committed_before_saving_cas(
578
- ctx, item.doc().id().key(), [ctx, res, item, handler = std::move(handler)](auto ec) mutable {
666
+ try {
667
+ validate_operation_result(res);
668
+ } catch (const client_error& e) {
669
+ return handler(e);
670
+ }
671
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "commit doc result {}", res);
672
+ // TODO: mutation tokens
673
+ ctx->hooks_.after_doc_committed_before_saving_cas(
674
+ ctx, item.doc().id().key(), [ctx, res, item, handler = std::move(handler)](auto ec) mutable {
675
+ if (ec) {
676
+ return handler(client_error(*ec, "after_doc_committed_before_saving_cas threw error"));
677
+ }
678
+ item.doc().cas(res.cas);
679
+ return ctx->hooks_.after_doc_committed(
680
+ ctx, item.doc().id().key(), [res, item, handler = std::move(handler)](auto ec) mutable {
579
681
  if (ec) {
580
- return handler(client_error(*ec, "after_doc_committed_before_saving_cas threw error"));
682
+ return handler(client_error(*ec, "after_doc_committed threw error"));
581
683
  }
582
- item.doc().cas(res.cas);
583
- return ctx->hooks_.after_doc_committed(ctx, item.doc().id().key(), [res, item, handler = std::move(handler)](auto ec) mutable {
584
- if (ec) {
585
- return handler(client_error(*ec, "after_doc_committed threw error"));
586
- }
587
- return handler({});
588
- });
589
- });
684
+ return handler({});
685
+ });
686
+ });
590
687
  }
591
688
 
592
689
  void
593
- staged_mutation_queue::validate_remove_doc_result(attempt_context_impl* ctx,
690
+ staged_mutation_queue::validate_remove_doc_result(std::shared_ptr<attempt_context_impl> ctx,
594
691
  result& res,
595
692
  const staged_mutation& item,
596
693
  client_error_handler&& handler)
597
694
  {
598
- try {
599
- validate_operation_result(res);
600
- } catch (const client_error& e) {
601
- return handler(e);
602
- }
603
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove doc result {}", res);
604
- return ctx->hooks_.after_doc_removed_pre_retry(ctx, item.doc().id().key(), [handler = std::move(handler)](auto ec) {
605
- if (ec) {
606
- return handler(client_error(*ec, "after_doc_removed_pre_retry threw error"));
607
- }
608
- return handler({});
695
+ try {
696
+ validate_operation_result(res);
697
+ } catch (const client_error& e) {
698
+ return handler(e);
699
+ }
700
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove doc result {}", res);
701
+ return ctx->hooks_.after_doc_removed_pre_retry(
702
+ ctx, item.doc().id().key(), [handler = std::move(handler)](auto ec) {
703
+ if (ec) {
704
+ return handler(client_error(*ec, "after_doc_removed_pre_retry threw error"));
705
+ }
706
+ return handler({});
609
707
  });
610
708
  }
611
709
 
612
710
  void
613
- staged_mutation_queue::validate_rollback_insert_result(attempt_context_impl* ctx,
711
+ staged_mutation_queue::validate_rollback_insert_result(std::shared_ptr<attempt_context_impl> ctx,
614
712
  result& res,
615
713
  const staged_mutation& item,
616
714
  client_error_handler&& handler)
617
715
  {
618
- try {
619
- validate_operation_result(res);
620
- } catch (const client_error& e) {
621
- return handler(e);
622
- }
623
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback insert result {}", res);
624
- return ctx->hooks_.after_rollback_delete_inserted(ctx, item.doc().id().key(), [handler = std::move(handler)](auto ec) {
625
- if (ec) {
626
- return handler(client_error(*ec, "after_rollback_delete_insert hook threw error"));
627
- }
628
- return handler({});
716
+ try {
717
+ validate_operation_result(res);
718
+ } catch (const client_error& e) {
719
+ return handler(e);
720
+ }
721
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback insert result {}", res);
722
+ return ctx->hooks_.after_rollback_delete_inserted(
723
+ ctx, item.doc().id().key(), [handler = std::move(handler)](auto ec) {
724
+ if (ec) {
725
+ return handler(client_error(*ec, "after_rollback_delete_insert hook threw error"));
726
+ }
727
+ return handler({});
629
728
  });
630
729
  }
631
730
 
632
731
  void
633
- staged_mutation_queue::validate_rollback_remove_or_replace_result(attempt_context_impl* ctx,
634
- result& res,
635
- const staged_mutation& item,
636
- client_error_handler&& handler)
732
+ staged_mutation_queue::validate_rollback_remove_or_replace_result(
733
+ std::shared_ptr<attempt_context_impl> ctx,
734
+ result& res,
735
+ const staged_mutation& item,
736
+ client_error_handler&& handler)
637
737
  {
638
- try {
639
- validate_operation_result(res);
640
- } catch (const client_error& e) {
641
- return handler(e);
642
- }
643
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback remove or replace result {}", res);
644
- return ctx->hooks_.after_rollback_replace_or_remove(ctx, item.doc().id().key(), [handler = std::move(handler)](auto ec) {
645
- if (ec) {
646
- return handler(client_error(*ec, "after_rollback_replace_or_remove hook threw error"));
647
- }
648
- return handler({});
738
+ try {
739
+ validate_operation_result(res);
740
+ } catch (const client_error& e) {
741
+ return handler(e);
742
+ }
743
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback remove or replace result {}", res);
744
+ return ctx->hooks_.after_rollback_replace_or_remove(
745
+ ctx, item.doc().id().key(), [handler = std::move(handler)](auto ec) {
746
+ if (ec) {
747
+ return handler(client_error(*ec, "after_rollback_replace_or_remove hook threw error"));
748
+ }
749
+ return handler({});
649
750
  });
650
751
  }
651
752
 
652
753
  void
653
- staged_mutation_queue::handle_commit_doc_error(const client_error& e,
654
- attempt_context_impl* ctx,
655
- staged_mutation& item,
656
- async_constant_delay& delay,
657
- bool ambiguity_resolution_mode,
658
- bool cas_zero_mode,
659
- utils::movable_function<void(std::exception_ptr)> callback)
754
+ staged_mutation_queue::handle_commit_doc_error(
755
+ const client_error& e,
756
+ std::shared_ptr<attempt_context_impl> ctx,
757
+ staged_mutation& item,
758
+ async_constant_delay& delay,
759
+ bool ambiguity_resolution_mode,
760
+ bool cas_zero_mode,
761
+ utils::movable_function<void(std::exception_ptr)> callback)
660
762
  {
661
- const error_class ec = e.ec();
662
- try {
663
- if (ctx->expiry_overtime_mode_.load()) {
664
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "commit_doc for {} error while in overtime mode {}", item.doc().id(), e.what());
665
- throw transaction_operation_failed(FAIL_EXPIRY, "expired during commit").no_rollback().failed_post_commit();
666
- }
667
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "commit_doc for {} error {}", item.doc().id(), e.what());
668
- switch (ec) {
669
- case FAIL_AMBIGUOUS:
670
- ambiguity_resolution_mode = true;
671
- throw retry_operation("FAIL_AMBIGUOUS in commit_doc");
672
- case FAIL_CAS_MISMATCH:
673
- case FAIL_DOC_ALREADY_EXISTS:
674
- if (ambiguity_resolution_mode) {
675
- throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
676
- }
677
- ambiguity_resolution_mode = true;
678
- cas_zero_mode = true;
679
- throw retry_operation("FAIL_DOC_ALREADY_EXISTS in commit_doc");
680
- default:
681
- throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
763
+ const error_class ec = e.ec();
764
+ try {
765
+ if (ctx->expiry_overtime_mode_.load()) {
766
+ CB_ATTEMPT_CTX_LOG_TRACE(
767
+ ctx, "commit_doc for {} error while in overtime mode {}", item.doc().id(), e.what());
768
+ throw transaction_operation_failed(FAIL_EXPIRY, "expired during commit")
769
+ .no_rollback()
770
+ .failed_post_commit();
771
+ }
772
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "commit_doc for {} error {}", item.doc().id(), e.what());
773
+ switch (ec) {
774
+ case FAIL_AMBIGUOUS:
775
+ ambiguity_resolution_mode = true;
776
+ throw retry_operation("FAIL_AMBIGUOUS in commit_doc");
777
+ case FAIL_CAS_MISMATCH:
778
+ case FAIL_DOC_ALREADY_EXISTS:
779
+ if (ambiguity_resolution_mode) {
780
+ throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
682
781
  }
683
- } catch (const retry_operation&) {
684
- delay([this, callback = std::move(callback), ctx, &item, delay, ambiguity_resolution_mode, cas_zero_mode](
685
- const std::exception_ptr& exc) mutable {
686
- if (exc) {
687
- callback(exc);
688
- return;
689
- }
690
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying commit_doc");
691
- commit_doc(ctx, item, delay, std::move(callback), ambiguity_resolution_mode, cas_zero_mode);
692
- });
693
- } catch (const transaction_operation_failed&) {
694
- callback(std::current_exception());
782
+ ambiguity_resolution_mode = true;
783
+ cas_zero_mode = true;
784
+ throw retry_operation("FAIL_DOC_ALREADY_EXISTS in commit_doc");
785
+ default:
786
+ throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
695
787
  }
788
+ } catch (const retry_operation&) {
789
+ delay([this,
790
+ callback = std::move(callback),
791
+ ctx,
792
+ &item,
793
+ delay,
794
+ ambiguity_resolution_mode,
795
+ cas_zero_mode](const std::exception_ptr& exc) mutable {
796
+ if (exc) {
797
+ callback(exc);
798
+ return;
799
+ }
800
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying commit_doc");
801
+ commit_doc(ctx, item, delay, std::move(callback), ambiguity_resolution_mode, cas_zero_mode);
802
+ });
803
+ } catch (const transaction_operation_failed&) {
804
+ callback(std::current_exception());
805
+ }
696
806
  }
697
807
 
698
808
  void
699
- staged_mutation_queue::handle_remove_doc_error(const client_error& e,
700
- attempt_context_impl* ctx,
701
- const staged_mutation& item,
702
- async_constant_delay& delay,
703
- utils::movable_function<void(std::exception_ptr)> callback)
809
+ staged_mutation_queue::handle_remove_doc_error(
810
+ const client_error& e,
811
+ std::shared_ptr<attempt_context_impl> ctx,
812
+ const staged_mutation& item,
813
+ async_constant_delay& delay,
814
+ utils::movable_function<void(std::exception_ptr)> callback)
704
815
  {
705
- auto ec = e.ec();
706
- try {
707
- if (ctx->expiry_overtime_mode_.load()) {
708
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove_doc for {} error while in overtime mode {}", item.doc().id(), e.what());
709
- throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
710
- }
711
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove_doc for {} error {}", item.doc().id(), e.what());
712
- switch (ec) {
713
- case FAIL_AMBIGUOUS:
714
- throw retry_operation("remove_doc got FAIL_AMBIGUOUS");
715
- default:
716
- throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
717
- }
718
- } catch (const retry_operation&) {
719
- delay([this, callback = std::move(callback), ctx, &item, delay](const std::exception_ptr& exc) mutable {
720
- if (exc) {
721
- callback(exc);
722
- return;
723
- }
724
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying remove_doc");
725
- remove_doc(ctx, item, delay, std::move(callback));
726
- });
727
- } catch (const transaction_operation_failed&) {
728
- callback(std::current_exception());
816
+ auto ec = e.ec();
817
+ try {
818
+ if (ctx->expiry_overtime_mode_.load()) {
819
+ CB_ATTEMPT_CTX_LOG_TRACE(
820
+ ctx, "remove_doc for {} error while in overtime mode {}", item.doc().id(), e.what());
821
+ throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
822
+ }
823
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "remove_doc for {} error {}", item.doc().id(), e.what());
824
+ switch (ec) {
825
+ case FAIL_AMBIGUOUS:
826
+ throw retry_operation("remove_doc got FAIL_AMBIGUOUS");
827
+ default:
828
+ throw transaction_operation_failed(ec, e.what()).no_rollback().failed_post_commit();
729
829
  }
830
+ } catch (const retry_operation&) {
831
+ delay([this, callback = std::move(callback), ctx, &item, delay](
832
+ const std::exception_ptr& exc) mutable {
833
+ if (exc) {
834
+ callback(exc);
835
+ return;
836
+ }
837
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying remove_doc");
838
+ remove_doc(ctx, item, delay, std::move(callback));
839
+ });
840
+ } catch (const transaction_operation_failed&) {
841
+ callback(std::current_exception());
842
+ }
730
843
  }
731
844
 
732
845
  void
733
- staged_mutation_queue::handle_rollback_insert_error(const client_error& e,
734
- attempt_context_impl* ctx,
735
- const staged_mutation& item,
736
- async_exp_delay& delay,
737
- utils::movable_function<void(std::exception_ptr)> callback)
846
+ staged_mutation_queue::handle_rollback_insert_error(
847
+ const client_error& e,
848
+ std::shared_ptr<attempt_context_impl> ctx,
849
+ const staged_mutation& item,
850
+ async_exp_delay& delay,
851
+ utils::movable_function<void(std::exception_ptr)> callback)
738
852
  {
739
- auto ec = e.ec();
740
- try {
741
- if (ctx->expiry_overtime_mode_.load()) {
742
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback_insert for {} error while in overtime mode {}", item.doc().id(), e.what());
743
- throw transaction_operation_failed(FAIL_EXPIRY, std::string("expired while rolling back insert with {} ") + e.what())
744
- .no_rollback()
745
- .expired();
746
- }
747
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback_insert for {} error {}", item.doc().id(), e.what());
748
- switch (ec) {
749
- case FAIL_HARD:
750
- case FAIL_CAS_MISMATCH:
751
- throw transaction_operation_failed(ec, e.what()).no_rollback();
752
- case FAIL_EXPIRY:
753
- ctx->expiry_overtime_mode_ = true;
754
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback_insert in expiry overtime mode, retrying...");
755
- throw retry_operation("retry rollback_insert");
756
- case FAIL_DOC_NOT_FOUND:
757
- case FAIL_PATH_NOT_FOUND:
758
- // already cleaned up?
759
- callback({});
760
- return;
761
- default:
762
- throw retry_operation("retry rollback insert");
763
- }
764
- } catch (const retry_operation&) {
765
- delay([this, callback = std::move(callback), ctx, &item, delay](const std::exception_ptr& exc) mutable {
766
- if (exc) {
767
- callback(exc);
768
- return;
769
- }
770
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying rollback_insert");
771
- rollback_insert(ctx, item, delay, std::move(callback));
772
- });
773
- } catch (const transaction_operation_failed&) {
774
- callback(std::current_exception());
853
+ auto ec = e.ec();
854
+ try {
855
+ if (ctx->expiry_overtime_mode_.load()) {
856
+ CB_ATTEMPT_CTX_LOG_TRACE(
857
+ ctx, "rollback_insert for {} error while in overtime mode {}", item.doc().id(), e.what());
858
+ throw transaction_operation_failed(
859
+ FAIL_EXPIRY, std::string("expired while rolling back insert with {} ") + e.what())
860
+ .no_rollback()
861
+ .expired();
862
+ }
863
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback_insert for {} error {}", item.doc().id(), e.what());
864
+ switch (ec) {
865
+ case FAIL_HARD:
866
+ case FAIL_CAS_MISMATCH:
867
+ throw transaction_operation_failed(ec, e.what()).no_rollback();
868
+ case FAIL_EXPIRY:
869
+ ctx->expiry_overtime_mode_ = true;
870
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback_insert in expiry overtime mode, retrying...");
871
+ throw retry_operation("retry rollback_insert");
872
+ case FAIL_DOC_NOT_FOUND:
873
+ case FAIL_PATH_NOT_FOUND:
874
+ // already cleaned up?
875
+ callback({});
876
+ return;
877
+ default:
878
+ throw retry_operation("retry rollback insert");
775
879
  }
880
+ } catch (const retry_operation&) {
881
+ delay([this, callback = std::move(callback), ctx, &item, delay](
882
+ const std::exception_ptr& exc) mutable {
883
+ if (exc) {
884
+ callback(exc);
885
+ return;
886
+ }
887
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying rollback_insert");
888
+ rollback_insert(ctx, item, delay, std::move(callback));
889
+ });
890
+ } catch (const transaction_operation_failed&) {
891
+ callback(std::current_exception());
892
+ }
776
893
  }
777
894
 
778
895
  void
779
- staged_mutation_queue::handle_rollback_remove_or_replace_error(const client_error& e,
780
- attempt_context_impl* ctx,
781
- const staged_mutation& item,
782
- async_exp_delay& delay,
783
- utils::movable_function<void(std::exception_ptr)> callback)
896
+ staged_mutation_queue::handle_rollback_remove_or_replace_error(
897
+ const client_error& e,
898
+ std::shared_ptr<attempt_context_impl> ctx,
899
+ const staged_mutation& item,
900
+ async_exp_delay& delay,
901
+ utils::movable_function<void(std::exception_ptr)> callback)
784
902
  {
785
- auto ec = e.ec();
786
- try {
787
- if (ctx->expiry_overtime_mode_.load()) {
788
- CB_ATTEMPT_CTX_LOG_TRACE(
789
- ctx, "rollback_remove_or_replace_error for {} error while in overtime mode {}", item.doc().id(), e.what());
790
- throw transaction_operation_failed(FAIL_EXPIRY, std::string("expired while handling ") + e.what()).no_rollback();
791
- }
792
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "rollback_remove_or_replace_error for {} error {}", item.doc().id(), e.what());
793
- switch (ec) {
794
- case FAIL_HARD:
795
- case FAIL_DOC_NOT_FOUND:
796
- case FAIL_CAS_MISMATCH:
797
- throw transaction_operation_failed(ec, e.what()).no_rollback();
798
- case FAIL_EXPIRY:
799
- ctx->expiry_overtime_mode_ = true;
800
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "setting expiry overtime mode in {}", STAGE_ROLLBACK_DOC);
801
- throw retry_operation("retry rollback_remove_or_replace");
802
- case FAIL_PATH_NOT_FOUND:
803
- // already cleaned up?
804
- callback({});
805
- return;
806
- default:
807
- throw retry_operation("retry rollback_remove_or_replace");
808
- }
809
- } catch (const retry_operation&) {
810
- delay([this, callback = std::move(callback), ctx, &item, delay](const std::exception_ptr& exc) mutable {
811
- if (exc) {
812
- callback(exc);
813
- return;
814
- }
815
- CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying rollback_remove_or_replace");
816
- rollback_remove_or_replace(ctx, item, delay, std::move(callback));
817
- });
818
- } catch (const transaction_operation_failed&) {
819
- callback(std::current_exception());
903
+ auto ec = e.ec();
904
+ try {
905
+ if (ctx->expiry_overtime_mode_.load()) {
906
+ CB_ATTEMPT_CTX_LOG_TRACE(
907
+ ctx,
908
+ "rollback_remove_or_replace_error for {} error while in overtime mode {}",
909
+ item.doc().id(),
910
+ e.what());
911
+ throw transaction_operation_failed(FAIL_EXPIRY,
912
+ std::string("expired while handling ") + e.what())
913
+ .no_rollback();
820
914
  }
915
+ CB_ATTEMPT_CTX_LOG_TRACE(
916
+ ctx, "rollback_remove_or_replace_error for {} error {}", item.doc().id(), e.what());
917
+ switch (ec) {
918
+ case FAIL_HARD:
919
+ case FAIL_DOC_NOT_FOUND:
920
+ case FAIL_CAS_MISMATCH:
921
+ throw transaction_operation_failed(ec, e.what()).no_rollback();
922
+ case FAIL_EXPIRY:
923
+ ctx->expiry_overtime_mode_ = true;
924
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "setting expiry overtime mode in {}", STAGE_ROLLBACK_DOC);
925
+ throw retry_operation("retry rollback_remove_or_replace");
926
+ case FAIL_PATH_NOT_FOUND:
927
+ // already cleaned up?
928
+ callback({});
929
+ return;
930
+ default:
931
+ throw retry_operation("retry rollback_remove_or_replace");
932
+ }
933
+ } catch (const retry_operation&) {
934
+ delay([this, callback = std::move(callback), ctx, &item, delay](
935
+ const std::exception_ptr& exc) mutable {
936
+ if (exc) {
937
+ callback(exc);
938
+ return;
939
+ }
940
+ CB_ATTEMPT_CTX_LOG_TRACE(ctx, "retrying rollback_remove_or_replace");
941
+ rollback_remove_or_replace(ctx, item, delay, std::move(callback));
942
+ });
943
+ } catch (const transaction_operation_failed&) {
944
+ callback(std::current_exception());
945
+ }
946
+ }
947
+
948
+ auto
949
+ staged_mutation::is_staged_binary() const -> bool
950
+ {
951
+ return codec::codec_flags::has_common_flags(content_.flags,
952
+ codec::codec_flags::binary_common_flags);
821
953
  }
822
954
  } // namespace couchbase::core::transactions