couchbase 3.7.0 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/ext/CMakeLists.txt +4 -1
  4. data/ext/cache/extconf_include.rb +4 -3
  5. data/ext/cache/mozilla-ca-bundle.crt +66 -665
  6. data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
  7. data/ext/couchbase/CMakeLists.txt +26 -11
  8. data/ext/couchbase/cmake/APKBUILD.in +17 -1
  9. data/ext/couchbase/cmake/Bundler.cmake +9 -1
  10. data/ext/couchbase/cmake/Cache.cmake +48 -19
  11. data/ext/couchbase/cmake/CompilerOptions.cmake +3 -1
  12. data/ext/couchbase/cmake/OpenSSL.cmake +10 -2
  13. data/ext/couchbase/cmake/Packaging.cmake +48 -8
  14. data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +43 -1
  15. data/ext/couchbase/cmake/build_config.hxx.in +2 -0
  16. data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +18 -0
  17. data/ext/couchbase/cmake/tarball_glob.txt +10 -0
  18. data/ext/couchbase/core/app_telemetry_meter.cxx +1 -0
  19. data/ext/couchbase/core/app_telemetry_reporter.cxx +45 -43
  20. data/ext/couchbase/core/app_telemetry_reporter.hxx +4 -3
  21. data/ext/couchbase/core/bucket.cxx +128 -13
  22. data/ext/couchbase/core/bucket.hxx +12 -2
  23. data/ext/couchbase/core/cluster.cxx +304 -152
  24. data/ext/couchbase/core/cluster.hxx +32 -0
  25. data/ext/couchbase/core/cluster_credentials.cxx +25 -0
  26. data/ext/couchbase/core/cluster_credentials.hxx +5 -0
  27. data/ext/couchbase/core/cluster_label_listener.cxx +72 -0
  28. data/ext/couchbase/core/cluster_label_listener.hxx +46 -0
  29. data/ext/couchbase/core/cluster_options.hxx +4 -0
  30. data/ext/couchbase/core/deprecation_utils.hxx +26 -0
  31. data/ext/couchbase/core/error.hxx +27 -0
  32. data/ext/couchbase/core/error_context/base_error_context.hxx +32 -0
  33. data/ext/couchbase/core/error_context/key_value.cxx +1 -0
  34. data/ext/couchbase/core/error_context/key_value.hxx +23 -0
  35. data/ext/couchbase/core/error_context/key_value_error_context.hxx +35 -0
  36. data/ext/couchbase/core/error_context/subdocument_error_context.hxx +41 -0
  37. data/ext/couchbase/core/free_form_http_request.hxx +0 -2
  38. data/ext/couchbase/core/http_component.cxx +12 -48
  39. data/ext/couchbase/core/impl/analytics.cxx +3 -2
  40. data/ext/couchbase/core/impl/analytics.hxx +2 -1
  41. data/ext/couchbase/core/impl/analytics_index_manager.cxx +249 -137
  42. data/ext/couchbase/core/impl/binary_collection.cxx +239 -128
  43. data/ext/couchbase/core/impl/bucket_manager.cxx +87 -35
  44. data/ext/couchbase/core/impl/collection.cxx +914 -372
  45. data/ext/couchbase/core/impl/collection_manager.cxx +89 -49
  46. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +4 -4
  47. data/ext/couchbase/core/impl/error.cxx +49 -17
  48. data/ext/couchbase/core/impl/error.hxx +15 -10
  49. data/ext/couchbase/core/impl/get_all_replicas.hxx +1 -1
  50. data/ext/couchbase/core/impl/get_any_replica.hxx +2 -1
  51. data/ext/couchbase/core/impl/get_replica.hxx +2 -0
  52. data/ext/couchbase/core/impl/invoke_with_node_id.hxx +44 -0
  53. data/ext/couchbase/core/impl/lookup_in_replica.hxx +1 -1
  54. data/ext/couchbase/core/impl/node_id.cxx +110 -0
  55. data/ext/couchbase/core/impl/node_id.hxx +40 -0
  56. data/ext/couchbase/core/impl/observability_recorder.cxx +161 -0
  57. data/ext/couchbase/core/impl/observability_recorder.hxx +77 -0
  58. data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
  59. data/ext/couchbase/core/impl/public_bucket.cxx +31 -7
  60. data/ext/couchbase/core/impl/public_cluster.cxx +107 -19
  61. data/ext/couchbase/core/impl/query.cxx +6 -3
  62. data/ext/couchbase/core/impl/query.hxx +3 -1
  63. data/ext/couchbase/core/impl/query_index_manager.cxx +267 -102
  64. data/ext/couchbase/core/impl/scope.cxx +53 -11
  65. data/ext/couchbase/core/impl/search.cxx +8 -4
  66. data/ext/couchbase/core/impl/search.hxx +6 -2
  67. data/ext/couchbase/core/impl/search_index_manager.cxx +131 -41
  68. data/ext/couchbase/core/impl/with_cancellation.hxx +75 -0
  69. data/ext/couchbase/core/io/config_tracker.cxx +9 -9
  70. data/ext/couchbase/core/io/config_tracker.hxx +2 -1
  71. data/ext/couchbase/core/io/http_command.hxx +98 -49
  72. data/ext/couchbase/core/io/http_context.hxx +2 -0
  73. data/ext/couchbase/core/io/http_session.cxx +23 -10
  74. data/ext/couchbase/core/io/http_session.hxx +17 -9
  75. data/ext/couchbase/core/io/http_session_manager.hxx +245 -270
  76. data/ext/couchbase/core/io/http_traits.hxx +0 -7
  77. data/ext/couchbase/core/io/mcbp_command.hxx +123 -44
  78. data/ext/couchbase/core/io/mcbp_session.cxx +251 -26
  79. data/ext/couchbase/core/io/mcbp_session.hxx +9 -1
  80. data/ext/couchbase/core/io/mcbp_traits.hxx +0 -8
  81. data/ext/couchbase/core/io/streams.cxx +3 -3
  82. data/ext/couchbase/core/io/streams.hxx +3 -2
  83. data/ext/couchbase/core/meta/features.hxx +15 -0
  84. data/ext/couchbase/core/meta/version.cxx +13 -0
  85. data/ext/couchbase/core/meta/version.hxx +3 -0
  86. data/ext/couchbase/core/metrics/constants.hxx +23 -0
  87. data/ext/couchbase/core/metrics/logging_meter.cxx +5 -5
  88. data/ext/couchbase/core/metrics/meter_wrapper.cxx +65 -63
  89. data/ext/couchbase/core/metrics/meter_wrapper.hxx +12 -10
  90. data/ext/couchbase/core/operations/document_analytics.hxx +0 -5
  91. data/ext/couchbase/core/operations/document_append.hxx +0 -4
  92. data/ext/couchbase/core/operations/document_decrement.hxx +0 -5
  93. data/ext/couchbase/core/operations/document_exists.hxx +0 -7
  94. data/ext/couchbase/core/operations/document_get.hxx +0 -7
  95. data/ext/couchbase/core/operations/document_get_all_replicas.hxx +89 -29
  96. data/ext/couchbase/core/operations/document_get_and_lock.hxx +0 -9
  97. data/ext/couchbase/core/operations/document_get_and_touch.hxx +0 -9
  98. data/ext/couchbase/core/operations/document_get_any_replica.hxx +83 -2
  99. data/ext/couchbase/core/operations/document_get_projected.cxx +3 -4
  100. data/ext/couchbase/core/operations/document_get_projected.hxx +0 -9
  101. data/ext/couchbase/core/operations/document_increment.hxx +0 -5
  102. data/ext/couchbase/core/operations/document_insert.hxx +0 -4
  103. data/ext/couchbase/core/operations/document_lookup_in.hxx +0 -9
  104. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +50 -4
  105. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +121 -43
  106. data/ext/couchbase/core/operations/document_mutate_in.hxx +0 -5
  107. data/ext/couchbase/core/operations/document_prepend.hxx +0 -4
  108. data/ext/couchbase/core/operations/document_query.cxx +12 -12
  109. data/ext/couchbase/core/operations/document_query.hxx +0 -4
  110. data/ext/couchbase/core/operations/document_remove.hxx +0 -4
  111. data/ext/couchbase/core/operations/document_replace.hxx +0 -4
  112. data/ext/couchbase/core/operations/document_search.hxx +0 -7
  113. data/ext/couchbase/core/operations/document_touch.hxx +0 -7
  114. data/ext/couchbase/core/operations/document_unlock.hxx +0 -6
  115. data/ext/couchbase/core/operations/document_upsert.hxx +0 -4
  116. data/ext/couchbase/core/operations/document_view.cxx +2 -0
  117. data/ext/couchbase/core/operations/document_view.hxx +10 -13
  118. data/ext/couchbase/core/operations/http_noop.hxx +2 -0
  119. data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +2 -0
  120. data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +2 -0
  121. data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +2 -0
  122. data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +2 -0
  123. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +2 -0
  124. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
  125. data/ext/couchbase/core/operations/management/analytics_index_create.hxx +2 -0
  126. data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +2 -0
  127. data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +2 -0
  128. data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +2 -0
  129. data/ext/couchbase/core/operations/management/analytics_link_create.hxx +2 -0
  130. data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +2 -0
  131. data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +2 -0
  132. data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +2 -0
  133. data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +2 -0
  134. data/ext/couchbase/core/operations/management/bucket_create.hxx +2 -0
  135. data/ext/couchbase/core/operations/management/bucket_describe.hxx +2 -0
  136. data/ext/couchbase/core/operations/management/bucket_drop.hxx +2 -0
  137. data/ext/couchbase/core/operations/management/bucket_flush.hxx +2 -0
  138. data/ext/couchbase/core/operations/management/bucket_get.hxx +2 -0
  139. data/ext/couchbase/core/operations/management/bucket_get_all.hxx +2 -0
  140. data/ext/couchbase/core/operations/management/bucket_update.hxx +2 -0
  141. data/ext/couchbase/core/operations/management/change_password.hxx +2 -0
  142. data/ext/couchbase/core/operations/management/cluster_describe.hxx +2 -0
  143. data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +2 -0
  144. data/ext/couchbase/core/operations/management/collection_create.cxx +11 -11
  145. data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
  146. data/ext/couchbase/core/operations/management/collection_drop.cxx +11 -11
  147. data/ext/couchbase/core/operations/management/collection_drop.hxx +2 -0
  148. data/ext/couchbase/core/operations/management/collection_update.cxx +11 -11
  149. data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
  150. data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
  151. data/ext/couchbase/core/operations/management/error_utils.cxx +13 -7
  152. data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +2 -0
  153. data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +2 -0
  154. data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +2 -0
  155. data/ext/couchbase/core/operations/management/eventing_get_function.hxx +2 -0
  156. data/ext/couchbase/core/operations/management/eventing_get_status.hxx +2 -0
  157. data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +2 -0
  158. data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +2 -0
  159. data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +2 -0
  160. data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +2 -0
  161. data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
  162. data/ext/couchbase/core/operations/management/group_drop.hxx +2 -0
  163. data/ext/couchbase/core/operations/management/group_get.hxx +2 -0
  164. data/ext/couchbase/core/operations/management/group_get_all.hxx +2 -0
  165. data/ext/couchbase/core/operations/management/group_upsert.hxx +2 -0
  166. data/ext/couchbase/core/operations/management/query_index_build.hxx +2 -0
  167. data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +68 -30
  168. data/ext/couchbase/core/operations/management/query_index_create.cxx +5 -4
  169. data/ext/couchbase/core/operations/management/query_index_create.hxx +2 -0
  170. data/ext/couchbase/core/operations/management/query_index_drop.cxx +7 -6
  171. data/ext/couchbase/core/operations/management/query_index_drop.hxx +2 -0
  172. data/ext/couchbase/core/operations/management/query_index_get_all.hxx +4 -3
  173. data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +2 -1
  174. data/ext/couchbase/core/operations/management/role_get_all.hxx +2 -0
  175. data/ext/couchbase/core/operations/management/scope_create.cxx +12 -13
  176. data/ext/couchbase/core/operations/management/scope_create.hxx +2 -0
  177. data/ext/couchbase/core/operations/management/scope_drop.cxx +8 -9
  178. data/ext/couchbase/core/operations/management/scope_drop.hxx +2 -0
  179. data/ext/couchbase/core/operations/management/scope_get_all.hxx +2 -0
  180. data/ext/couchbase/core/operations/management/search_get_stats.hxx +2 -0
  181. data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +2 -0
  182. data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +2 -0
  183. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +2 -0
  184. data/ext/couchbase/core/operations/management/search_index_control_query.hxx +2 -0
  185. data/ext/couchbase/core/operations/management/search_index_drop.hxx +2 -0
  186. data/ext/couchbase/core/operations/management/search_index_get.hxx +2 -0
  187. data/ext/couchbase/core/operations/management/search_index_get_all.hxx +2 -0
  188. data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
  189. data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +2 -0
  190. data/ext/couchbase/core/operations/management/search_index_upsert.hxx +2 -0
  191. data/ext/couchbase/core/operations/management/user_drop.hxx +2 -0
  192. data/ext/couchbase/core/operations/management/user_get.hxx +2 -0
  193. data/ext/couchbase/core/operations/management/user_get_all.hxx +2 -0
  194. data/ext/couchbase/core/operations/management/user_upsert.hxx +2 -0
  195. data/ext/couchbase/core/operations/management/view_index_drop.hxx +2 -0
  196. data/ext/couchbase/core/operations/management/view_index_get.hxx +2 -0
  197. data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
  198. data/ext/couchbase/core/operations/management/view_index_upsert.hxx +2 -0
  199. data/ext/couchbase/core/operations/operation_traits.hxx +6 -0
  200. data/ext/couchbase/core/operations.hxx +0 -1
  201. data/ext/couchbase/core/operations_fwd.hxx +8 -0
  202. data/ext/couchbase/core/origin.cxx +67 -12
  203. data/ext/couchbase/core/origin.hxx +13 -8
  204. data/ext/couchbase/core/orphan_reporter.cxx +164 -0
  205. data/ext/couchbase/core/orphan_reporter.hxx +65 -0
  206. data/ext/couchbase/core/sasl/CMakeLists.txt +1 -0
  207. data/ext/couchbase/core/sasl/client.cc +6 -0
  208. data/ext/couchbase/core/sasl/mechanism.cc +2 -1
  209. data/ext/couchbase/core/sasl/mechanism.h +2 -1
  210. data/ext/couchbase/core/sasl/oauthbearer/oauthbearer.cc +41 -0
  211. data/ext/couchbase/core/sasl/oauthbearer/oauthbearer.h +47 -0
  212. data/ext/couchbase/core/tls_context_provider.cxx +44 -0
  213. data/ext/couchbase/core/tls_context_provider.hxx +44 -0
  214. data/ext/couchbase/core/topology/configuration.cxx +21 -0
  215. data/ext/couchbase/core/topology/configuration.hxx +28 -0
  216. data/ext/couchbase/core/tracing/attribute_helpers.hxx +45 -0
  217. data/ext/couchbase/core/tracing/constants.hxx +148 -68
  218. data/ext/couchbase/core/tracing/threshold_logging_options.hxx +0 -3
  219. data/ext/couchbase/core/tracing/threshold_logging_tracer.cxx +122 -170
  220. data/ext/couchbase/core/tracing/tracer_wrapper.cxx +17 -24
  221. data/ext/couchbase/core/tracing/tracer_wrapper.hxx +8 -10
  222. data/ext/couchbase/core/tracing/wrapper_sdk_tracer.cxx +114 -0
  223. data/ext/couchbase/core/tracing/wrapper_sdk_tracer.hxx +85 -0
  224. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +16 -14
  225. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +4 -4
  226. data/ext/couchbase/core/transactions/transactions.cxx +1 -1
  227. data/ext/couchbase/core/transactions/transactions_cleanup.cxx +1 -2
  228. data/ext/couchbase/core/utils/byteswap.hxx +12 -0
  229. data/ext/couchbase/core/utils/concurrent_fixed_priority_queue.hxx +102 -0
  230. data/ext/couchbase/core/utils/connection_string.cxx +2 -0
  231. data/ext/couchbase/core/utils/contains_string.cxx +61 -0
  232. data/ext/couchbase/core/utils/contains_string.hxx +26 -0
  233. data/ext/couchbase/couchbase/certificate_authenticator.hxx +1 -0
  234. data/ext/couchbase/couchbase/cluster.hxx +47 -0
  235. data/ext/couchbase/couchbase/cluster_options.hxx +16 -0
  236. data/ext/couchbase/couchbase/collection.hxx +133 -15
  237. data/ext/couchbase/couchbase/error.hxx +16 -0
  238. data/ext/couchbase/couchbase/error_codes.hxx +48 -48
  239. data/ext/couchbase/couchbase/jwt_authenticator.hxx +52 -0
  240. data/ext/couchbase/couchbase/metrics/meter.hxx +2 -1
  241. data/ext/couchbase/couchbase/metrics/otel_meter.hxx +75 -80
  242. data/ext/couchbase/couchbase/network_options.hxx +19 -0
  243. data/ext/couchbase/couchbase/node_id.hxx +123 -0
  244. data/ext/couchbase/couchbase/node_id_for_options.hxx +61 -0
  245. data/ext/couchbase/couchbase/node_ids_options.hxx +62 -0
  246. data/ext/couchbase/couchbase/password_authenticator.hxx +1 -0
  247. data/ext/couchbase/couchbase/result.hxx +42 -0
  248. data/ext/couchbase/couchbase/tracing/otel_tracer.hxx +15 -17
  249. data/ext/couchbase/couchbase/tracing/request_span.hxx +2 -2
  250. data/ext/couchbase.cxx +4 -0
  251. data/ext/extconf.rb +1 -0
  252. data/ext/rcb_analytics.cxx +157 -47
  253. data/ext/rcb_backend.cxx +118 -71
  254. data/ext/rcb_buckets.cxx +39 -16
  255. data/ext/rcb_collections.cxx +36 -12
  256. data/ext/rcb_crud.cxx +589 -294
  257. data/ext/rcb_hdr_histogram.cxx +219 -0
  258. data/ext/rcb_hdr_histogram.hxx +28 -0
  259. data/ext/rcb_logger.cxx +15 -17
  260. data/ext/rcb_multi.cxx +142 -59
  261. data/ext/rcb_observability.cxx +132 -0
  262. data/ext/rcb_observability.hxx +49 -0
  263. data/ext/rcb_query.cxx +77 -27
  264. data/ext/rcb_search.cxx +92 -31
  265. data/ext/rcb_users.cxx +69 -26
  266. data/ext/rcb_utils.cxx +91 -0
  267. data/ext/rcb_utils.hxx +141 -168
  268. data/ext/rcb_views.cxx +36 -12
  269. data/lib/active_support/cache/couchbase_store.rb +6 -6
  270. data/lib/couchbase/authenticator.rb +14 -0
  271. data/lib/couchbase/binary_collection.rb +37 -22
  272. data/lib/couchbase/bucket.rb +46 -31
  273. data/lib/couchbase/cluster.rb +146 -61
  274. data/lib/couchbase/collection.rb +257 -186
  275. data/lib/couchbase/datastructures/couchbase_list.rb +82 -50
  276. data/lib/couchbase/datastructures/couchbase_map.rb +87 -50
  277. data/lib/couchbase/datastructures/couchbase_queue.rb +65 -38
  278. data/lib/couchbase/datastructures/couchbase_set.rb +58 -41
  279. data/lib/couchbase/deprecations.rb +1 -1
  280. data/lib/couchbase/diagnostics.rb +8 -8
  281. data/lib/couchbase/errors.rb +7 -1
  282. data/lib/couchbase/json_transcoder.rb +1 -1
  283. data/lib/couchbase/management/analytics_index_manager.rb +90 -59
  284. data/lib/couchbase/management/bucket_manager.rb +73 -45
  285. data/lib/couchbase/management/collection_manager.rb +86 -43
  286. data/lib/couchbase/management/collection_query_index_manager.rb +56 -33
  287. data/lib/couchbase/management/query_index_manager.rb +88 -36
  288. data/lib/couchbase/management/scope_search_index_manager.rb +119 -52
  289. data/lib/couchbase/management/search_index_manager.rb +401 -178
  290. data/lib/couchbase/management/user_manager.rb +343 -174
  291. data/lib/couchbase/management/view_index_manager.rb +166 -73
  292. data/lib/couchbase/metrics/logging_meter.rb +108 -0
  293. data/lib/couchbase/metrics/logging_value_recorder.rb +50 -0
  294. data/lib/couchbase/metrics/meter.rb +27 -0
  295. data/lib/couchbase/metrics/noop_meter.rb +30 -0
  296. data/lib/couchbase/metrics/noop_value_recorder.rb +27 -0
  297. data/lib/couchbase/metrics/value_recorder.rb +25 -0
  298. data/lib/couchbase/options.rb +71 -5
  299. data/lib/couchbase/protostellar/client.rb +0 -2
  300. data/lib/couchbase/protostellar/cluster.rb +7 -0
  301. data/lib/couchbase/protostellar/generated/admin/analytics/v1/analytics_pb.rb +54 -0
  302. data/lib/couchbase/protostellar/generated/admin/analytics/v1/analytics_services_pb.rb +51 -0
  303. data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_pb.rb +5 -24
  304. data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_services_pb.rb +16 -0
  305. data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_pb.rb +5 -24
  306. data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_services_pb.rb +16 -0
  307. data/lib/couchbase/protostellar/generated/admin/query/v1/query_pb.rb +5 -24
  308. data/lib/couchbase/protostellar/generated/admin/query/v1/query_services_pb.rb +18 -0
  309. data/lib/couchbase/protostellar/generated/admin/search/v1/search_pb.rb +2 -23
  310. data/lib/couchbase/protostellar/generated/admin/search/v1/search_services_pb.rb +23 -0
  311. data/lib/couchbase/protostellar/generated/analytics/v1/analytics_pb.rb +4 -25
  312. data/lib/couchbase/protostellar/generated/analytics/v1/analytics_services_pb.rb +10 -0
  313. data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_pb.rb +6 -25
  314. data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_services_pb.rb +18 -0
  315. data/lib/couchbase/protostellar/generated/internal/xdcr/v1/xdcr_pb.rb +46 -0
  316. data/lib/couchbase/protostellar/generated/internal/xdcr/v1/xdcr_services_pb.rb +56 -0
  317. data/lib/couchbase/protostellar/generated/kv/v1/kv_pb.rb +3 -26
  318. data/lib/couchbase/protostellar/generated/kv/v1/kv_services_pb.rb +47 -0
  319. data/lib/couchbase/protostellar/generated/query/v1/query_pb.rb +4 -26
  320. data/lib/couchbase/protostellar/generated/query/v1/query_services_pb.rb +10 -0
  321. data/lib/couchbase/protostellar/generated/routing/v2/routing_pb.rb +26 -0
  322. data/lib/couchbase/protostellar/generated/routing/v2/routing_services_pb.rb +43 -0
  323. data/lib/couchbase/protostellar/generated/search/v1/search_pb.rb +5 -26
  324. data/lib/couchbase/protostellar/generated/search/v1/search_services_pb.rb +11 -0
  325. data/lib/couchbase/protostellar/generated/transactions/v1/transactions_pb.rb +2 -23
  326. data/lib/couchbase/protostellar/generated/transactions/v1/transactions_services_pb.rb +30 -0
  327. data/lib/couchbase/protostellar/generated/view/v1/view_pb.rb +2 -23
  328. data/lib/couchbase/protostellar/generated/view/v1/view_services_pb.rb +9 -0
  329. data/lib/couchbase/protostellar/request_generator/admin/collection.rb +4 -2
  330. data/lib/couchbase/protostellar/request_generator/admin/query.rb +2 -0
  331. data/lib/couchbase/protostellar/request_generator/kv.rb +1 -1
  332. data/lib/couchbase/protostellar/scope.rb +4 -0
  333. data/lib/couchbase/scope.rb +62 -48
  334. data/lib/couchbase/search_options.rb +18 -18
  335. data/lib/couchbase/tracing/noop_span.rb +29 -0
  336. data/lib/couchbase/tracing/noop_tracer.rb +29 -0
  337. data/lib/couchbase/tracing/request_span.rb +34 -0
  338. data/lib/couchbase/tracing/request_tracer.rb +28 -0
  339. data/lib/couchbase/tracing/threshold_logging_span.rb +112 -0
  340. data/lib/couchbase/tracing/threshold_logging_tracer.rb +231 -0
  341. data/lib/couchbase/utils/hdr_histogram.rb +55 -0
  342. data/lib/couchbase/utils/observability.rb +263 -0
  343. data/lib/couchbase/utils/observability_constants.rb +200 -0
  344. data/lib/couchbase/utils/stdlib_logger_adapter.rb +1 -3
  345. data/lib/couchbase/version.rb +1 -1
  346. data/lib/couchbase.rb +2 -2
  347. metadata +72 -8
  348. data/lib/couchbase/protostellar/generated/routing/v1/routing_pb.rb +0 -52
  349. data/lib/couchbase/protostellar/generated/routing/v1/routing_services_pb.rb +0 -30
