couchbase 4.3.1 → 4.4.0

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