couchbase 3.7.0 → 3.8.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 (286) 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 -93
  6. data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
  7. data/ext/couchbase/CMakeLists.txt +24 -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/free_form_http_request.hxx +0 -2
  33. data/ext/couchbase/core/http_component.cxx +12 -48
  34. data/ext/couchbase/core/impl/analytics.cxx +3 -2
  35. data/ext/couchbase/core/impl/analytics.hxx +2 -1
  36. data/ext/couchbase/core/impl/analytics_index_manager.cxx +249 -137
  37. data/ext/couchbase/core/impl/binary_collection.cxx +134 -58
  38. data/ext/couchbase/core/impl/bucket_manager.cxx +87 -35
  39. data/ext/couchbase/core/impl/collection.cxx +560 -245
  40. data/ext/couchbase/core/impl/collection_manager.cxx +89 -49
  41. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +4 -4
  42. data/ext/couchbase/core/impl/error.cxx +20 -13
  43. data/ext/couchbase/core/impl/error.hxx +15 -10
  44. data/ext/couchbase/core/impl/get_all_replicas.hxx +1 -1
  45. data/ext/couchbase/core/impl/get_any_replica.hxx +2 -1
  46. data/ext/couchbase/core/impl/get_replica.hxx +2 -0
  47. data/ext/couchbase/core/impl/lookup_in_replica.hxx +1 -1
  48. data/ext/couchbase/core/impl/observability_recorder.cxx +161 -0
  49. data/ext/couchbase/core/impl/observability_recorder.hxx +77 -0
  50. data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
  51. data/ext/couchbase/core/impl/public_bucket.cxx +31 -7
  52. data/ext/couchbase/core/impl/public_cluster.cxx +107 -19
  53. data/ext/couchbase/core/impl/query.cxx +6 -3
  54. data/ext/couchbase/core/impl/query.hxx +3 -1
  55. data/ext/couchbase/core/impl/query_index_manager.cxx +267 -102
  56. data/ext/couchbase/core/impl/scope.cxx +53 -11
  57. data/ext/couchbase/core/impl/search.cxx +8 -4
  58. data/ext/couchbase/core/impl/search.hxx +6 -2
  59. data/ext/couchbase/core/impl/search_index_manager.cxx +131 -41
  60. data/ext/couchbase/core/impl/with_cancellation.hxx +75 -0
  61. data/ext/couchbase/core/io/config_tracker.cxx +9 -9
  62. data/ext/couchbase/core/io/config_tracker.hxx +2 -1
  63. data/ext/couchbase/core/io/http_command.hxx +98 -49
  64. data/ext/couchbase/core/io/http_context.hxx +2 -0
  65. data/ext/couchbase/core/io/http_session.cxx +23 -10
  66. data/ext/couchbase/core/io/http_session.hxx +17 -9
  67. data/ext/couchbase/core/io/http_session_manager.hxx +163 -228
  68. data/ext/couchbase/core/io/http_traits.hxx +0 -7
  69. data/ext/couchbase/core/io/mcbp_command.hxx +123 -44
  70. data/ext/couchbase/core/io/mcbp_session.cxx +251 -26
  71. data/ext/couchbase/core/io/mcbp_session.hxx +9 -1
  72. data/ext/couchbase/core/io/mcbp_traits.hxx +0 -8
  73. data/ext/couchbase/core/io/streams.cxx +3 -3
  74. data/ext/couchbase/core/io/streams.hxx +3 -2
  75. data/ext/couchbase/core/meta/features.hxx +15 -0
  76. data/ext/couchbase/core/meta/version.cxx +13 -0
  77. data/ext/couchbase/core/meta/version.hxx +3 -0
  78. data/ext/couchbase/core/metrics/constants.hxx +23 -0
  79. data/ext/couchbase/core/metrics/logging_meter.cxx +5 -5
  80. data/ext/couchbase/core/metrics/meter_wrapper.cxx +65 -63
  81. data/ext/couchbase/core/metrics/meter_wrapper.hxx +12 -10
  82. data/ext/couchbase/core/operations/document_analytics.hxx +0 -5
  83. data/ext/couchbase/core/operations/document_append.hxx +0 -4
  84. data/ext/couchbase/core/operations/document_decrement.hxx +0 -5
  85. data/ext/couchbase/core/operations/document_exists.hxx +0 -7
  86. data/ext/couchbase/core/operations/document_get.hxx +0 -7
  87. data/ext/couchbase/core/operations/document_get_all_replicas.hxx +77 -27
  88. data/ext/couchbase/core/operations/document_get_and_lock.hxx +0 -9
  89. data/ext/couchbase/core/operations/document_get_and_touch.hxx +0 -9
  90. data/ext/couchbase/core/operations/document_get_any_replica.hxx +83 -2
  91. data/ext/couchbase/core/operations/document_get_projected.hxx +0 -9
  92. data/ext/couchbase/core/operations/document_increment.hxx +0 -5
  93. data/ext/couchbase/core/operations/document_insert.hxx +0 -4
  94. data/ext/couchbase/core/operations/document_lookup_in.hxx +0 -9
  95. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +46 -4
  96. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +121 -43
  97. data/ext/couchbase/core/operations/document_mutate_in.hxx +0 -5
  98. data/ext/couchbase/core/operations/document_prepend.hxx +0 -4
  99. data/ext/couchbase/core/operations/document_query.hxx +0 -4
  100. data/ext/couchbase/core/operations/document_remove.hxx +0 -4
  101. data/ext/couchbase/core/operations/document_replace.hxx +0 -4
  102. data/ext/couchbase/core/operations/document_search.hxx +0 -7
  103. data/ext/couchbase/core/operations/document_touch.hxx +0 -7
  104. data/ext/couchbase/core/operations/document_unlock.hxx +0 -6
  105. data/ext/couchbase/core/operations/document_upsert.hxx +0 -4
  106. data/ext/couchbase/core/operations/document_view.cxx +2 -0
  107. data/ext/couchbase/core/operations/document_view.hxx +10 -13
  108. data/ext/couchbase/core/operations/http_noop.hxx +2 -0
  109. data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +2 -0
  110. data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +2 -0
  111. data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +2 -0
  112. data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +2 -0
  113. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +2 -0
  114. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
  115. data/ext/couchbase/core/operations/management/analytics_index_create.hxx +2 -0
  116. data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +2 -0
  117. data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +2 -0
  118. data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +2 -0
  119. data/ext/couchbase/core/operations/management/analytics_link_create.hxx +2 -0
  120. data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +2 -0
  121. data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +2 -0
  122. data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +2 -0
  123. data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +2 -0
  124. data/ext/couchbase/core/operations/management/bucket_create.hxx +2 -0
  125. data/ext/couchbase/core/operations/management/bucket_describe.hxx +2 -0
  126. data/ext/couchbase/core/operations/management/bucket_drop.hxx +2 -0
  127. data/ext/couchbase/core/operations/management/bucket_flush.hxx +2 -0
  128. data/ext/couchbase/core/operations/management/bucket_get.hxx +2 -0
  129. data/ext/couchbase/core/operations/management/bucket_get_all.hxx +2 -0
  130. data/ext/couchbase/core/operations/management/bucket_update.hxx +2 -0
  131. data/ext/couchbase/core/operations/management/change_password.hxx +2 -0
  132. data/ext/couchbase/core/operations/management/cluster_describe.hxx +2 -0
  133. data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +2 -0
  134. data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
  135. data/ext/couchbase/core/operations/management/collection_drop.hxx +2 -0
  136. data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
  137. data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
  138. data/ext/couchbase/core/operations/management/error_utils.cxx +4 -1
  139. data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +2 -0
  140. data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +2 -0
  141. data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +2 -0
  142. data/ext/couchbase/core/operations/management/eventing_get_function.hxx +2 -0
  143. data/ext/couchbase/core/operations/management/eventing_get_status.hxx +2 -0
  144. data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +2 -0
  145. data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +2 -0
  146. data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +2 -0
  147. data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +2 -0
  148. data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
  149. data/ext/couchbase/core/operations/management/group_drop.hxx +2 -0
  150. data/ext/couchbase/core/operations/management/group_get.hxx +2 -0
  151. data/ext/couchbase/core/operations/management/group_get_all.hxx +2 -0
  152. data/ext/couchbase/core/operations/management/group_upsert.hxx +2 -0
  153. data/ext/couchbase/core/operations/management/query_index_build.hxx +2 -0
  154. data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +68 -30
  155. data/ext/couchbase/core/operations/management/query_index_create.hxx +2 -0
  156. data/ext/couchbase/core/operations/management/query_index_drop.hxx +2 -0
  157. data/ext/couchbase/core/operations/management/query_index_get_all.hxx +4 -3
  158. data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +2 -1
  159. data/ext/couchbase/core/operations/management/role_get_all.hxx +2 -0
  160. data/ext/couchbase/core/operations/management/scope_create.hxx +2 -0
  161. data/ext/couchbase/core/operations/management/scope_drop.hxx +2 -0
  162. data/ext/couchbase/core/operations/management/scope_get_all.hxx +2 -0
  163. data/ext/couchbase/core/operations/management/search_get_stats.hxx +2 -0
  164. data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +2 -0
  165. data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +2 -0
  166. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +2 -0
  167. data/ext/couchbase/core/operations/management/search_index_control_query.hxx +2 -0
  168. data/ext/couchbase/core/operations/management/search_index_drop.hxx +2 -0
  169. data/ext/couchbase/core/operations/management/search_index_get.hxx +2 -0
  170. data/ext/couchbase/core/operations/management/search_index_get_all.hxx +2 -0
  171. data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
  172. data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +2 -0
  173. data/ext/couchbase/core/operations/management/search_index_upsert.hxx +2 -0
  174. data/ext/couchbase/core/operations/management/user_drop.hxx +2 -0
  175. data/ext/couchbase/core/operations/management/user_get.hxx +2 -0
  176. data/ext/couchbase/core/operations/management/user_get_all.hxx +2 -0
  177. data/ext/couchbase/core/operations/management/user_upsert.hxx +2 -0
  178. data/ext/couchbase/core/operations/management/view_index_drop.hxx +2 -0
  179. data/ext/couchbase/core/operations/management/view_index_get.hxx +2 -0
  180. data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
  181. data/ext/couchbase/core/operations/management/view_index_upsert.hxx +2 -0
  182. data/ext/couchbase/core/operations/operation_traits.hxx +6 -0
  183. data/ext/couchbase/core/operations.hxx +0 -1
  184. data/ext/couchbase/core/operations_fwd.hxx +8 -0
  185. data/ext/couchbase/core/origin.cxx +67 -12
  186. data/ext/couchbase/core/origin.hxx +13 -8
  187. data/ext/couchbase/core/orphan_reporter.cxx +164 -0
  188. data/ext/couchbase/core/orphan_reporter.hxx +65 -0
  189. data/ext/couchbase/core/sasl/CMakeLists.txt +1 -0
  190. data/ext/couchbase/core/sasl/client.cc +6 -0
  191. data/ext/couchbase/core/sasl/mechanism.cc +2 -1
  192. data/ext/couchbase/core/sasl/mechanism.h +2 -1
  193. data/ext/couchbase/core/sasl/oauthbearer/oauthbearer.cc +41 -0
  194. data/ext/couchbase/core/sasl/oauthbearer/oauthbearer.h +47 -0
  195. data/ext/couchbase/core/tls_context_provider.cxx +44 -0
  196. data/ext/couchbase/core/tls_context_provider.hxx +44 -0
  197. data/ext/couchbase/core/tracing/attribute_helpers.hxx +45 -0
  198. data/ext/couchbase/core/tracing/constants.hxx +148 -68
  199. data/ext/couchbase/core/tracing/threshold_logging_options.hxx +0 -3
  200. data/ext/couchbase/core/tracing/threshold_logging_tracer.cxx +122 -170
  201. data/ext/couchbase/core/tracing/tracer_wrapper.cxx +17 -24
  202. data/ext/couchbase/core/tracing/tracer_wrapper.hxx +8 -10
  203. data/ext/couchbase/core/tracing/wrapper_sdk_tracer.cxx +114 -0
  204. data/ext/couchbase/core/tracing/wrapper_sdk_tracer.hxx +85 -0
  205. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +16 -14
  206. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +4 -4
  207. data/ext/couchbase/core/transactions/transactions.cxx +1 -1
  208. data/ext/couchbase/core/transactions/transactions_cleanup.cxx +1 -2
  209. data/ext/couchbase/core/utils/byteswap.hxx +12 -0
  210. data/ext/couchbase/core/utils/concurrent_fixed_priority_queue.hxx +102 -0
  211. data/ext/couchbase/core/utils/connection_string.cxx +2 -0
  212. data/ext/couchbase/couchbase/certificate_authenticator.hxx +1 -0
  213. data/ext/couchbase/couchbase/cluster.hxx +47 -0
  214. data/ext/couchbase/couchbase/cluster_options.hxx +16 -0
  215. data/ext/couchbase/couchbase/collection.hxx +60 -15
  216. data/ext/couchbase/couchbase/error_codes.hxx +48 -48
  217. data/ext/couchbase/couchbase/jwt_authenticator.hxx +52 -0
  218. data/ext/couchbase/couchbase/metrics/meter.hxx +2 -1
  219. data/ext/couchbase/couchbase/metrics/otel_meter.hxx +75 -80
  220. data/ext/couchbase/couchbase/network_options.hxx +19 -0
  221. data/ext/couchbase/couchbase/password_authenticator.hxx +1 -0
  222. data/ext/couchbase/couchbase/tracing/otel_tracer.hxx +15 -17
  223. data/ext/couchbase/couchbase/tracing/request_span.hxx +2 -2
  224. data/ext/couchbase.cxx +4 -0
  225. data/ext/extconf.rb +1 -0
  226. data/ext/rcb_analytics.cxx +157 -47
  227. data/ext/rcb_backend.cxx +118 -71
  228. data/ext/rcb_buckets.cxx +39 -16
  229. data/ext/rcb_collections.cxx +36 -12
  230. data/ext/rcb_crud.cxx +587 -294
  231. data/ext/rcb_hdr_histogram.cxx +219 -0
  232. data/ext/rcb_hdr_histogram.hxx +28 -0
  233. data/ext/rcb_multi.cxx +142 -59
  234. data/ext/rcb_observability.cxx +132 -0
  235. data/ext/rcb_observability.hxx +49 -0
  236. data/ext/rcb_query.cxx +77 -27
  237. data/ext/rcb_search.cxx +92 -31
  238. data/ext/rcb_users.cxx +69 -26
  239. data/ext/rcb_utils.cxx +91 -0
  240. data/ext/rcb_utils.hxx +141 -168
  241. data/ext/rcb_views.cxx +36 -12
  242. data/lib/active_support/cache/couchbase_store.rb +6 -6
  243. data/lib/couchbase/authenticator.rb +14 -0
  244. data/lib/couchbase/binary_collection.rb +37 -22
  245. data/lib/couchbase/bucket.rb +46 -31
  246. data/lib/couchbase/cluster.rb +146 -61
  247. data/lib/couchbase/collection.rb +257 -186
  248. data/lib/couchbase/datastructures/couchbase_list.rb +81 -50
  249. data/lib/couchbase/datastructures/couchbase_map.rb +86 -50
  250. data/lib/couchbase/datastructures/couchbase_queue.rb +64 -38
  251. data/lib/couchbase/datastructures/couchbase_set.rb +57 -41
  252. data/lib/couchbase/deprecations.rb +1 -1
  253. data/lib/couchbase/diagnostics.rb +8 -8
  254. data/lib/couchbase/errors.rb +6 -0
  255. data/lib/couchbase/management/analytics_index_manager.rb +90 -59
  256. data/lib/couchbase/management/bucket_manager.rb +73 -45
  257. data/lib/couchbase/management/collection_manager.rb +86 -43
  258. data/lib/couchbase/management/collection_query_index_manager.rb +56 -33
  259. data/lib/couchbase/management/query_index_manager.rb +88 -36
  260. data/lib/couchbase/management/scope_search_index_manager.rb +119 -52
  261. data/lib/couchbase/management/search_index_manager.rb +401 -178
  262. data/lib/couchbase/management/user_manager.rb +343 -174
  263. data/lib/couchbase/management/view_index_manager.rb +166 -73
  264. data/lib/couchbase/metrics/logging_meter.rb +108 -0
  265. data/lib/couchbase/metrics/logging_value_recorder.rb +50 -0
  266. data/lib/couchbase/metrics/meter.rb +27 -0
  267. data/lib/couchbase/metrics/noop_meter.rb +30 -0
  268. data/lib/couchbase/metrics/noop_value_recorder.rb +27 -0
  269. data/lib/couchbase/metrics/value_recorder.rb +25 -0
  270. data/lib/couchbase/options.rb +69 -3
  271. data/lib/couchbase/protostellar/cluster.rb +3 -0
  272. data/lib/couchbase/scope.rb +62 -48
  273. data/lib/couchbase/search_options.rb +18 -18
  274. data/lib/couchbase/tracing/noop_span.rb +29 -0
  275. data/lib/couchbase/tracing/noop_tracer.rb +29 -0
  276. data/lib/couchbase/tracing/request_span.rb +34 -0
  277. data/lib/couchbase/tracing/request_tracer.rb +28 -0
  278. data/lib/couchbase/tracing/threshold_logging_span.rb +112 -0
  279. data/lib/couchbase/tracing/threshold_logging_tracer.rb +231 -0
  280. data/lib/couchbase/utils/hdr_histogram.rb +55 -0
  281. data/lib/couchbase/utils/observability.rb +257 -0
  282. data/lib/couchbase/utils/observability_constants.rb +200 -0
  283. data/lib/couchbase/utils/stdlib_logger_adapter.rb +1 -3
  284. data/lib/couchbase/version.rb +1 -1
  285. data/lib/couchbase.rb +2 -2
  286. metadata +58 -6