@@ -17,7 +17,9 @@
17
17
 
18
18
  #pragma once
19
19
 
20
+ #include "deprecation_utils.hxx"
20
21
  #include "diagnostics.hxx"
22
+ #include "error.hxx"
21
23
  #include "operations_fwd.hxx"
22
24
  #include "origin.hxx"
23
25
  #include "topology/configuration.hxx"
@@ -37,6 +39,17 @@ namespace couchbase::core
37
39
  {
38
40
  class crud_component;
39
41
  class cluster_impl;
42
+ class cluster_label_listener;
43
+
44
+ namespace tracing
45
+ {
46
+ class tracer_wrapper;
47
+ } // namespace tracing
48
+
49
+ namespace metrics
50
+ {
51
+ class meter_wrapper;
52
+ } // namespace metrics
40
53
 
41
54
  namespace mcbp
42
55
  {
@@ -80,6 +93,8 @@ public:
80
93
  utils::movable_function<void(std::error_code, std::shared_ptr<topology::configuration>)>&&
81
94
  handler) const;
82
95
 
96
+ [[nodiscard]] auto update_credentials(const core::cluster_credentials& auth) const -> core::error;
97
+
83
98
  void execute(o::analytics_request request, mf<void(o::analytics_response)>&& handler) const;
84
99
  void execute(o::append_request request, mf<void(o::append_response)>&& handler) const;
85
100
  void execute(o::decrement_request request, mf<void(o::decrement_response)>&& handler) const;
@@ -129,6 +144,10 @@ public:
129
144
  void execute(o::replace_request_with_legacy_durability request,
130
145
  mf<void(o::replace_response)>&& handler) const;
131
146
 
147
+ COUCHBASE_DEPRECATED(
148
+ "1.3.0",
149
+ "Views are deprecated in Couchbase Server 7.0+. Instead of views, use the Query "
150
+ "Service (SQL++).")
132
151
  void execute(o::document_view_request request,
133
152
  mf<void(o::document_view_response)>&& handler) const;
134
153
  void execute(o::http_noop_request request, mf<void(o::http_noop_response)>&& handler) const;
@@ -273,6 +292,14 @@ public:
273
292
  void execute(impl::observe_seqno_request request,
274
293
  mf<void(impl::observe_seqno_response)>&& handler) const;
275
294
 
295
+ void execute(o::get_replica_request_with_cancellation request,
296
+ mf<void(impl::get_replica_response)>&& handler) const;
297
+ void execute(o::get_request_with_cancellation request, mf<void(o::get_response)>&& handler) const;
298
+ void execute(o::lookup_in_request_with_cancellation request,
299
+ mf<void(o::lookup_in_response)>&& handler) const;
300
+ void execute(o::lookup_in_replica_request_with_cancellation request,
301
+ mf<void(impl::lookup_in_replica_response)>&& handler) const;
302
+
276
303
  void execute(
277
304
  om::analytics_link_replace_request<management::analytics::azure_blob_external_link> request,
278
305
  mf<void(om::analytics_link_replace_response)>&& handler) const;
@@ -312,6 +339,11 @@ public:
312
339
 
313
340
  [[nodiscard]] auto to_string() const -> std::string;
314
341
 
342
+ [[nodiscard]] auto tracer() const -> const std::shared_ptr<tracing::tracer_wrapper>&;
343
+ [[nodiscard]] auto meter() const -> const std::shared_ptr<metrics::meter_wrapper>&;
344
+ [[nodiscard]] auto cluster_label_listener() const
345
+ -> const std::shared_ptr<cluster_label_listener>&;
346
+
315
347
  private:
316
348
  std::shared_ptr<cluster_impl> impl_;
317
349
  };
