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
@@ -210,14 +210,13 @@ get_projected_request::make_response(key_value_error_context&& ctx,
210
210
  response.ctx.override_ec(errc::common::parsing_failure);
211
211
  return response;
212
212
  }
213
- tao::json::value new_doc;
213
+ tao::json::value new_doc = tao::json::empty_object;
214
214
  for (const auto& projection : projections) {
215
215
  if (auto value_to_apply = subdoc_lookup(full_doc, projection)) {
216
216
  subdoc_apply_projection(new_doc, projection, *value_to_apply, preserve_array_indexes);
217
- } else {
218
- response.ctx.override_ec(errc::key_value::path_not_found);
219
- return response;
220
217
  }
218
+ // We ignore paths that were not found, similar to how we ignore them in the subdoc
219
+ // multi-lookup below.
221
220
  }
222
221
  response.value = utils::json::generate_binary(new_doc);
223
222
  }
@@ -62,13 +62,4 @@ struct get_projected_request {
62
62
  const encoded_response_type& encoded) const
63
63
  -> get_projected_response;
64
64
  };
65
-
66
65
  } // namespace couchbase::core::operations
67
-
68
- namespace couchbase::core::io::mcbp_traits
69
- {
70
- template<>
71
- struct supports_parent_span<couchbase::core::operations::get_projected_request>
72
- : public std::true_type {
73
- };
74
- } // namespace couchbase::core::io::mcbp_traits
@@ -79,9 +79,4 @@ namespace couchbase::core::io::mcbp_traits
79
79
  template<>
80
80
  struct supports_durability<couchbase::core::operations::increment_request> : public std::true_type {
81
81
  };
82
-
83
- template<>
84
- struct supports_parent_span<couchbase::core::operations::increment_request>
85
- : public std::true_type {
86
- };
87
82
  } // namespace couchbase::core::io::mcbp_traits
@@ -77,8 +77,4 @@ namespace couchbase::core::io::mcbp_traits
77
77
  template<>
78
78
  struct supports_durability<couchbase::core::operations::insert_request> : public std::true_type {
79
79
  };
80
-
81
- template<>
82
- struct supports_parent_span<couchbase::core::operations::insert_request> : public std::true_type {
83
- };
84
80
  } // namespace couchbase::core::io::mcbp_traits
@@ -72,13 +72,4 @@ struct lookup_in_request {
72
72
  const encoded_response_type& encoded) const
73
73
  -> lookup_in_response;
74
74
  };
75
-
76
75
  } // namespace couchbase::core::operations
77
- namespace couchbase::core::io::mcbp_traits
78
- {
79
-
80
- template<>
81
- struct supports_parent_span<couchbase::core::operations::lookup_in_request>
82
- : public std::true_type {
83
- };
84
- } // namespace couchbase::core::io::mcbp_traits
@@ -23,10 +23,12 @@
23
23
  #include "core/impl/subdoc/command.hxx"
24
24
  #include "core/operations/document_lookup_in.hxx"
25
25
  #include "core/operations/operation_traits.hxx"
26
+ #include "core/tracing/constants.hxx"
26
27
  #include "core/utils/movable_function.hxx"
27
28
 
28
29
  #include <couchbase/codec/encoded_value.hxx>
29
30
  #include <couchbase/error_codes.hxx>
31
+ #include <couchbase/node_id.hxx>
30
32
 
31
33
  #include <functional>
32
34
  #include <memory>
@@ -49,6 +51,7 @@ struct lookup_in_all_replicas_response {
49
51
  couchbase::cas cas{};
50
52
  bool deleted{ false };
51
53
  bool is_replica{ true };
54
+ couchbase::node_id dispatched_to_node_id{};
52
55
  };
53
56
  subdocument_error_context ctx{};
54
57
  std::vector<entry> entries{};