data/ext/rcb_search.cxx CHANGED
@@ -39,6 +39,7 @@
39
39
  #include <ruby.h>
40
40
 
41
41
  #include "rcb_backend.hxx"
42
+ #include "rcb_observability.hxx"
42
43
  #include "rcb_utils.hxx"
43
44
 
44
45
  namespace couchbase::ruby
@@ -71,7 +72,11 @@ cb_extract_search_index(VALUE index, const core::management::search::index& idx)
71
72
  }
72
73
 
73
74
  VALUE
74
- cb_Backend_search_index_get_all(VALUE self, VALUE bucket, VALUE scope, VALUE options)
75
+ cb_Backend_search_index_get_all(VALUE self,
76
+ VALUE bucket,
77
+ VALUE scope,
78
+ VALUE options,
79
+ VALUE observability_handler)
75
80
  {
76
81
  auto cluster = cb_backend_to_core_api_cluster(self);
77
82
 
@@ -87,12 +92,14 @@ cb_Backend_search_index_get_all(VALUE self, VALUE bucket, VALUE scope, VALUE opt
87
92
  }
88
93
 
89
94
  cb_extract_timeout(req, options);
95
+ auto parent_span = cb_create_parent_span(req, self);
90
96
  std::promise<core::operations::management::search_index_get_all_response> promise;
91
97
  auto f = promise.get_future();
92
98
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
93
99
  promise.set_value(std::forward<decltype(resp)>(resp));
94
100
  });