@@ -24,4 +24,29 @@ cluster_credentials::uses_certificate() const -> bool
24
24
  {
25
25
  return !certificate_path.empty();
26
26
  }
27
+
28
+ auto
29
+ cluster_credentials::requires_tls() const -> bool
30
+ {
31
+ return uses_certificate() || uses_jwt();
32
+ }
33
+
34
+ auto
35
+ cluster_credentials::uses_jwt() const -> bool
36
+ {
37
+ return !jwt_token.empty();
38
+ }
39
+
40
+ auto
41
+ cluster_credentials::uses_password() const -> bool
42
+ {
43
+ return !username.empty() && !password.empty();
44
+ }
45
+
46
+ auto
47
+ cluster_credentials::is_same_type(const cluster_credentials& other) const -> bool
48
+ {
49
+ return uses_certificate() == other.uses_certificate() && uses_jwt() == other.uses_jwt() &&
50
+ uses_password() == other.uses_password();
51
+ }
27
52
  } // namespace couchbase::core
@@ -28,9 +28,14 @@ struct cluster_credentials {
28
28
  std::string password{};
29
29
  std::string certificate_path{};
30
30
  std::string key_path{};
31
+ std::string jwt_token{};
31
32
  std::optional<std::vector<std::string>> allowed_sasl_mechanisms{};
32
33
 
33
34
  [[nodiscard]] auto uses_certificate() const -> bool;
35
+ [[nodiscard]] auto requires_tls() const -> bool;
36
+ [[nodiscard]] auto uses_jwt() const -> bool;
37
+ [[nodiscard]] auto uses_password() const -> bool;
38
+ [[nodiscard]] auto is_same_type(const cluster_credentials& other) const -> bool;
34
39
  };