@@ -152,14 +155,39 @@ struct lookup_in_all_replicas_request {
152
155
  auto ctx = std::make_shared<replica_context>(std::move(h), nodes.size());
153
156
 
154
157
  for (const auto& node : nodes) {
158
+ auto subop_span = core->tracer()->create_span(
159
+ node.is_replica ? tracing::operation::mcbp_lookup_in_replica
160
+ : tracing::operation::mcbp_lookup_in,
161
+ parent_span);
162
+
163
+ if (subop_span->uses_tags()) {
164
+ subop_span->add_tag(tracing::attributes::op::service, tracing::service::key_value);
165
+ subop_span->add_tag(tracing::attributes::op::operation_name,
166
+ node.is_replica ? tracing::operation::mcbp_lookup_in_replica
167
+ : tracing::operation::mcbp_lookup_in);
168
+ subop_span->add_tag(tracing::attributes::op::bucket_name, id.bucket());
169
+ subop_span->add_tag(tracing::attributes::op::scope_name, id.scope());
170
+ subop_span->add_tag(tracing::attributes::op::collection_name, id.collection());
171
+ }
172
+
155
173
  if (node.is_replica) {
156
174
  document_id replica_id{ id };
157
175
  replica_id.node_index(node.index);
158
176
  auto replica_req = impl::lookup_in_replica_request{
159
- std::move(replica_id), specs, timeout, parent_span
177
+ std::move(replica_id),
178
+ specs,
179
+ timeout,
180
+ subop_span,
160
181
  };
161
182
  replica_req.access_deleted = access_deleted;
162
- core->execute(replica_req, [ctx](auto&& resp) {
183
+ core->execute(replica_req, [ctx, subop_span](auto&& resp) {
184
+ {
185
+ if (subop_span->uses_tags()) {
186
+ subop_span->add_tag(tracing::attributes::op::retry_count,
187
+ resp.ctx.retry_attempts());
188
+ }
189
+ subop_span->end();
190
+ }
163
191
  handler_type local_handler{};
164
192
  {
165
193
  std::scoped_lock lock(ctx->mutex_);
@@ -177,6 +205,7 @@ struct lookup_in_all_replicas_request {
177
205
  top_entry.cas = resp.cas;
178
206
  top_entry.deleted = resp.deleted;
179
207
  top_entry.is_replica = true;
208
+ top_entry.dispatched_to_node_id = resp.ctx.last_dispatched_to_node_id();
180
209
  for (auto& field : resp.fields) {
181
210
  lookup_in_all_replicas_response::entry::lookup_in_entry lookup_in_entry{};
182
211
  lookup_in_entry.path = field.path;
@@ -206,8 +235,24 @@ struct lookup_in_all_replicas_request {
206
235
  });
207
236
  } else {
208
237
  core->execute(
209
- lookup_in_request{ document_id{ id }, {}, {}, false, specs, timeout },
210
- [ctx](auto&& resp) {
238
+ lookup_in_request{
239
+ document_id{ id },
240
+ {},
241
+ {},
242
+ false,
243
+ specs,
244
+ timeout,
245
+ {},
246
+ subop_span,
247
+ },
248
+ [ctx, subop_span](auto&& resp) {
249
+ {
250
+ if (subop_span->uses_tags()) {
251
+ subop_span->add_tag(tracing::attributes::op::retry_count,
252
+ resp.ctx.retry_attempts());
253
+ }
254
+ subop_span->end();
255
+ }
211
256
  handler_type local_handler{};
212
257
  {
213
258
  std::scoped_lock lock(ctx->mutex_);
@@ -225,6 +270,7 @@ struct lookup_in_all_replicas_request {
225
270
  top_entry.cas = resp.cas;
226
271
  top_entry.deleted = resp.deleted;
227
272
  top_entry.is_replica = false;
273
+ top_entry.dispatched_to_node_id = resp.ctx.last_dispatched_to_node_id();
228
274
  for (auto& field : resp.fields) {
229
275
  lookup_in_all_replicas_response::entry::lookup_in_entry lookup_in_entry{};
230
276
  lookup_in_entry.path = field.path;
@@ -21,8 +21,10 @@
21
21
  #include "core/impl/lookup_in_replica.hxx"
22
22
  #include "core/impl/replica_utils.hxx"
23
23
  #include "core/impl/subdoc/command.hxx"
24
+ #include "core/impl/with_cancellation.hxx"
24
25
  #include "core/operations/document_lookup_in.hxx"
25
26
  #include "core/operations/operation_traits.hxx"
27
+ #include "core/tracing/constants.hxx"
26
28
  #include "core/utils/movable_function.hxx"
27
29
 
28
30
  #include <couchbase/codec/encoded_value.hxx>
@@ -139,23 +141,71 @@ struct lookup_in_any_replica_request {
139
141
  {
140
142
  }
141
143
 
144
+ void add_cancellation_token(std::shared_ptr<impl::cancellation_token> token)
145
+ {
146
+ std::scoped_lock<std::mutex> lock(cancel_tokens_mutex_);
147
+ cancel_tokens_.emplace_back(std::move(token));
148
+ }
149
+
150
+ auto get_cancellation_tokens()
151
+ -> std::vector<std::shared_ptr<impl::cancellation_token>>
152
+ {
153
+ std::vector<std::shared_ptr<impl::cancellation_token>> tokens{};
154
+ {
155
+ std::scoped_lock<std::mutex> lock(cancel_tokens_mutex_);
156
+ std::swap(tokens, cancel_tokens_);
157
+ }
158
+ return tokens;
159
+ }
160
+
142
161
  handler_type handler_;
143
162
  std::size_t expected_responses_;
144
163
  bool done_{ false };
145
164
  std::mutex mutex_{};
165
+ std::vector<std::shared_ptr<impl::cancellation_token>> cancel_tokens_{};
166
+ std::mutex cancel_tokens_mutex_{};
146
167
  };
147
168
  auto ctx = std::make_shared<replica_context>(std::move(h), nodes.size());
148
169
 
149
170
  for (const auto& node : nodes) {
171
+ auto subop_span = core->tracer()->create_span(
172
+ node.is_replica ? tracing::operation::mcbp_lookup_in_replica
173
+ : tracing::operation::mcbp_lookup_in,
174
+ parent_span);
175
+
176
+ if (subop_span->uses_tags()) {
177
+ subop_span->add_tag(tracing::attributes::op::service, tracing::service::key_value);
178
+ subop_span->add_tag(tracing::attributes::op::operation_name,
179
+ node.is_replica ? tracing::operation::mcbp_lookup_in_replica
180
+ : tracing::operation::mcbp_lookup_in);
181
+ subop_span->add_tag(tracing::attributes::op::bucket_name, id.bucket());
182
+ subop_span->add_tag(tracing::attributes::op::scope_name, id.scope());
183
+ subop_span->add_tag(tracing::attributes::op::collection_name, id.collection());
184
+ }
185
+
150
186
  if (node.is_replica) {
151
187
  document_id replica_id{ id };
152
188
  replica_id.node_index(node.index);
153
- auto replica_req = impl::lookup_in_replica_request{
154
- std::move(replica_id), specs, timeout, parent_span
189
+ impl::with_cancellation<impl::lookup_in_replica_request> replica_req{
190
+ {
191
+ std::move(replica_id),
192
+ specs,
193
+ timeout,
194
+ subop_span,
195
+ },
155
196
  };
197
+ ctx->add_cancellation_token(replica_req.cancel_token);
156
198
  replica_req.access_deleted = access_deleted;
157
- core->execute(replica_req, [ctx](auto&& resp) {
199
+ core->execute(replica_req, [ctx, subop_span](auto&& resp) {
200
+ {
201
+ if (subop_span->uses_tags()) {
202
+ subop_span->add_tag(tracing::attributes::op::retry_count,
203
+ resp.ctx.retry_attempts());
204
+ }
205
+ subop_span->end();
206
+ }
158
207
  handler_type local_handler;
208
+ std::vector<std::shared_ptr<impl::cancellation_token>> cancel_tokens;
159
209
  {
160
210
  std::scoped_lock lock(ctx->mutex_);
161
211
  if (ctx->done_) {
@@ -172,6 +222,10 @@ struct lookup_in_any_replica_request {
172
222
  }
173
223
  ctx->done_ = true;
174
224
  std::swap(local_handler, ctx->handler_);
225
+ cancel_tokens = ctx->get_cancellation_tokens();
226
+ }
227
+ for (const auto& token : cancel_tokens) {
228
+ token->cancel();
175
229
  }
176
230
  if (local_handler) {
177
231
  response_type res{};
@@ -194,46 +248,70 @@ struct lookup_in_any_replica_request {
194
248
  }
195
249
  });
196
250
  } else {
197
- core->execute(lookup_in_request{ id, {}, {}, false, specs, timeout },
198
- [ctx](auto&& resp) {
199
- handler_type local_handler{};
200
- {
201
- std::scoped_lock lock(ctx->mutex_);
202
- if (ctx->done_) {
203
- return;
204
- }
205
- --ctx->expected_responses_;
206
- if (resp.ctx.ec()) {
207
- if (ctx->expected_responses_ > 0) {
208
- // just ignore the response
209
- return;
210
- }
211
- // consider document irretrievable and give up
212
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
213
- }
214
- ctx->done_ = true;
215
- std::swap(local_handler, ctx->handler_);
216
- }
217
- if (local_handler) {
218
- auto res = response_type{};
219
- res.ctx = resp.ctx;
220
- res.cas = resp.cas;
221
- res.deleted = resp.deleted;
222
- res.is_replica = false;
223
- for (auto& field : resp.fields) {
224
- auto lookup_in_entry = lookup_in_any_replica_response::entry{};
225
- lookup_in_entry.path = field.path;
226
- lookup_in_entry.value = field.value;
227
- lookup_in_entry.status = field.status;
228
- lookup_in_entry.ec = field.ec;
229
- lookup_in_entry.exists = field.exists;
230
- lookup_in_entry.original_index = field.original_index;
231
- lookup_in_entry.opcode = field.opcode;
232
- res.fields.emplace_back(lookup_in_entry);
233
- }
234
- return local_handler(res);
235
- }
236
- });
251
+ impl::with_cancellation<lookup_in_request> req{
252
+ {
253
+ id,
254
+ {},
255
+ {},
256
+ false,
257
+ specs,
258
+ timeout,
259
+ {},
260
+ subop_span,
261
+ },
262
+ };
263
+ ctx->add_cancellation_token(req.cancel_token);
264
+ core->execute(std::move(req), [subop_span, ctx](auto&& resp) {
265
+ {
266
+ if (subop_span->uses_tags()) {
267
+ subop_span->add_tag(tracing::attributes::op::retry_count,
268
+ resp.ctx.retry_attempts());
269
+ }
270
+ subop_span->end();
271
+ }
272
+ handler_type local_handler{};
273
+ std::vector<std::shared_ptr<impl::cancellation_token>> cancel_tokens;
274
+ {
275
+ std::scoped_lock lock(ctx->mutex_);
276
+ if (ctx->done_) {
277
+ return;
278
+ }
279
+ --ctx->expected_responses_;
280
+ if (resp.ctx.ec()) {
281
+ if (ctx->expected_responses_ > 0) {
282
+ // just ignore the response
283
+ return;
284
+ }
285
+ // consider document irretrievable and give up
286
+ resp.ctx.override_ec(errc::key_value::document_irretrievable);
287
+ }
288
+ ctx->done_ = true;
289
+ std::swap(local_handler, ctx->handler_);
290
+ cancel_tokens = ctx->get_cancellation_tokens();
291
+ }
292
+ for (const auto& token : cancel_tokens) {
293
+ token->cancel();
294
+ }
295
+ if (local_handler) {
296
+ auto res = response_type{};
297
+ res.ctx = resp.ctx;
298
+ res.cas = resp.cas;
299
+ res.deleted = resp.deleted;
300
+ res.is_replica = false;
301
+ for (auto& field : resp.fields) {
302
+ auto lookup_in_entry = lookup_in_any_replica_response::entry{};
303
+ lookup_in_entry.path = field.path;
304
+ lookup_in_entry.value = field.value;
305
+ lookup_in_entry.status = field.status;
306
+ lookup_in_entry.ec = field.ec;
307
+ lookup_in_entry.exists = field.exists;
308
+ lookup_in_entry.original_index = field.original_index;
309
+ lookup_in_entry.opcode = field.opcode;
310
+ res.fields.emplace_back(lookup_in_entry);
311
+ }
312
+ return local_handler(res);
313
+ }
314
+ });
237
315
  }
238
316
  }
239
317
  });
@@ -95,9 +95,4 @@ namespace couchbase::core::io::mcbp_traits
95
95
  template<>
96
96
  struct supports_durability<couchbase::core::operations::mutate_in_request> : public std::true_type {
97
97
  };
98
-
99
- template<>
100
- struct supports_parent_span<couchbase::core::operations::mutate_in_request>
101
- : public std::true_type {
102
- };
103
98
  } // namespace couchbase::core::io::mcbp_traits
@@ -76,8 +76,4 @@ namespace couchbase::core::io::mcbp_traits
76
76
  template<>
77
77
  struct supports_durability<couchbase::core::operations::prepend_request> : public std::true_type {
78
78
  };
79
-
80
- template<>
81
- struct supports_parent_span<couchbase::core::operations::prepend_request> : public std::true_type {
82
- };
83
79
  } // namespace couchbase::core::io::mcbp_traits
@@ -20,6 +20,7 @@
20
20
  #include "core/cluster_options.hxx"
21
21
  #include "core/logger/logger.hxx"
22
22
  #include "core/operations/management/error_utils.hxx"
23
+ #include "core/utils/contains_string.hxx"
23
24
  #include "core/utils/duration_parser.hxx"
24
25
  #include "core/utils/json.hxx"
25
26
 
@@ -28,13 +29,11 @@
28
29
  #include <gsl/assert>
29
30
  #include <tao/json/value.hpp>
30
31
 
31
- #include <regex>
32
-
33
32
  namespace couchbase::core::operations
34
33
  {
35
34
  auto
36
- query_request::encode_to(query_request::encoded_request_type& encoded,
37
- http_context& context) -> std::error_code
35
+ query_request::encode_to(query_request::encoded_request_type& encoded, http_context& context)
36
+ -> std::error_code
38
37
  {
39
38
  ctx_.emplace(context);
40
39
  tao::json::value body{
@@ -209,8 +208,8 @@ query_request::encode_to(query_request::encoded_request_type& encoded,
209
208
  }
210
209
 
211
210
  auto
212
- query_request::make_response(error_context::query&& ctx,
213
- const encoded_response_type& encoded) -> query_response
211
+ query_request::make_response(error_context::query&& ctx, const encoded_response_type& encoded)
212
+ -> query_response
214
213
  {
215
214
  query_response response{ std::move(ctx) };
216
215
  response.ctx.statement = statement;
@@ -374,13 +373,14 @@ query_request::make_response(error_context::query&& ctx,
374
373
  response.ctx.ec = errc::common::index_exists;
375
374
  break;
376
375
  case 5000: /* IKey: "Internal Error" */
377
- if (std::regex_search(response.ctx.first_error_message,
378
- std::regex{ ".*[iI]ndex .*already exist.*" })) {
376
+ if (utils::contains_string(response.ctx.first_error_message, "index", true) &&
377
+ utils::contains_string(response.ctx.first_error_message, "already exist", true)) {
379
378
  response.ctx.ec = errc::common::index_exists;
380
- } else if (response.ctx.first_error_message.find("Index does not exist") !=
381
- std::string::npos ||
382
- std::regex_search(response.ctx.first_error_message,
383
- std::regex{ ".*[iI]ndex .*[nN]ot [fF]ound.*" })) {
379
+ } else if (utils::contains_string(response.ctx.first_error_message,
380
+ "Index does not exist") ||
381
+ (utils::contains_string(response.ctx.first_error_message, "index", true) &&
382
+ utils::contains_string(
383
+ response.ctx.first_error_message, "not found", true))) {
384
384
  response.ctx.ec = errc::common::index_not_found;
385
385
  } else if (response.ctx.first_error_message.find("Bucket Not Found") !=
386
386
  std::string::npos) {
@@ -130,10 +130,6 @@ template<>
130
130
  struct supports_sticky_node<couchbase::core::operations::query_request> : public std::true_type {
131
131
  };
132
132
 
133
- template<>
134
- struct supports_parent_span<couchbase::core::operations::query_request> : public std::true_type {
135
- };
136
-
137
133
  template<>
138
134
  struct supports_readonly<couchbase::core::operations::query_request> : public std::true_type {
139
135
  };
@@ -75,8 +75,4 @@ namespace couchbase::core::io::mcbp_traits
75
75
  template<>
76
76
  struct supports_durability<couchbase::core::operations::remove_request> : public std::true_type {
77
77
  };
78
-
79
- template<>
80
- struct supports_parent_span<couchbase::core::operations::remove_request> : public std::true_type {
81
- };
82
78
  } // namespace couchbase::core::io::mcbp_traits
@@ -79,8 +79,4 @@ namespace couchbase::core::io::mcbp_traits
79
79
  template<>
80
80
  struct supports_durability<couchbase::core::operations::replace_request> : public std::true_type {
81
81
  };
82
-
83
- template<>
84
- struct supports_parent_span<couchbase::core::operations::replace_request> : public std::true_type {
85
- };
86
82
  } // namespace couchbase::core::io::mcbp_traits
@@ -174,11 +174,4 @@ struct search_request {
174
174
 
175
175
  std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
176
176
  };
177
-
178
177
  } // namespace couchbase::core::operations
179
- namespace couchbase::core::io::http_traits
180
- {
181
- template<>
182
- struct supports_parent_span<couchbase::core::operations::search_request> : public std::true_type {
183
- };
184
- } // namespace couchbase::core::io::http_traits
@@ -55,11 +55,4 @@ struct touch_request {
55
55
  [[nodiscard]] auto make_response(key_value_error_context&& ctx,
56
56
  const encoded_response_type& encoded) const -> touch_response;
57
57
  };
58
-
59
58
  } // namespace couchbase::core::operations
60
- namespace couchbase::core::io::mcbp_traits
61
- {
62
- template<>
63
- struct supports_parent_span<couchbase::core::operations::touch_request> : public std::true_type {
64
- };
65
- } // namespace couchbase::core::io::mcbp_traits
@@ -57,9 +57,3 @@ struct unlock_request {
57
57
  };
58
58
 
59
59
  } // namespace couchbase::core::operations
60
- namespace couchbase::core::io::mcbp_traits
61
- {
62
- template<>
63
- struct supports_parent_span<couchbase::core::operations::unlock_request> : public std::true_type {
64
- };
65
- } // namespace couchbase::core::io::mcbp_traits
@@ -78,8 +78,4 @@ namespace couchbase::core::io::mcbp_traits
78
78
  template<>
79
79
  struct supports_durability<couchbase::core::operations::upsert_request> : public std::true_type {
80
80
  };
81
-
82
- template<>
83
- struct supports_parent_span<couchbase::core::operations::upsert_request> : public std::true_type {
84
- };
85
81
  } // namespace couchbase::core::io::mcbp_traits
@@ -15,7 +15,9 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
+ #define COUCHBASE_CXX_CLIENT_IGNORE_CORE_DEPRECATIONS
18
19
  #include "document_view.hxx"
20
+ #undef COUCHBASE_CXX_CLIENT_IGNORE_CORE_DEPRECATIONS
19
21
 
20
22
  #include "core/utils/join_strings.hxx"
21
23
  #include "core/utils/json.hxx"
@@ -17,6 +17,7 @@
17
17
 
18
18
  #pragma once
19
19
 
20
+ #include "core/deprecation_utils.hxx"
20
21
  #include "core/design_document_namespace.hxx"
21
22
  #include "core/error_context/view.hxx"
22
23
  #include "core/io/http_context.hxx"
@@ -54,7 +55,10 @@ struct document_view_response {
54
55
  std::optional<problem> error{};
55
56
  };
56
57
 
57
- struct document_view_request {
58
+ struct COUCHBASE_DEPRECATED(
59
+ "1.3.0",
60
+ "Views are deprecated in Couchbase Server 7.0+. Instead of views, use the Query "
61
+ "Service (SQL++).") document_view_request {
58
62
  using response_type = document_view_response;
59
63
  using encoded_request_type = io::http_request;
60
64
  using encoded_response_type = io::http_response;
@@ -97,19 +101,12 @@ struct document_view_request {
97
101
  std::optional<std::chrono::milliseconds> timeout{};
98
102
  std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
99
103
 
100
- [[nodiscard]] auto encode_to(encoded_request_type& encoded,
101
- http_context& context) -> std::error_code;
104
+ [[nodiscard]] auto encode_to(encoded_request_type& encoded, http_context& context)
105
+ -> std::error_code;
102
106
 
103
- [[nodiscard]] auto make_response(error_context::view&& ctx, const encoded_response_type& encoded)
104
- const -> document_view_response;
107
+ [[nodiscard]] auto make_response(error_context::view&& ctx,
108
+ const encoded_response_type& encoded) const
109
+ -> document_view_response;
105
110
  };
106
111
 
107
112
  } // namespace couchbase::core::operations
108
-
109
- namespace couchbase::core::io::http_traits
110
- {
111
- template<>
112
- struct supports_parent_span<couchbase::core::operations::document_view_request>
113
- : public std::true_type {
114
- };
115
- } // namespace couchbase::core::io::http_traits
@@ -21,6 +21,7 @@
21
21
  #include "core/io/http_context.hxx"
22
22
  #include "core/io/http_message.hxx"
23
23
  #include "core/platform/uuid.h"
24
+ #include "core/public_fwd.hxx"
24
25
  #include "core/timeout_defaults.hxx"
25
26
 
26
27
  namespace couchbase::core::operations
@@ -41,6 +42,7 @@ struct http_noop_request {
41
42
 
42
43
  std::optional<std::string> client_context_id{};
43
44
  std::optional<std::chrono::milliseconds> timeout{};
45
+ std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
44
46
 
45
47
  [[nodiscard]] auto encode_to(encoded_request_type& encoded,
46
48
  http_context& context) -> std::error_code;
@@ -22,6 +22,7 @@
22
22
  #include "core/io/http_context.hxx"
23
23
  #include "core/io/http_message.hxx"
24
24
  #include "core/platform/uuid.h"
25
+ #include "core/public_fwd.hxx"
25
26
  #include "core/timeout_defaults.hxx"
26
27
 
27
28
  namespace couchbase::core::operations::management
@@ -50,6 +51,7 @@ struct analytics_dataset_create_request {
50
51
  std::optional<std::chrono::milliseconds> timeout{};
51
52
 
52
53
  bool ignore_if_exists{ false };
54
+ std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
53
55
 
54
56
  [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded,
55
57
  http_context& context) const;
@@ -22,6 +22,7 @@
22
22
  #include "core/io/http_context.hxx"
23
23
  #include "core/io/http_message.hxx"
24
24
  #include "core/platform/uuid.h"
25
+ #include "core/public_fwd.hxx"
25
26
  #include "core/timeout_defaults.hxx"
26
27
 
27
28
  namespace couchbase::core::operations::management
@@ -47,6 +48,7 @@ struct analytics_dataset_drop_request {
47
48
  bool ignore_if_does_not_exist{ false };
48
49
  std::optional<std::string> client_context_id{};
49
50
  std::optional<std::chrono::milliseconds> timeout{};
51
+ std::shared_ptr<couchbase::tracing::request_span> parent_span{ nullptr };
50
52
 
51
53
  [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded,
52
54
  http_context& context) const;