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
@@ -1 +1 @@
1
- f290e6acaf904a4121424ca3ebdd70652780707e28e8af999221786b86bb1975 cacert.pem
1
+ 86a1f3366afac7c6f8ae9f3c779ac221129328c43f0ab2b8817eb2f362a5025c cacert.pem
@@ -21,7 +21,7 @@ endif()
21
21
 
22
22
  project(
23
23
  couchbase_cxx_client
24
- VERSION "1.2.0"
24
+ VERSION "1.3.2"
25
25
  LANGUAGES CXX C)
26
26
  message(
27
27
  STATUS
@@ -61,6 +61,8 @@ endif()
61
61
 
62
62
  find_package(Threads REQUIRED)
63
63
 
64
+ option(COUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY "Build with OpenTelemetry" ${COUCHBASE_CXX_CLIENT_MASTER_PROJECT})
65
+
64
66
  include(cmake/ThirdPartyDependencies.cmake)
65
67
 
66
68
  include(cmake/VersionInfo.cmake)
@@ -75,15 +77,19 @@ set(couchbase_cxx_client_FILES
75
77
  core/agent_group.cxx
76
78
  core/agent_group_config.cxx
77
79
  core/analytics_query_options.cxx
80
+ core/app_telemetry_address.cxx
81
+ core/app_telemetry_meter.cxx
82
+ core/app_telemetry_reporter.cxx
78
83
  core/bucket.cxx
79
84
  core/cluster.cxx
80
85
  core/cluster_agent.cxx
81
86
  core/cluster_agent_config.cxx
87
+ core/cluster_credentials.cxx
82
88
  core/cluster_options.cxx
83
89
  core/collections_component.cxx
90
+ core/columnar/backoff_calculator.cxx
84
91
  core/columnar/columnar_agent.cxx
85
92
  core/columnar/columnar_agent_config.cxx
86
- core/columnar/backoff_calculator.cxx
87
93
  core/columnar/columnar_error.cxx
88
94
  core/columnar/error_codes.cxx
89
95
  core/columnar/management_component.cxx
@@ -105,14 +111,13 @@ set(couchbase_cxx_client_FILES
105
111
  core/impl/binary_collection.cxx
106
112
  core/impl/boolean_field_query.cxx
107
113
  core/impl/boolean_query.cxx
108
- core/impl/public_bucket.cxx
109
114
  core/impl/bucket_manager.cxx
110
- core/impl/public_cluster.cxx
111
115
  core/impl/collection.cxx
112
116
  core/impl/collection_manager.cxx
113
117
  core/impl/common_error_category.cxx
114
118
  core/impl/configuration_profiles_registry.cxx
115
119
  core/impl/conjunction_query.cxx
120
+ core/impl/crypto.cxx
116
121
  core/impl/date_range.cxx
117
122
  core/impl/date_range_facet.cxx
118
123
  core/impl/date_range_facet_result.cxx
@@ -123,6 +128,7 @@ set(couchbase_cxx_client_FILES
123
128
  core/impl/doc_id_query.cxx
124
129
  core/impl/error.cxx
125
130
  core/impl/error_context.cxx
131
+ core/impl/node_id.cxx
126
132
  core/impl/expiry.cxx
127
133
  core/impl/fail_fast_retry_strategy.cxx
128
134
  core/impl/field_level_encryption_error_category.cxx
@@ -141,7 +147,6 @@ set(couchbase_cxx_client_FILES
141
147
  core/impl/internal_term_facet_result.cxx
142
148
  core/impl/key_value_error_category.cxx
143
149
  core/impl/key_value_error_context.cxx
144
- core/impl/public_logger.cxx
145
150
  core/impl/lookup_in_replica.cxx
146
151
  core/impl/management_error_category.cxx
147
152
  core/impl/match_all_query.cxx
@@ -157,6 +162,11 @@ set(couchbase_cxx_client_FILES
157
162
  core/impl/observe_seqno.cxx
158
163
  core/impl/phrase_query.cxx
159
164
  core/impl/prefix_query.cxx
165
+ core/impl/public_bucket.cxx
166
+ core/impl/public_cluster.cxx
167
+ core/impl/public_logger.cxx
168
+ core/impl/public_scan_result.cxx
169
+ core/impl/public_transaction_get_result.cxx
160
170
  core/impl/query.cxx
161
171
  core/impl/query_error_category.cxx
162
172
  core/impl/query_error_context.cxx
@@ -166,7 +176,6 @@ set(couchbase_cxx_client_FILES
166
176
  core/impl/replica_utils.cxx
167
177
  core/impl/retry_action.cxx
168
178
  core/impl/retry_reason.cxx
169
- core/impl/public_scan_result.cxx
170
179
  core/impl/scope.cxx
171
180
  core/impl/search.cxx
172
181
  core/impl/search_error_category.cxx
@@ -206,13 +215,13 @@ set(couchbase_cxx_client_FILES
206
215
  core/impl/transaction_error_category.cxx
207
216
  core/impl/transaction_get_multi_replicas_from_preferred_server_group_spec.cxx
208
217
  core/impl/transaction_get_multi_spec.cxx
209
- core/impl/public_transaction_get_result.cxx
210
218
  core/impl/transaction_op_error_category.cxx
211
219
  core/impl/vector_query.cxx
212
220
  core/impl/vector_search.cxx
213
221
  core/impl/view_error_category.cxx
214
222
  core/impl/wildcard_query.cxx
215
223
  core/impl/crypto.cxx
224
+ core/impl/observability_recorder.cxx
216
225
  core/io/config_tracker.cxx
217
226
  core/io/dns_client.cxx
218
227
  core/io/dns_config.cxx
@@ -339,6 +348,7 @@ set(couchbase_cxx_client_FILES
339
348
  core/operations/management/view_index_get_all.cxx
340
349
  core/operations/management/view_index_upsert.cxx
341
350
  core/origin.cxx
351
+ core/orphan_reporter.cxx
342
352
  core/platform/base64.cc
343
353
  core/platform/dirutils.cc
344
354
  core/platform/random.cc
@@ -387,16 +397,19 @@ set(couchbase_cxx_client_FILES
387
397
  core/sasl/client.cc
388
398
  core/sasl/context.cc
389
399
  core/sasl/mechanism.cc
400
+ core/sasl/oauthbearer/oauthbearer.cc
390
401
  core/sasl/plain/plain.cc
391
402
  core/sasl/scram-sha/scram-sha.cc
392
403
  core/sasl/scram-sha/stringutils.cc
393
404
  core/scan_result.cxx
394
405
  core/search_query_options.cxx
395
406
  core/seed_config.cxx
407
+ core/tls_context_provider.cxx
396
408
  core/topology/capabilities.cxx
397
409
  core/topology/configuration.cxx
398
410
  core/tracing/threshold_logging_tracer.cxx
399
411
  core/tracing/tracer_wrapper.cxx
412
+ core/tracing/wrapper_sdk_tracer.cxx
400
413
  core/transactions/active_transaction_record.cxx
401
414
  core/transactions/async_attempt_context.cxx
402
415
  core/transactions/atr_cleanup_entry.cxx
@@ -424,6 +437,7 @@ set(couchbase_cxx_client_FILES
424
437
  core/transactions/utils.cxx
425
438
  core/utils/binary.cxx
426
439
  core/utils/connection_string.cxx
440
+ core/utils/contains_string.cxx
427
441
  core/utils/duration_parser.cxx
428
442
  core/utils/json.cxx
429
443
  core/utils/json_streaming_lexer.cxx
@@ -432,10 +446,8 @@ set(couchbase_cxx_client_FILES
432
446
  core/utils/url_codec.cxx
433
447
  core/view_query_options.cxx
434
448
  core/websocket_codec.cxx
435
- core/app_telemetry_address.cxx
436
- core/app_telemetry_meter.cxx
437
- core/app_telemetry_reporter.cxx
438
- core/cluster_credentials.cxx)
449
+ core/cluster_label_listener.cxx
450
+ )
439
451
 
440
452
  set(couchbase_cxx_client_LIBRARIES)
441
453
  set(couchbase_cxx_client_DEFAULT_LIBRARY)
@@ -520,6 +532,9 @@ foreach(TARGET ${couchbase_cxx_client_LIBRARIES})
520
532
  $<BUILD_INTERFACE:asio>
521
533
  $<BUILD_INTERFACE:couchbase_backtrace>
522
534
  $<BUILD_INTERFACE:jsonsl>)
535
+ if(COUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY)
536
+ target_link_libraries(${TARGET} PRIVATE $<BUILD_INTERFACE:opentelemetry_api>)
537
+ endif()
523
538
 
524
539
  if(HAVE_BACKTRACE)
525
540
  target_link_libraries(${TARGET} PRIVATE ${PLATFORM_LIBRARIES})
@@ -5,8 +5,19 @@ pkgname=couchbase-cxx-client
5
5
  pkgver=@COUCHBASE_CXX_CLIENT_PACKAGE_VERSION@
6
6
  pkgrel=1
7
7
  _number_of_commits=@COUCHBASE_CXX_CLIENT_NUMBER_OF_COMMITS@
8
+ _git_revision_short=@COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT@
8
9
  if [ "${_number_of_commits}" -gt 0 ]; then
9
- pkgver="${pkgver}_p${_number_of_commits}"
10
+ # Encode commit count and git hash into _p version for uniqueness
11
+ # Extract first 3 hex bytes from git hash, convert to decimal
12
+ # Map each byte mod 100 to create 6-digit suffix
13
+ # Formula: p = commits × 10_000_000 + (byte1%100)*10000 + (byte2%100)*100 + (byte3%100)
14
+ # Example: 1.2.0-75-gfeb729b2 → 1.2.0_p750548341
15
+ _b1=$((0x${_git_revision_short:0:2}))
16
+ _b2=$((0x${_git_revision_short:2:2}))
17
+ _b3=$((0x${_git_revision_short:4:2}))
18
+ _sha_pack=$(( (_b1 % 100) * 10000 + (_b2 % 100) * 100 + (_b3 % 100) ))
19
+ _p_version=$(( _number_of_commits * 10000000 + _sha_pack ))
20
+ pkgver="${pkgver}_p${_p_version}"
10
21
  fi
11
22
  source="${pkgname}-${pkgver}.tar.gz"
12
23
  pkgdesc="Couchbase C++ SDK"
@@ -18,6 +29,10 @@ makedepends="
18
29
  linux-headers
19
30
  cmake
20
31
  ninja
32
+ curl-dev
33
+ protobuf-dev
34
+ grpc-dev
35
+ nlohmann-json
21
36
  "
22
37
  subpackages="${pkgname}-dev ${pkgname}-tools"
23
38
  options="!check"
@@ -36,6 +51,7 @@ build() {
36
51
  -DCOUCHBASE_CXX_CLIENT_STATIC_BORINGSSL=ON \
37
52
  -DCOUCHBASE_CXX_CLIENT_BUILD_EXAMPLES=OFF \
38
53
  -DCOUCHBASE_CXX_CLIENT_BUILD_TESTS=OFF \
54
+ -DCOUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY=ON \
39
55
  -DCOUCHBASE_CXX_CLIENT_BUILD_TOOLS=ON \
40
56
  -DCOUCHBASE_CXX_CLIENT_BUILD_STATIC=ON \
41
57
  -DCOUCHBASE_CXX_CLIENT_BUILD_SHARED=ON
@@ -88,10 +88,18 @@ function(bundle_static_library tgt_name bundled_tgt_name)
88
88
  set(ar_tool ${CMAKE_CXX_COMPILER_AR})
89
89
  endif()
90
90
 
91
+ if(APPLE)
92
+ find_program(SED gsed)
93
+ else()
94
+ find_program(SED sed)
95
+ endif()
96
+
91
97
  add_custom_command(
92
- COMMAND ${ar_tool} -M < ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar
98
+ COMMAND ${SED} -i "s|${CMAKE_BINARY_DIR}/||g" ${bundled_tgt_name}.ar
99
+ COMMAND ${ar_tool} -M < ${bundled_tgt_name}.ar
93
100
  OUTPUT ${bundled_tgt_full_name}
94
101
  DEPENDS ${tgt_name} ${static_libs}
102
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
95
103
  COMMENT "Bundling ${bundled_tgt_name}"
96
104
  VERBATIM)
97
105
  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
@@ -3,27 +3,56 @@ if(NOT ENABLE_CACHE)
3
3
  return()
4
4
  endif()
5
5
 
6
- set(CACHE_OPTION
7
- "ccache"
8
- CACHE STRING "Compiler cache to be used")
9
- set(CACHE_OPTION_VALUES "ccache" "sccache")
10
- set_property(CACHE CACHE_OPTION PROPERTY STRINGS ${CACHE_OPTION_VALUES})
11
- list(
12
- FIND
13
- CACHE_OPTION_VALUES
14
- ${CACHE_OPTION}
15
- CACHE_OPTION_INDEX)
6
+ if(NOT DEFINED CACHE_OPTION)
7
+ set(CACHE_OPTION "")
8
+ endif()
9
+
10
+ set(CACHE_OPTION_VALUES "sccache" "ccache")
16
11
 
17
- if(${CACHE_OPTION_INDEX} EQUAL -1)
18
- message(
19
- STATUS
20
- "Using custom compiler cache system: '${CACHE_OPTION}', explicitly supported entries are ${CACHE_OPTION_VALUES}")
12
+ if(CACHE_OPTION STREQUAL "")
13
+ find_program(SCCACHE_BIN sccache)
14
+ if(SCCACHE_BIN)
15
+ set(CACHE_OPTION "sccache")
16
+ set(CACHE_BINARY ${SCCACHE_BIN})
17
+ else()
18
+ find_program(CCACHE_BIN ccache)
19
+ if(CCACHE_BIN)
20
+ set(CACHE_OPTION "ccache")
21
+ set(CACHE_BINARY ${CCACHE_BIN})
22
+ else()
23
+ set(CACHE_OPTION "none")
24
+ set(CACHE_BINARY "")
25
+ endif()
26
+ endif()
27
+ else()
28
+ if(NOT
29
+ CACHE_OPTION
30
+ IN_LIST
31
+ CACHE_OPTION_VALUES)
32
+ message(
33
+ STATUS
34
+ "Using custom compiler cache system: '${CACHE_OPTION}', explicitly supported entries are ${CACHE_OPTION_VALUES}"
35
+ )
36
+ endif()
37
+ find_program(CACHE_BINARY ${CACHE_OPTION})
21
38
  endif()
22
39
 
23
- find_program(CACHE_BINARY ${CACHE_OPTION})
24
- if(CACHE_BINARY)
25
- message(STATUS "${CACHE_OPTION} found and enabled")
26
- set(CMAKE_CXX_COMPILER_LAUNCHER ${CACHE_BINARY})
40
+ if(CACHE_OPTION STREQUAL "none" OR CACHE_BINARY STREQUAL "")
41
+ message(WARNING "No compiler cache found or enabled; building without compiler cache")
27
42
  else()
28
- message(WARNING "${CACHE_OPTION} is enabled but was not found. Not using it")
43
+ if(CMAKE_GENERATOR MATCHES "Visual Studio")
44
+ message(WARNING "Compiler cache (sccache/ccache) ignored with Visual Studio generator + MSVC. Use -GNinja instead.")
45
+ return()
46
+ endif()
47
+
48
+ message(STATUS "Compiler cache '${CACHE_OPTION}' found at: ${CACHE_BINARY}")
49
+ set(CMAKE_CXX_COMPILER_LAUNCHER ${CACHE_BINARY})
50
+ set(CMAKE_C_COMPILER_LAUNCHER ${CACHE_BINARY})
51
+ if(MSVC AND CMAKE_GENERATOR STREQUAL "Ninja")
52
+ set(CMAKE_C_FLAGS_DEBUG "/Z7 /Od /RTC1 /FS")
53
+ set(CMAKE_CXX_FLAGS_DEBUG "/Z7 /Od /RTC1 /FS")
54
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "/Z7 /O2 /FS")
55
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/Z7 /O2 /FS")
56
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
57
+ endif()
29
58
  endif()
@@ -42,7 +42,9 @@ function(set_project_options target_name)
42
42
  endif()
43
43
 
44
44
  if(HAVE_BACKTRACE OR HAVE_DLADDR)
45
- if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
45
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
46
+ AND NOT APPLE
47
+ AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
46
48
  target_compile_options(${target_name} PRIVATE -ggdb3)
47
49
  endif()
48
50
  target_compile_definitions(${target_name} PRIVATE -D_GNU_SOURCE=1)
@@ -209,10 +209,18 @@ if(COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE)
209
209
  file(READ "${COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE_ROOT}/mozilla-ca-bundle.crt" CA_BUNDLE_CONTENT)
210
210
  string(
211
211
  REGEX MATCH
212
- "Certificate data from Mozilla as of: ([^\n]*)"
212
+ "Certificate data from Mozilla (as of|last updated on): ([^\n]*)"
213
213
  CA_BUNDLE_DATE_LINE
214
214
  ${CA_BUNDLE_CONTENT})
215
- set(COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "${CMAKE_MATCH_1}")
215
+ if(CA_BUNDLE_DATE_LINE)
216
+ set(COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "${CMAKE_MATCH_2}")
217
+ else()
218
+ message(
219
+ WARNING
220
+ "Failed to extract Mozilla CA bundle date from certificate file; "
221
+ "COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE will be set to 'unknown'.")
222
+ set(COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "unknown")
223
+ endif()
216
224
  else()
217
225
  set(CA_BUNDLE_CONTENT "")
218
226
  endif()
@@ -84,6 +84,12 @@ add_custom_command(
84
84
  set(COUCHBASE_CXX_TARBALL_THIRD_PARTY_GLOB_FILE ${PROJECT_SOURCE_DIR}/cmake/tarball_glob.txt)
85
85
 
86
86
  if(COUCHBASE_CXX_RECORD_BUILD_INFO_FOR_TARBALL)
87
+ if(CPM_USE_NAMED_CACHE_DIRECTORIES)
88
+ get_filename_component(opentelemetry_SOURCE_DIR_PARENT "${opentelemetry_SOURCE_DIR}" DIRECTORY)
89
+ get_filename_component(opentelemetry_CPM_HASH "${opentelemetry_SOURCE_DIR_PARENT}" NAME)
90
+ else()
91
+ get_filename_component(opentelemetry_CPM_HASH "${opentelemetry_SOURCE_DIR}" NAME)
92
+ endif()
87
93
  file(
88
94
  WRITE "${CMAKE_SOURCE_DIR}/cmake/TarballRelease.cmake"
89
95
  "
@@ -91,6 +97,7 @@ set(CPM_DOWNLOAD_ALL OFF CACHE BOOL \"\" FORCE)
91
97
  set(CPM_USE_NAMED_CACHE_DIRECTORIES ON CACHE BOOL \"\" FORCE)
92
98
  set(CPM_USE_LOCAL_PACKAGES OFF CACHE BOOL \"\" FORCE)
93
99
  set(CPM_SOURCE_CACHE \"\${PROJECT_SOURCE_DIR}/third_party_cache\" CACHE STRING \"\" FORCE)
100
+ set(OTELCPP_PROTO_PATH \"\${PROJECT_SOURCE_DIR}/third_party_cache/opentelemetry/${opentelemetry_CPM_HASH}/opentelemetry/third_party/opentelemetry-proto\" CACHE STRING \"\" FORCE)
94
101
  set(COUCHBASE_CXX_CLIENT_GIT_REVISION \"${COUCHBASE_CXX_CLIENT_GIT_REVISION}\")
95
102
  set(COUCHBASE_CXX_CLIENT_GIT_DESCRIBE \"${COUCHBASE_CXX_CLIENT_GIT_DESCRIBE}\")
96
103
  set(COUCHBASE_CXX_CLIENT_BUILD_TIMESTAMP \"${COUCHBASE_CXX_CLIENT_BUILD_TIMESTAMP}\")
@@ -112,16 +119,36 @@ add_custom_command(
112
119
  -DCPM_SOURCE_CACHE="${PROJECT_BINARY_DIR}/packaging/${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/cache"
113
120
  -DCOUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE_ROOT="${PROJECT_BINARY_DIR}/packaging/${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/cache"
114
121
  -DCOUCHBASE_CXX_CLIENT_BUILD_TESTS=OFF -DCOUCHBASE_CXX_CLIENT_BUILD_TOOLS=ON -DCOUCHBASE_CXX_CLIENT_BUILD_DOCS=OFF
122
+ -DCOUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY=ON
115
123
  -DCOUCHBASE_CXX_CLIENT_STATIC_BORINGSSL=ON -DCPM_DOWNLOAD_ALL=ON -DCPM_USE_NAMED_CACHE_DIRECTORIES=ON
116
124
  -DCPM_USE_LOCAL_PACKAGES=OFF -DCOUCHBASE_CXX_CLIENT_BUILD_STATIC=ON -DCOUCHBASE_CXX_CLIENT_BUILD_SHARED=ON
117
125
  -DCOUCHBASE_CXX_CLIENT_INSTALL=ON -DCOUCHBASE_CXX_RECORD_BUILD_INFO_FOR_TARBALL=ON
118
126
  COMMAND
119
- ${XARGS} --arg-file=${COUCHBASE_CXX_TARBALL_THIRD_PARTY_GLOB_FILE} -I {} find
127
+ ${XARGS} -a ${COUCHBASE_CXX_TARBALL_THIRD_PARTY_GLOB_FILE} -I {} find
120
128
  "${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/cache" -wholename "${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/cache/{}"
121
- -type f | grep -v "crypto_test_data\\|googletest" | uniq >
129
+ -type f
130
+ | grep -v
131
+ -e "/benchmark"
132
+ -e "/opentelemetry.*/functional"
133
+ -e "/opentelemetry.*/install"
134
+ -e "/opentelemetry.*/test"
135
+ -e "/opentelemetry/examples"
136
+ -e "/opentelemetry/docker"
137
+ -e "/opentelemetry/exporters/elasticsearch"
138
+ -e "/opentelemetry/exporters/etw"
139
+ -e "/opentelemetry/exporters/prometheus"
140
+ -e "/opentelemetry/exporters/zipkin"
141
+ -e "/opentelemetry/opentracing-.*"
142
+ -e "/opentelemetry/third_party/ms-gsl"
143
+ -e "/opentelemetry/third_party/nlohmann-json"
144
+ -e "/opentelemetry/third_party/prometheus-cpp"
145
+ -e "/opentelemetry/tools"
146
+ -e "crypto_test_data"
147
+ -e "googletest"
148
+ | uniq >
122
149
  "${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/third_party_manifest.txt"
123
150
  COMMAND ${CMAKE_COMMAND} -E make_directory "${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/filtered_cache"
124
- COMMAND ${XARGS} --arg-file="${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/third_party_manifest.txt" -I {} ${CP} --parents
151
+ COMMAND ${XARGS} -a "${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/third_party_manifest.txt" -I {} ${CP} --parents
125
152
  {} "${COUCHBASE_CXX_CLIENT_TARBALL_NAME}/tmp/filtered_cache"
126
153
  COMMAND
127
154
  ${CMAKE_COMMAND} -E rename
@@ -263,7 +290,7 @@ if(COUCHBASE_CXX_CLIENT_RPM_TARGETS)
263
290
  set(COUCHBASE_CXX_CLIENT_SPEC "${PROJECT_BINARY_DIR}/packaging/couchbase-cxx-client.spec")
264
291
  configure_file(${PROJECT_SOURCE_DIR}/cmake/couchbase-cxx-client.spec.in "${COUCHBASE_CXX_CLIENT_SPEC}" @ONLY)
265
292
 
266
- set(COUCHBASE_CXX_CLIENT_DEFAULT_ROOT "rocky-9-${CMAKE_SYSTEM_PROCESSOR}")
293
+ set(COUCHBASE_CXX_CLIENT_DEFAULT_ROOT "rocky+epel-9-${CMAKE_SYSTEM_PROCESSOR}")
267
294
  set(COUCHBASE_CXX_CLIENT_RPM_NAME
268
295
  "couchbase-cxx-client-${COUCHBASE_CXX_CLIENT_PACKAGE_VERSION}-${COUCHBASE_CXX_CLIENT_PACKAGE_RELEASE}")
269
296
  set(COUCHBASE_CXX_CLIENT_SRPM "${PROJECT_BINARY_DIR}/packaging/srpm/${COUCHBASE_CXX_CLIENT_RPM_NAME}.el9.src.rpm")
@@ -282,9 +309,9 @@ if(COUCHBASE_CXX_CLIENT_RPM_TARGETS)
282
309
  APPEND
283
310
  COUCHBASE_CXX_CLIENT_SUPPORTED_ROOTS
284
311
  "opensuse-leap-15.6-${CMAKE_SYSTEM_PROCESSOR}"
285
- "rocky-10-${CMAKE_SYSTEM_PROCESSOR}"
286
- "rocky-9-${CMAKE_SYSTEM_PROCESSOR}"
287
- "rocky-8-${CMAKE_SYSTEM_PROCESSOR}"
312
+ "rocky+epel-10-${CMAKE_SYSTEM_PROCESSOR}"
313
+ "rocky+epel-9-${CMAKE_SYSTEM_PROCESSOR}"
314
+ "rocky+epel-8-${CMAKE_SYSTEM_PROCESSOR}"
288
315
  "amazonlinux-2023-${CMAKE_SYSTEM_PROCESSOR}"
289
316
  "fedora-43-${CMAKE_SYSTEM_PROCESSOR}"
290
317
  "fedora-42-${CMAKE_SYSTEM_PROCESSOR}"
@@ -327,8 +354,21 @@ if(COUCHBASE_CXX_CLIENT_APK_TARGETS)
327
354
  set(COUCHBASE_CXX_CLIENT_TARBALL_ALPINE
328
355
  "${PROJECT_BINARY_DIR}/packaging/${COUCHBASE_CXX_CLIENT_TARBALL_NAME_ALPINE}.tar.gz")
329
356
  if(${COUCHBASE_CXX_CLIENT_NUMBER_OF_COMMITS} GREATER 0)
357
+ # Encode commit count and git hash into _p version for uniqueness
358
+ # Extract first 3 bytes from git hash (7-char short hash), convert to decimal
359
+ # Map each byte mod 100 to create 6-digit suffix
360
+ # Formula: p = commits × 10_000_000 + (byte1%100)*10000 + (byte2%100)*100 + (byte3%100)
361
+ # Example: 1.2.0-75-gfeb729b2 → 1.2.0_p750548341
362
+ string(SUBSTRING "${COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT}" 0 2 _b1_hex)
363
+ string(SUBSTRING "${COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT}" 2 2 _b2_hex)
364
+ string(SUBSTRING "${COUCHBASE_CXX_CLIENT_GIT_REVISION_SHORT}" 4 2 _b3_hex)
365
+ math(EXPR _b1 "0x${_b1_hex}")
366
+ math(EXPR _b2 "0x${_b2_hex}")
367
+ math(EXPR _b3 "0x${_b3_hex}")
368
+ math(EXPR _sha_pack "(${_b1} % 100) * 10000 + (${_b2} % 100) * 100 + (${_b3} % 100)")
369
+ math(EXPR _p_version "${COUCHBASE_CXX_CLIENT_NUMBER_OF_COMMITS} * 10000000 + ${_sha_pack}")
330
370
  set(COUCHBASE_CXX_CLIENT_TARBALL_NAME_ALPINE
331
- "couchbase-cxx-client-${COUCHBASE_CXX_CLIENT_PACKAGE_VERSION}_p${COUCHBASE_CXX_CLIENT_NUMBER_OF_COMMITS}")
371
+ "couchbase-cxx-client-${COUCHBASE_CXX_CLIENT_PACKAGE_VERSION}_p${_p_version}")
332
372
  set(COUCHBASE_CXX_CLIENT_TARBALL_ALPINE
333
373
  "${PROJECT_BINARY_DIR}/packaging/${COUCHBASE_CXX_CLIENT_TARBALL_NAME_ALPINE}.tar.gz")
334
374
  endif()
@@ -39,6 +39,46 @@ if(NOT TARGET spdlog::spdlog)
39
39
  "SPDLOG_FMT_EXTERNAL OFF")
40
40
  endif()
41
41
 
42
+ if(COUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY)
43
+ if(NOT TARGET opentelemetry)
44
+ # Disable curl HTTP client to avoid curl downloading and linking to BoringSSL
45
+ # OpenTelemetry will fall back to using its own HTTP client implementation
46
+ # This avoids CMake export errors when curl tries to reference ssl/crypto targets
47
+
48
+ # https://github.com/open-telemetry/opentelemetry-cpp/releases
49
+ cpmaddpackage(
50
+ NAME
51
+ opentelemetry
52
+ VERSION
53
+ 1.23.0
54
+ GITHUB_REPOSITORY
55
+ "open-telemetry/opentelemetry-cpp"
56
+ EXCLUDE_FROM_ALL ON
57
+ OPTIONS
58
+ "protobuf_MSVC_STATIC_RUNTIME OFF"
59
+ "OPENTELEMETRY_INSTALL OFF"
60
+ "WITH_ABI_VERSION_1 OFF"
61
+ "WITH_ABI_VERSION_2 ON"
62
+ "WITH_BENCHMARK OFF"
63
+ "WITH_EXAMPLES OFF"
64
+ "WITH_FUNC_TESTS OFF"
65
+ "WITH_OTLP_GRPC OFF"
66
+ "WITH_OTLP_HTTP ON"
67
+ "WITH_HTTP_CLIENT_CURL OFF"
68
+ "WITH_PROMETHEUS OFF"
69
+ "WITH_OPENTRACING OFF"
70
+ "WITH_STL CXX17"
71
+ "BUILD_TESTING OFF"
72
+ "BUILD_SHARED_LIBS OFF"
73
+ "CMAKE_C_VISIBILITY_PRESET hidden"
74
+ "CMAKE_CXX_VISIBILITY_PRESET hidden"
75
+ "CMAKE_POSITION_INDEPENDENT_CODE ON")
76
+ endif()
77
+
78
+ declare_system_library(opentelemetry_exporter_otlp_http)
79
+ declare_system_library(opentelemetry_exporter_otlp_http_metric)
80
+ endif()
81
+
42
82
  if(NOT TARGET Microsoft.GSL::GSL)
43
83
  # https://github.com/microsoft/GSL/releases
44
84
  cpmaddpackage(
@@ -185,8 +225,9 @@ if(asio_ADDED)
185
225
  target_link_libraries(asio PRIVATE Threads::Threads)
186
226
  if(COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL)
187
227
  target_link_libraries(asio PUBLIC $<TARGET_OBJECTS:ssl> $<TARGET_OBJECTS:crypto>)
228
+ # Add BoringSSL include directories before asio's own include directories.
188
229
  target_include_directories(
189
- asio SYSTEM PRIVATE $<BUILD_INTERFACE:$<TARGET_PROPERTY:ssl,INTERFACE_INCLUDE_DIRECTORIES>>
230
+ asio BEFORE PRIVATE $<BUILD_INTERFACE:$<TARGET_PROPERTY:ssl,INTERFACE_INCLUDE_DIRECTORIES>>
190
231
  $<BUILD_INTERFACE:$<TARGET_PROPERTY:crypto,INTERFACE_INCLUDE_DIRECTORIES>>)
191
232
  elseif(NOT COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL)
192
233
  target_link_libraries(asio PRIVATE OpenSSL::SSL OpenSSL::Crypto)
@@ -264,3 +305,4 @@ declare_system_library(Microsoft.GSL::GSL)
264
305
  declare_system_library(spdlog::spdlog)
265
306
  declare_system_library(asio)
266
307
  declare_system_library(taocpp::json)
308
+ declare_system_library(snappy)
@@ -24,3 +24,5 @@
24
24
  #cmakedefine COUCHBASE_CXX_CLIENT_BORINGSSL_SHA "@COUCHBASE_CXX_CLIENT_BORINGSSL_SHA@"
25
25
  #cmakedefine COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
26
26
  #cmakedefine COUCHBASE_CXX_CLIENT_COLUMNAR
27
+ #cmakedefine COUCHBASE_CXX_CLIENT_CREATE_OPERATION_SPAN_IN_CORE
28
+ #cmakedefine COUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY
@@ -12,6 +12,19 @@ BuildRequires: gcc13, gcc13-c++
12
12
  BuildRequires: gcc, gcc-c++
13
13
  %endif
14
14
  BuildRequires: cmake >= 3.19
15
+ %if 0%{?suse_version} > 0
16
+ BuildRequires: libcurl-devel
17
+ BuildRequires: protobuf-devel
18
+ BuildRequires: nlohmann_json-devel
19
+ %else
20
+ %if 0%{?amzn} == 0 && (0%{?rhel} >= 9 || 0%{?fedora} > 0)
21
+ BuildRequires: curl-devel
22
+ BuildRequires: protobuf-devel
23
+ BuildRequires: json-devel
24
+ %else
25
+ # CentOS 8 / Rocky 8 - skip these packages (no OpenTelemetry)
26
+ %endif
27
+ %endif
15
28
  Source0: @COUCHBASE_CXX_CLIENT_TARBALL_NAME@.tar.gz
16
29
 
17
30
  %if 0%{?amzn}
@@ -50,6 +63,11 @@ Development files for the Couchbase C++ SDK.
50
63
  -DCOUCHBASE_CXX_CLIENT_STATIC_BORINGSSL=ON \
51
64
  -DCOUCHBASE_CXX_CLIENT_BUILD_EXAMPLES=OFF \
52
65
  -DCOUCHBASE_CXX_CLIENT_BUILD_TESTS=OFF \
66
+ %if 0%{?amzn} == 0 && (0%{?rhel} >= 9 || 0%{?fedora} > 0 || 0%{?suse_version} > 0)
67
+ -DCOUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY=ON \
68
+ %else
69
+ -DCOUCHBASE_CXX_CLIENT_BUILD_OPENTELEMETRY=OFF \
70
+ %endif
53
71
  -DCOUCHBASE_CXX_CLIENT_BUILD_TOOLS=ON \
54
72
  -DCOUCHBASE_CXX_CLIENT_BUILD_STATIC=ON \
55
73
  -DCOUCHBASE_CXX_CLIENT_BUILD_SHARED=ON
@@ -90,3 +90,13 @@ spdlog/*/spdlog/include/*
90
90
  spdlog/*/spdlog/include/**/*
91
91
  spdlog/*/spdlog/src/*
92
92
  spdlog/*/spdlog/src/**/*
93
+ opentelemetry/*/opentelemetry/CMakeLists.txt
94
+ opentelemetry/*/opentelemetry/CMakeSettings.json
95
+ opentelemetry/*/opentelemetry/LICENSE
96
+ opentelemetry/*/opentelemetry/*/CMakeLists.txt
97
+ opentelemetry/*/opentelemetry/cmake/*
98
+ opentelemetry/*/opentelemetry/**/CMakeLists.txt
99
+ opentelemetry/*/opentelemetry/**/LICENSE
100
+ opentelemetry/*/opentelemetry/**/*.h
101
+ opentelemetry/*/opentelemetry/**/*.cc
102
+ opentelemetry/*/opentelemetry/third_party/opentelemetry-proto/opentelemetry/proto/**/*.proto
@@ -18,6 +18,7 @@
18
18
  #include "logger/logger.hxx"
19
19
  #include "meta/version.hxx"
20
20
  #include "topology/configuration.hxx"
21
+ #include "utils/binary.hxx"
21
22
  #include "utils/json.hxx"
22
23
 
23
24
  #include <spdlog/fmt/bin_to_hex.h>