35
40
 
36
41
  } // namespace couchbase::core
@@ -0,0 +1,72 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2025-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #include "cluster_label_listener.hxx"
19
+
20
+ #include <mutex>
21
+ #include <shared_mutex>
22
+
23
+ namespace couchbase::core
24
+ {
25
+ class cluster_label_listener_impl
26
+ {
27
+ public:
28
+ cluster_label_listener_impl() = default;
29
+
30
+ void update_config(topology::configuration config)
31
+ {
32
+ const std::scoped_lock lock(mutex_);
33
+ if (config.cluster_name.has_value() && (cluster_name_ != config.cluster_name)) {
34
+ cluster_name_ = std::move(config.cluster_name);
35
+ }
36
+ if (config.cluster_uuid.has_value() && (cluster_uuid_ != config.cluster_uuid)) {
37
+ cluster_uuid_ = std::move(config.cluster_uuid);
38
+ }
39
+ }
40
+
41
+ auto cluster_labels() -> cluster_label_listener::labels
42
+ {
43
+ const std::shared_lock lock(mutex_);
44
+ return cluster_label_listener::labels{
45
+ cluster_name_,
46
+ cluster_uuid_,
47
+ };
48
+ }
49
+
50
+ private:
51
+ std::shared_mutex mutex_{};
52
+ std::optional<std::string> cluster_name_{};
53
+ std::optional<std::string> cluster_uuid_{};
54
+ };
55
+
56
+ cluster_label_listener::cluster_label_listener()
57
+ : impl_{ std::make_shared<cluster_label_listener_impl>() }
58
+ {
59
+ }
60
+
61
+ void
62
+ cluster_label_listener::update_config(topology::configuration config)
63
+ {
64
+ impl_->update_config(std::move(config));
65
+ }
66
+
67
+ auto
68
+ cluster_label_listener::cluster_labels() const -> labels
69
+ {
70
+ return impl_->cluster_labels();
71
+ }
72
+ } // namespace couchbase::core
@@ -0,0 +1,46 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2025-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include "config_listener.hxx"
21
+
22
+ #include <memory>
23
+ #include <optional>
24
+ #include <string>
25
+
26
+ namespace couchbase::core
27
+ {
28
+ class cluster_label_listener_impl;
29
+
30
+ class cluster_label_listener : public config_listener
31
+ {
32
+ public:
33
+ cluster_label_listener();
34
+ void update_config(topology::configuration config) override;
35
+
36
+ struct labels {
37
+ std::optional<std::string> cluster_name;
38
+ std::optional<std::string> cluster_uuid;
39
+ };
40
+
41
+ [[nodiscard]] auto cluster_labels() const -> labels;
42
+
43
+ private:
44
+ std::shared_ptr<cluster_label_listener_impl> impl_;
45
+ };
46
+ } // namespace couchbase::core
@@ -21,6 +21,7 @@
21
21
  #include "core/io/dns_config.hxx"