95
101
  auto resp = cb_wait_for_future(f);
102
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
96
103
  if (resp.ctx.ec) {
97
104
  cb_throw_error(resp.ctx, "unable to get list of the search indexes");
98
105
  }
@@ -117,7 +124,12 @@ cb_Backend_search_index_get_all(VALUE self, VALUE bucket, VALUE scope, VALUE opt
117
124
  }
118
125
 
119
126
  VALUE
120
- cb_Backend_search_index_get(VALUE self, VALUE bucket, VALUE scope, VALUE index_name, VALUE timeout)
127
+ cb_Backend_search_index_get(VALUE self,
128
+ VALUE bucket,
129
+ VALUE scope,
130
+ VALUE index_name,
131
+ VALUE timeout,
132
+ VALUE observability_handler)
121
133
  {
122
134
  auto cluster = cb_backend_to_core_api_cluster(self);
123
135
 
@@ -135,12 +147,14 @@ cb_Backend_search_index_get(VALUE self, VALUE bucket, VALUE scope, VALUE index_n
135
147
  }
136
148
  cb_extract_timeout(req, timeout);
137
149
  req.index_name = cb_string_new(index_name);
150
+ auto parent_span = cb_create_parent_span(req, self);
138
151
  std::promise<core::operations::management::search_index_get_response> promise;
139
152
  auto f = promise.get_future();
140
153
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
141
154
  promise.set_value(std::forward<decltype(resp)>(resp));
142
155
  });