22
22
  #include "core/io/ip_protocol.hxx"
23
23
  #include "core/metrics/logging_meter_options.hxx"
24
+ #include "core/orphan_reporter.hxx"
24
25
  #include "core/tracing/threshold_logging_options.hxx"
25
26
  #include "service_type.hxx"
26
27
  #include "timeout_defaults.hxx"
@@ -72,9 +73,11 @@ public:
72
73
  bool enable_compression{ true };
73
74
  bool enable_tracing{ true };
74
75
  bool enable_metrics{ true };
76
+ bool enable_orphan_reporting{ true };
75
77
  std::string network{ "auto" };
76
78
  tracing::threshold_logging_options tracing_options{};
77
79
  metrics::logging_meter_options metrics_options{};
80
+ orphan_reporter_options orphan_options{};
78
81
  tls_verify_mode tls_verify{ tls_verify_mode::peer };
79
82
  std::shared_ptr<couchbase::tracing::request_tracer> tracer{ nullptr };
80
83
  std::shared_ptr<couchbase::metrics::meter> meter{ nullptr };
@@ -110,6 +113,7 @@ public:
110
113
  };
111
114
  bool preserve_bootstrap_nodes_order{ false };
112
115
  bool allow_enterprise_analytics{ false };
116
+ bool enable_lazy_connections{ false };
113
117
  };
114
118
 
115
119
  } // namespace couchbase::core
@@ -0,0 +1,26 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #ifndef COUCHBASE_DEPRECATED
21
+ #ifdef COUCHBASE_CXX_CLIENT_IGNORE_CORE_DEPRECATIONS
22
+ #define COUCHBASE_DEPRECATED(version, msg)
23
+ #else
24
+ #define COUCHBASE_DEPRECATED(version, msg) [[deprecated("Since SDK " version ". " msg)]]
25
+ #endif
26
+ #endif
@@ -0,0 +1,27 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2022-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
6
+ * except in compliance with the License. You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software distributed under
11
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
12
+ * ANY KIND, either express or implied. See the License for the specific language governing
13
+ * permissions and limitations under the License.
14
+ */
15
+
16
+ #pragma once
17
+
18
+ #include <string>
19
+ #include <system_error>
20
+
21
+ namespace couchbase::core
22
+ {
23
+ struct error {
24
+ std::error_code ec;
25
+ std::string message;
26
+ };
27
+ } // namespace couchbase::core
@@ -17,6 +17,7 @@
17
17
 
18
18
  #pragma once
19
19
 
20
+ #include <couchbase/node_id.hxx>
20
21
  #include <couchbase/retry_reason.hxx>
21
22
 
22
23
  #include <cstdint>