143
156
  auto resp = cb_wait_for_future(f);
157
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
144
158
  if (resp.ctx.ec) {
145
159
  if (resp.error.empty()) {
146
160
  cb_throw_error(resp.ctx, fmt::format("unable to get search index \"{}\"", req.index_name));
@@ -167,7 +181,8 @@ cb_Backend_search_index_upsert(VALUE self,
167
181
  VALUE bucket,
168
182
  VALUE scope,
169
183
  VALUE index_definition,
170
- VALUE timeout)
184
+ VALUE timeout,
185
+ VALUE observability_handler)
171
186
  {
172
187
  auto cluster = cb_backend_to_core_api_cluster(self);
173
188
 
@@ -233,12 +248,15 @@ cb_Backend_search_index_upsert(VALUE self,
233
248
  req.index.plan_params_json = cb_string_new(plan_params);
234
249
  }
235
250
 
251
+ auto parent_span = cb_create_parent_span(req, self);
252
+
236
253
  std::promise<core::operations::management::search_index_upsert_response> promise;
237
254
  auto f = promise.get_future();
238
255
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
239
256
  promise.set_value(std::forward<decltype(resp)>(resp));
240
257
  });
241
258
  auto resp = cb_wait_for_future(f);
259
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
242
260
  if (resp.ctx.ec) {
243
261
  if (resp.error.empty()) {
244
262
  cb_throw_error(resp.ctx,
@@ -262,7 +280,12 @@ cb_Backend_search_index_upsert(VALUE self,
262
280
  }
263
281
 
264
282
  VALUE
265
- cb_Backend_search_index_drop(VALUE self, VALUE bucket, VALUE scope, VALUE index_name, VALUE timeout)
283
+ cb_Backend_search_index_drop(VALUE self,
284
+ VALUE bucket,
285
+ VALUE scope,
286
+ VALUE index_name,
287
+ VALUE timeout,
288
+ VALUE observability_handler)
266
289
  {
267
290
  auto cluster = cb_backend_to_core_api_cluster(self);
268
291
 
@@ -280,12 +303,14 @@ cb_Backend_search_index_drop(VALUE self, VALUE bucket, VALUE scope, VALUE index_
280
303
  }
281
304
  cb_extract_timeout(req, timeout);
282
305
  req.index_name = cb_string_new(index_name);
306
+ auto parent_span = cb_create_parent_span(req, self);
283
307
  std::promise<core::operations::management::search_index_drop_response> promise;
284
308
  auto f = promise.get_future();
285
309
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
286
310
  promise.set_value(std::forward<decltype(resp)>(resp));
287
311
  });
288
312
  auto resp = cb_wait_for_future(f);
313
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
289
314
  if (resp.ctx.ec) {
290
315
  if (resp.error.empty()) {
291
316
  cb_throw_error(resp.ctx,
@@ -313,7 +338,8 @@ cb_Backend_search_index_get_documents_count(VALUE self,
313
338
  VALUE bucket,
314
339
  VALUE scope,
315
340
  VALUE index_name,
316
- VALUE timeout)
341
+ VALUE timeout,
342
+ VALUE observability_handler)
317
343
  {
318
344
  auto cluster = cb_backend_to_core_api_cluster(self);
319
345
 
@@ -331,12 +357,14 @@ cb_Backend_search_index_get_documents_count(VALUE self,
331
357
  }
332
358
  cb_extract_timeout(req, timeout);
333
359
  req.index_name = cb_string_new(index_name);
360
+ auto parent_span = cb_create_parent_span(req, self);
334
361
  std::promise<core::operations::management::search_index_get_documents_count_response> promise;
335
362
  auto f = promise.get_future();
336
363
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
337
364
  promise.set_value(std::forward<decltype(resp)>(resp));
338
365
  });
339
366
  auto resp = cb_wait_for_future(f);
367
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
340
368
  if (resp.ctx.ec) {
341
369
  if (resp.error.empty()) {
342
370
  cb_throw_error(
@@ -366,7 +394,10 @@ cb_Backend_search_index_get_documents_count(VALUE self,
366
394
  }
367
395
 
368
396
  VALUE
369
- cb_Backend_search_index_get_stats(VALUE self, VALUE index_name, VALUE timeout)
397
+ cb_Backend_search_index_get_stats(VALUE self,
398
+ VALUE index_name,
399
+ VALUE timeout,
400
+ VALUE observability_handler)
370
401
  {
371
402
  auto cluster = cb_backend_to_core_api_cluster(self);
372
403
 
@@ -376,12 +407,14 @@ cb_Backend_search_index_get_stats(VALUE self, VALUE index_name, VALUE timeout)
376
407
  core::operations::management::search_index_get_stats_request req{};
377
408
  cb_extract_timeout(req, timeout);
378
409
  req.index_name = cb_string_new(index_name);
410
+ auto parent_span = cb_create_parent_span(req, self);
379
411
  std::promise<core::operations::management::search_index_get_stats_response> promise;
380
412
  auto f = promise.get_future();
381
413
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
382
414
  promise.set_value(std::forward<decltype(resp)>(resp));
383
415
  });
384
416
  auto resp = cb_wait_for_future(f);
417
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
385
418
  if (resp.ctx.ec) {
386
419
  if (resp.error.empty()) {
387
420
  cb_throw_error(
@@ -404,19 +437,21 @@ cb_Backend_search_index_get_stats(VALUE self, VALUE index_name, VALUE timeout)
404
437
  }
405
438
 
406
439
  VALUE
407
- cb_Backend_search_get_stats(VALUE self, VALUE timeout)
440
+ cb_Backend_search_get_stats(VALUE self, VALUE timeout, VALUE observability_handler)
408
441
  {
409
442
  auto cluster = cb_backend_to_core_api_cluster(self);
410
443
 
411
444
  try {
412
445
  core::operations::management::search_get_stats_request req{};
413
446
  cb_extract_timeout(req, timeout);
447
+ auto parent_span = cb_create_parent_span(req, self);
414
448
  std::promise<core::operations::management::search_get_stats_response> promise;
415
449
  auto f = promise.get_future();
416
450
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
417
451
  promise.set_value(std::forward<decltype(resp)>(resp));
418
452
  });
419
453
  auto resp = cb_wait_for_future(f);
454
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
420
455
  if (resp.ctx.ec) {
421
456
  cb_throw_error(resp.ctx, "unable to get stats for the search service");
422
457
  }
@@ -435,7 +470,8 @@ cb_Backend_search_index_pause_ingest(VALUE self,
435
470
  VALUE bucket,
436
471
  VALUE scope,
437
472
  VALUE index_name,
438
- VALUE timeout)
473
+ VALUE timeout,
474
+ VALUE observability_handler)
439
475
  {
440
476
  auto cluster = cb_backend_to_core_api_cluster(self);
441
477
 
@@ -454,12 +490,14 @@ cb_Backend_search_index_pause_ingest(VALUE self,
454
490
  cb_extract_timeout(req, timeout);
455
491
  req.index_name = cb_string_new(index_name);
456
492
  req.pause = true;
493
+ auto parent_span = cb_create_parent_span(req, self);
457
494
  std::promise<core::operations::management::search_index_control_ingest_response> promise;
458
495
  auto f = promise.get_future();
459
496
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
460
497
  promise.set_value(std::forward<decltype(resp)>(resp));
461
498
  });
462
499
  auto resp = cb_wait_for_future(f);
500
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
463
501
  if (resp.ctx.ec) {
464
502
  if (resp.error.empty()) {
465
503
  cb_throw_error(
@@ -489,7 +527,8 @@ cb_Backend_search_index_resume_ingest(VALUE self,
489
527
  VALUE bucket,
490
528
  VALUE scope,
491
529
  VALUE index_name,
492
- VALUE timeout)
530
+ VALUE timeout,
531
+ VALUE observability_handler)
493
532
  {
494
533
  auto cluster = cb_backend_to_core_api_cluster(self);
495
534
 
@@ -508,12 +547,14 @@ cb_Backend_search_index_resume_ingest(VALUE self,
508
547
  cb_extract_timeout(req, timeout);
509
548
  req.index_name = cb_string_new(index_name);
510
549
  req.pause = false;
550
+ auto parent_span = cb_create_parent_span(req, self);
511
551
  std::promise<core::operations::management::search_index_control_ingest_response> promise;
512
552
  auto f = promise.get_future();
513
553
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
514
554
  promise.set_value(std::forward<decltype(resp)>(resp));
515
555
  });
516
556
  auto resp = cb_wait_for_future(f);
557
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
517
558
  if (resp.ctx.ec) {
518
559
  if (resp.error.empty()) {
519
560
  cb_throw_error(
@@ -543,7 +584,8 @@ cb_Backend_search_index_allow_querying(VALUE self,
543
584
  VALUE bucket,
544
585
  VALUE scope,
545
586
  VALUE index_name,
546
- VALUE timeout)
587
+ VALUE timeout,
588
+ VALUE observability_handler)
547
589
  {
548
590
  auto cluster = cb_backend_to_core_api_cluster(self);
549
591
 
@@ -562,12 +604,14 @@ cb_Backend_search_index_allow_querying(VALUE self,
562
604
  cb_extract_timeout(req, timeout);
563
605
  req.index_name = cb_string_new(index_name);
564
606
  req.allow = true;
607
+ auto parent_span = cb_create_parent_span(req, self);
565
608
  std::promise<core::operations::management::search_index_control_query_response> promise;
566
609
  auto f = promise.get_future();
567
610
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
568
611
  promise.set_value(std::forward<decltype(resp)>(resp));
569
612
  });
570
613
  auto resp = cb_wait_for_future(f);
614
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
571
615
  if (resp.ctx.ec) {
572
616
  if (resp.error.empty()) {
573
617
  cb_throw_error(
@@ -597,7 +641,8 @@ cb_Backend_search_index_disallow_querying(VALUE self,
597
641
  VALUE bucket,
598
642
  VALUE scope,
599
643
  VALUE index_name,
600
- VALUE timeout)
644
+ VALUE timeout,
645
+ VALUE observability_handler)
601
646
  {
602
647
  auto cluster = cb_backend_to_core_api_cluster(self);
603
648
 
@@ -616,12 +661,14 @@ cb_Backend_search_index_disallow_querying(VALUE self,
616
661
  cb_extract_timeout(req, timeout);
617
662
  req.index_name = cb_string_new(index_name);
618
663
  req.allow = false;
664
+ auto parent_span = cb_create_parent_span(req, self);
619
665
  std::promise<core::operations::management::search_index_control_query_response> promise;
620
666
  auto f = promise.get_future();
621
667
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
622
668
  promise.set_value(std::forward<decltype(resp)>(resp));
623
669
  });
624
670
  auto resp = cb_wait_for_future(f);
671
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
625
672
  if (resp.ctx.ec) {
626
673
  if (resp.error.empty()) {
627
674
  cb_throw_error(
@@ -651,7 +698,8 @@ cb_Backend_search_index_freeze_plan(VALUE self,
651
698
  VALUE bucket,
652
699
  VALUE scope,
653
700
  VALUE index_name,
654
- VALUE timeout)
701
+ VALUE timeout,
702
+ VALUE observability_handler)
655
703
  {
656
704
  auto cluster = cb_backend_to_core_api_cluster(self);
657
705
 
@@ -670,12 +718,14 @@ cb_Backend_search_index_freeze_plan(VALUE self,
670
718
  cb_extract_timeout(req, timeout);
671
719
  req.index_name = cb_string_new(index_name);
672
720
  req.freeze = true;
721
+ auto parent_span = cb_create_parent_span(req, self);
673
722
  std::promise<core::operations::management::search_index_control_plan_freeze_response> promise;
674
723
  auto f = promise.get_future();
675
724
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
676
725
  promise.set_value(std::forward<decltype(resp)>(resp));
677
726
  });
678
727
  auto resp = cb_wait_for_future(f);
728
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
679
729
  if (resp.ctx.ec) {
680
730
  if (resp.error.empty()) {
681
731
  cb_throw_error(resp.ctx,
@@ -704,7 +754,8 @@ cb_Backend_search_index_unfreeze_plan(VALUE self,
704
754
  VALUE bucket,
705
755
  VALUE scope,
706
756
  VALUE index_name,
707
- VALUE timeout)
757
+ VALUE timeout,
758
+ VALUE observability_handler)
708
759
  {
709
760
  auto cluster = cb_backend_to_core_api_cluster(self);
710
761
 
@@ -723,12 +774,14 @@ cb_Backend_search_index_unfreeze_plan(VALUE self,
723
774
  cb_extract_timeout(req, timeout);
724
775
  req.index_name = cb_string_new(index_name);
725
776
  req.freeze = false;
777
+ auto parent_span = cb_create_parent_span(req, self);
726
778
  std::promise<core::operations::management::search_index_control_plan_freeze_response> promise;
727
779
  auto f = promise.get_future();
728
780
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
729
781
  promise.set_value(std::forward<decltype(resp)>(resp));
730
782
  });
731
783
  auto resp = cb_wait_for_future(f);
784
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
732
785
  if (resp.ctx.ec) {
733
786
  if (resp.error.empty()) {
734
787
  cb_throw_error(
@@ -759,7 +812,8 @@ cb_Backend_search_index_analyze_document(VALUE self,
759
812
  VALUE scope,
760
813
  VALUE index_name,
761
814
  VALUE encoded_document,
762
- VALUE timeout)
815
+ VALUE timeout,
816
+ VALUE observability_handler)
763
817
  {
764
818
  auto cluster = cb_backend_to_core_api_cluster(self);
765
819
 
@@ -781,12 +835,15 @@ cb_Backend_search_index_analyze_document(VALUE self,
781
835
  req.index_name = cb_string_new(index_name);
782
836
  req.encoded_document = cb_string_new(encoded_document);
783
837
 
838
+ auto parent_span = cb_create_parent_span(req, self);
839
+
784
840
  std::promise<core::operations::management::search_index_analyze_document_response> promise;
785
841
  auto f = promise.get_future();
786
842
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
787
843
  promise.set_value(std::forward<decltype(resp)>(resp));
788
844
  });
789
845
  auto resp = cb_wait_for_future(f);
846
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
790
847
  if (resp.ctx.ec) {
791
848
  if (resp.error.empty()) {
792
849
  cb_throw_error(
@@ -834,7 +891,8 @@ cb_Backend_document_search(VALUE self,
834
891
  VALUE index_name,
835
892
  VALUE query,
836
893
  VALUE search_request,
837
- VALUE options)
894
+ VALUE options,
895
+ VALUE observability_handler)
838
896
  {
839
897
  auto cluster = cb_backend_to_core_api_cluster(self);
840
898
 
@@ -1017,12 +1075,15 @@ cb_Backend_document_search(VALUE self,
1017
1075
  rb_hash_foreach(raw_params, cb_for_each_raw_param, reinterpret_cast<VALUE>(&req));
1018
1076
  }
1019
1077
 
1078
+ auto parent_span = cb_create_parent_span(req, self);
1079
+
1020
1080
  std::promise<core::operations::search_response> promise;
1021
1081
  auto f = promise.get_future();
1022
1082
  cluster.execute(req, [promise = std::move(promise)](auto&& resp) mutable {
1023
1083
  promise.set_value(std::forward<decltype(resp)>(resp));
1024
1084
  });
1025
1085
  auto resp = cb_wait_for_future(f);
1086
+ cb_add_core_spans(observability_handler, std::move(parent_span), resp.ctx.retry_attempts);
1026
1087
  if (resp.ctx.ec) {
1027
1088
  cb_throw_error(resp.ctx,
1028
1089
  fmt::format("unable to perform search query for index \"{}\": {}",
@@ -1190,27 +1251,27 @@ cb_Backend_document_search(VALUE self,
1190
1251
  void
1191
1252
  init_search(VALUE cBackend)
1192
1253
  {
1193
- rb_define_method(cBackend, "document_search", cb_Backend_document_search, 6);
1194
-
1195
- rb_define_method(cBackend, "search_get_stats", cb_Backend_search_get_stats, 1);
1196
- rb_define_method(cBackend, "search_index_get_all", cb_Backend_search_index_get_all, 3);
1197
- rb_define_method(cBackend, "search_index_get", cb_Backend_search_index_get, 4);
1198
- rb_define_method(cBackend, "search_index_upsert", cb_Backend_search_index_upsert, 4);
1199
- rb_define_method(cBackend, "search_index_drop", cb_Backend_search_index_drop, 4);
1200
- rb_define_method(cBackend, "search_index_get_stats", cb_Backend_search_index_get_stats, 2);
1254
+ rb_define_method(cBackend, "document_search", cb_Backend_document_search, 7);
1255
+
1256
+ rb_define_method(cBackend, "search_get_stats", cb_Backend_search_get_stats, 2);
1257
+ rb_define_method(cBackend, "search_index_get_all", cb_Backend_search_index_get_all, 4);
1258
+ rb_define_method(cBackend, "search_index_get", cb_Backend_search_index_get, 5);
1259
+ rb_define_method(cBackend, "search_index_upsert", cb_Backend_search_index_upsert, 5);
1260
+ rb_define_method(cBackend, "search_index_drop", cb_Backend_search_index_drop, 5);
1261
+ rb_define_method(cBackend, "search_index_get_stats", cb_Backend_search_index_get_stats, 3);
1201
1262
  rb_define_method(
1202
- cBackend, "search_index_get_documents_count", cb_Backend_search_index_get_documents_count, 4);
1203
- rb_define_method(cBackend, "search_index_pause_ingest", cb_Backend_search_index_pause_ingest, 4);
1263
+ cBackend, "search_index_get_documents_count", cb_Backend_search_index_get_documents_count, 5);
1264
+ rb_define_method(cBackend, "search_index_pause_ingest", cb_Backend_search_index_pause_ingest, 5);
1204
1265
  rb_define_method(
1205
- cBackend, "search_index_resume_ingest", cb_Backend_search_index_resume_ingest, 4);
1266
+ cBackend, "search_index_resume_ingest", cb_Backend_search_index_resume_ingest, 5);
1206
1267
  rb_define_method(
1207
- cBackend, "search_index_allow_querying", cb_Backend_search_index_allow_querying, 4);
1268
+ cBackend, "search_index_allow_querying", cb_Backend_search_index_allow_querying, 5);
1208
1269
  rb_define_method(
1209
- cBackend, "search_index_disallow_querying", cb_Backend_search_index_disallow_querying, 4);
1210
- rb_define_method(cBackend, "search_index_freeze_plan", cb_Backend_search_index_freeze_plan, 4);
1270
+ cBackend, "search_index_disallow_querying", cb_Backend_search_index_disallow_querying, 5);
1271
+ rb_define_method(cBackend, "search_index_freeze_plan", cb_Backend_search_index_freeze_plan, 5);
1211
1272
  rb_define_method(
1212
- cBackend, "search_index_unfreeze_plan", cb_Backend_search_index_unfreeze_plan, 4);
1273
+ cBackend, "search_index_unfreeze_plan", cb_Backend_search_index_unfreeze_plan, 5);
1213
1274
  rb_define_method(
1214
- cBackend, "search_index_analyze_document", cb_Backend_search_index_analyze_document, 5);
1275
+ cBackend, "search_index_analyze_document", cb_Backend_search_index_analyze_document, 6);
1215
1276
  }
1216
1277
  } // namespace couchbase::ruby