@@ -74,6 +75,23 @@ public:
74
75
  {
75
76
  }
76
77
 
78
+ base_error_context(std::string operation_id,
79
+ std::error_code ec,
80
+ std::optional<std::string> last_dispatched_to,
81
+ std::optional<std::string> last_dispatched_from,
82
+ std::size_t retry_attempts,
83
+ std::set<retry_reason> retry_reasons,
84
+ couchbase::node_id last_dispatched_to_node_id)
85
+ : operation_id_{ std::move(operation_id) }
86
+ , ec_{ ec }
87
+ , last_dispatched_to_{ std::move(last_dispatched_to) }
88
+ , last_dispatched_from_{ std::move(last_dispatched_from) }
89
+ , retry_attempts_{ retry_attempts }
90
+ , retry_reasons_{ std::move(retry_reasons) }
91
+ , last_dispatched_to_node_id_{ std::move(last_dispatched_to_node_id) }
92
+ {
93
+ }
94
+
77
95
  [[nodiscard]] virtual auto operation_id() const -> const std::string&
78
96
  {
79
97
  return operation_id_;
@@ -173,6 +191,19 @@ public:
173
191
  return retry_reasons_.count(reason) > 0;
174
192
  }
175
193
 
194
+ /**
195
+ * Identity of the cluster node that last handled this request.
196
+ *
197
+ * @return node_id (default-constructed / falsy when unknown)
198
+ *
199
+ * @since 1.3.2
200
+ * @uncommitted
201
+ */
202
+ [[nodiscard]] virtual auto last_dispatched_to_node_id() const -> const couchbase::node_id&
203
+ {
204
+ return last_dispatched_to_node_id_;
205
+ }
206
+
176
207
  private:
177
208
  std::string operation_id_{};
178
209
  std::error_code ec_{};
@@ -180,5 +211,6 @@ private:
180
211
  std::optional<std::string> last_dispatched_from_{};
181
212
  std::size_t retry_attempts_{ 0 };
182
213
  std::set<retry_reason> retry_reasons_{};
214
+ couchbase::node_id last_dispatched_to_node_id_{};
183
215
  };
184
216
  } // namespace couchbase::core
@@ -51,6 +51,7 @@ make_subdocument_error_context(const key_value_error_context& ctx,
51
51
  ctx.last_dispatched_from(),
52
52
  ctx.retry_attempts(),
53
53
  ctx.retry_reasons(),
54
+ ctx.last_dispatched_to_node_id(),
54
55
  ctx.id(),
55
56
  ctx.bucket(),
56
57
  ctx.scope(),
@@ -20,6 +20,7 @@
20
20
  #include "subdocument_error_context.hxx"
21
21
 
22
22
  #include "core/document_id.hxx"
23
+ #include "core/impl/node_id.hxx"
23
24
  #include "key_value_error_context.hxx"
24
25
 
25
26
  #include <optional>
@@ -57,12 +58,34 @@ make_key_value_error_context(std::error_code ec,
57
58
  auto retry_attempts = command->request.retries.retry_attempts();
58
59
  auto retry_reasons = command->request.retries.retry_reasons();
59
60
 
61
+ // Build node_id from the session that handled this request.
62
+ // The session carries the node_uuid (empty on pre-8.0 servers),
63
+ // canonical hostname, and port — we use these to construct the
64
+ // fallback identifier when nodeUUID is unavailable.
65
+ //
66
+ // Only construct a node_id once the session has actually been bound to a
67
+ // concrete node: either a non-empty UUID, or a non-empty canonical
68
+ // hostname *and* a non-zero canonical KV port. Otherwise the fallback
69
+ // hash of ("", "", 0) would yield a truthy-but-meaningless node_id and
70
+ // break the contract that a default-constructed node_id means "unknown".
71
+ couchbase::node_id dispatched_to_node_id{};
72
+ if (command->session_) {
73
+ const auto& node_uuid = command->session_->node_uuid();
74
+ const auto& canonical_hostname = command->session_->canonical_hostname();
75
+ const auto canonical_port = command->session_->canonical_port_number();
76
+ if (!node_uuid.empty() || (!canonical_hostname.empty() && canonical_port != 0)) {
77
+ dispatched_to_node_id =
78
+ internal_node_id::build(node_uuid, canonical_hostname, canonical_port);
79
+ }
80
+ }
81
+
60
82
  return { command->id_,
61
83
  ec,
62
84
  command->last_dispatched_to_,
63
85
  command->last_dispatched_from_,
64
86
  retry_attempts,
65
87
  std::move(retry_reasons),
88
+ std::move(dispatched_to_node_id),
66
89
  key,
67
90
  bucket,
68
91
  scope,
@@ -101,6 +101,41 @@ public:
101
101
  {
102
102
  }
103
103
 
104
+ key_value_error_context(std::string operation_id,
105
+ std::error_code ec,
106
+ std::optional<std::string> last_dispatched_to,
107
+ std::optional<std::string> last_dispatched_from,
108
+ std::size_t retry_attempts,
109
+ std::set<retry_reason> retry_reasons,
110
+ couchbase::node_id dispatched_to_node_id,
111
+ std::string id,
112
+ std::string bucket,
113
+ std::string scope,
114
+ std::string collection,
115
+ std::uint32_t opaque,
116
+ std::optional<key_value_status_code> status_code,
117
+ couchbase::cas cas,
118
+ std::optional<key_value_error_map_info> error_map_info,
119
+ std::optional<key_value_extended_error_info> extended_error_info)
120
+ : base_error_context{ std::move(operation_id),
121
+ ec,
122
+ std::move(last_dispatched_to),
123
+ std::move(last_dispatched_from),
124
+ retry_attempts,
125
+ std::move(retry_reasons),
126
+ std::move(dispatched_to_node_id) }
127
+ , id_{ std::move(id) }
128
+ , bucket_{ std::move(bucket) }
129
+ , scope_{ std::move(scope) }
130
+ , collection_{ std::move(collection) }
131
+ , opaque_{ opaque }
132
+ , status_code_{ status_code }
133
+ , cas_{ cas }
134
+ , error_map_info_{ std::move(error_map_info) }
135
+ , extended_error_info_{ std::move(extended_error_info) }
136
+ {
137
+ }
138
+
104
139
  /**
105
140
  * Returns identifier (key) of the document referenced in the operation.
106
141
  *
@@ -102,6 +102,47 @@ public:
102
102
  {
103
103
  }
104
104
 
105
+ subdocument_error_context(std::string operation_id,
106
+ std::error_code ec,
107
+ std::optional<std::string> last_dispatched_to,
108
+ std::optional<std::string> last_dispatched_from,
109
+ std::size_t retry_attempts,
110
+ std::set<retry_reason> retry_reasons,
111
+ couchbase::node_id dispatched_to_node_id,
112
+ std::string id,
113
+ std::string bucket,
114
+ std::string scope,
115
+ std::string collection,
116
+ std::uint32_t opaque,
117
+ std::optional<key_value_status_code> status_code,
118
+ couchbase::cas cas,
119
+ std::optional<key_value_error_map_info> error_map_info,
120
+ std::optional<key_value_extended_error_info> extended_error_info,
121
+ std::optional<std::string> first_error_path,
122
+ std::optional<std::uint64_t> first_error_index,
123
+ bool deleted)
124
+ : key_value_error_context{ std::move(operation_id),
125
+ ec,
126
+ std::move(last_dispatched_to),
127
+ std::move(last_dispatched_from),
128
+ retry_attempts,
129
+ std::move(retry_reasons),
130
+ std::move(dispatched_to_node_id),
131
+ std::move(id),
132
+ std::move(bucket),
133
+ std::move(scope),
134
+ std::move(collection),
135
+ opaque,
136
+ status_code,
137
+ cas,
138
+ std::move(error_map_info),
139
+ std::move(extended_error_info) }
140
+ , first_error_path_{ std::move(first_error_path) }
141
+ , first_error_index_{ first_error_index }
142
+ , deleted_{ deleted }
143
+ {
144
+ }
145
+
105
146
  /**
106
147
  * Returns path of the operation that generated first error
107
148
  *
@@ -48,8 +48,6 @@ public:
48
48
  std::string method{};
49
49
  std::string endpoint{};
50
50
  std::string path{};
51
- std::string username{};
52
- std::string password{};
53
51
  std::string body{};
54
52
  std::map<std::string, std::string> headers{};
55
53
  std::string content_type{};