couchbase 3.4.2 → 3.4.3

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 (241) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/couchbase/CMakeLists.txt +57 -7
  4. data/ext/couchbase/cmake/Documentation.cmake +0 -1
  5. data/ext/couchbase/cmake/OpenSSL.cmake +98 -3
  6. data/ext/couchbase/cmake/Testing.cmake +12 -4
  7. data/ext/couchbase/cmake/build_config.hxx.in +3 -0
  8. data/ext/couchbase/core/bucket.cxx +3 -2
  9. data/ext/couchbase/core/bucket.hxx +9 -0
  10. data/ext/couchbase/core/cluster.hxx +17 -0
  11. data/ext/couchbase/core/cluster_options.cxx +2 -2
  12. data/ext/couchbase/core/cluster_options.hxx +4 -6
  13. data/ext/couchbase/core/cluster_options_fwd.hxx +26 -0
  14. data/ext/couchbase/core/config_profile.hxx +1 -54
  15. data/ext/couchbase/core/config_profiles.cxx +79 -0
  16. data/ext/couchbase/core/config_profiles.hxx +56 -0
  17. data/ext/couchbase/core/error_context/search.hxx +1 -1
  18. data/ext/couchbase/core/impl/analytics.cxx +1 -0
  19. data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
  20. data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
  21. data/ext/couchbase/core/impl/cluster.cxx +2 -0
  22. data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
  23. data/ext/couchbase/core/impl/date_range.cxx +89 -0
  24. data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
  25. data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
  26. data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
  27. data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
  28. data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
  29. data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
  30. data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
  31. data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
  32. data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
  33. data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
  34. data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
  35. data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
  36. data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
  37. data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
  38. data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
  39. data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
  40. data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
  41. data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
  42. data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
  43. data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
  44. data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
  45. data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
  46. data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
  47. data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
  48. data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
  49. data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
  50. data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
  51. data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
  52. data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
  53. data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
  54. data/ext/couchbase/core/impl/match_query.cxx +59 -0
  55. data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
  56. data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
  57. data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
  58. data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
  59. data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
  60. data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
  61. data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
  62. data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
  63. data/ext/couchbase/core/impl/search.cxx +191 -0
  64. data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
  65. data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
  66. data/ext/couchbase/core/impl/search_result.cxx +66 -0
  67. data/ext/couchbase/core/impl/search_row.cxx +74 -0
  68. data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
  69. data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
  70. data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
  71. data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
  72. data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
  73. data/ext/couchbase/core/impl/term_facet.cxx +36 -0
  74. data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
  75. data/ext/couchbase/core/impl/term_query.cxx +56 -0
  76. data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
  77. data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
  78. data/ext/couchbase/core/io/http_context.hxx +1 -1
  79. data/ext/couchbase/core/io/http_session.hxx +10 -0
  80. data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
  81. data/ext/couchbase/core/io/mcbp_session.cxx +28 -1
  82. data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
  83. data/ext/couchbase/core/json_string.hxx +5 -0
  84. data/ext/couchbase/core/meta/version.cxx +18 -4
  85. data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
  86. data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
  87. data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
  88. data/ext/couchbase/core/operations/document_append.hxx +1 -1
  89. data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
  90. data/ext/couchbase/core/operations/document_exists.hxx +1 -1
  91. data/ext/couchbase/core/operations/document_get.hxx +1 -1
  92. data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
  93. data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
  94. data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
  95. data/ext/couchbase/core/operations/document_increment.hxx +1 -1
  96. data/ext/couchbase/core/operations/document_insert.hxx +1 -1
  97. data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
  98. data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
  99. data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
  100. data/ext/couchbase/core/operations/document_query.cxx +2 -0
  101. data/ext/couchbase/core/operations/document_query.hxx +6 -0
  102. data/ext/couchbase/core/operations/document_remove.hxx +1 -1
  103. data/ext/couchbase/core/operations/document_replace.hxx +1 -1
  104. data/ext/couchbase/core/operations/document_search.cxx +4 -1
  105. data/ext/couchbase/core/operations/document_search.hxx +2 -1
  106. data/ext/couchbase/core/operations/document_touch.hxx +1 -1
  107. data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
  108. data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
  109. data/ext/couchbase/core/operations/document_view.hxx +1 -0
  110. data/ext/couchbase/core/protocol/client_request.hxx +11 -2
  111. data/ext/couchbase/core/public_fwd.hxx +21 -0
  112. data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
  113. data/ext/couchbase/core/topology/configuration.cxx +15 -2
  114. data/ext/couchbase/core/topology/configuration.hxx +5 -1
  115. data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
  116. data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
  117. data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
  118. data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
  119. data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
  120. data/ext/couchbase/core/utils/connection_string.cxx +17 -0
  121. data/ext/couchbase/core/utils/json.cxx +4 -1
  122. data/ext/couchbase/couchbase/behavior_options.hxx +10 -1
  123. data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
  124. data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
  125. data/ext/couchbase/couchbase/cluster.hxx +42 -1
  126. data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
  127. data/ext/couchbase/couchbase/date_range.hxx +69 -0
  128. data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
  129. data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
  130. data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
  131. data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
  132. data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
  133. data/ext/couchbase/couchbase/error_context.hxx +7 -6
  134. data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
  135. data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
  136. data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
  137. data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
  138. data/ext/couchbase/couchbase/geo_point.hxx +32 -0
  139. data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
  140. data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
  141. data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
  142. data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
  143. data/ext/couchbase/couchbase/match_operator.hxx +45 -0
  144. data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
  145. data/ext/couchbase/couchbase/match_query.hxx +163 -0
  146. data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
  147. data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
  148. data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
  149. data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
  150. data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
  151. data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
  152. data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
  153. data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
  154. data/ext/couchbase/couchbase/scope.hxx +40 -0
  155. data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
  156. data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
  157. data/ext/couchbase/couchbase/search_facet.hxx +60 -0
  158. data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
  159. data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
  160. data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
  161. data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
  162. data/ext/couchbase/couchbase/search_options.hxx +509 -0
  163. data/ext/couchbase/couchbase/search_query.hxx +69 -0
  164. data/ext/couchbase/couchbase/search_result.hxx +77 -0
  165. data/ext/couchbase/couchbase/search_row.hxx +104 -0
  166. data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
  167. data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
  168. data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
  169. data/ext/couchbase/couchbase/search_sort.hxx +58 -0
  170. data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
  171. data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
  172. data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
  173. data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
  174. data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
  175. data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
  176. data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
  177. data/ext/couchbase/couchbase/security_options.hxx +3 -0
  178. data/ext/couchbase/couchbase/term_facet.hxx +48 -0
  179. data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
  180. data/ext/couchbase/couchbase/term_query.hxx +151 -0
  181. data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
  182. data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
  183. data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
  184. data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
  185. data/ext/couchbase/couchbase/transactions/attempt_context.hxx +67 -0
  186. data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
  187. data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
  188. data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
  189. data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
  190. data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
  191. data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
  192. data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
  193. data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
  194. data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
  195. data/ext/couchbase/couchbase/transactions.hxx +34 -1
  196. data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
  197. data/ext/couchbase/test/CMakeLists.txt +7 -5
  198. data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
  199. data/ext/couchbase/test/test_helper.hxx +5 -5
  200. data/ext/couchbase/test/test_integration_analytics.cxx +28 -6
  201. data/ext/couchbase/test/test_integration_collections.cxx +7 -3
  202. data/ext/couchbase/test/test_integration_connect.cxx +7 -3
  203. data/ext/couchbase/test/test_integration_crud.cxx +13 -3
  204. data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
  205. data/ext/couchbase/test/test_integration_durability.cxx +12 -7
  206. data/ext/couchbase/test/test_integration_examples.cxx +283 -11
  207. data/ext/couchbase/test/test_integration_management.cxx +147 -91
  208. data/ext/couchbase/test/test_integration_query.cxx +68 -10
  209. data/ext/couchbase/test/test_integration_range_scan.cxx +12 -12
  210. data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
  211. data/ext/couchbase/test/test_integration_search.cxx +22 -2
  212. data/ext/couchbase/test/test_integration_subdoc.cxx +62 -11
  213. data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
  214. data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
  215. data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
  216. data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
  217. data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +17 -5
  218. data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
  219. data/ext/couchbase/test/test_unit_config_profiles.cxx +1 -1
  220. data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
  221. data/ext/couchbase/test/test_unit_search.cxx +427 -0
  222. data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
  223. data/ext/couchbase/test/test_unit_utils.cxx +8 -4
  224. data/ext/couchbase.cxx +58 -16
  225. data/ext/revisions.rb +3 -3
  226. data/lib/couchbase/authenticator.rb +0 -1
  227. data/lib/couchbase/cluster.rb +0 -4
  228. data/lib/couchbase/config_profiles.rb +1 -1
  229. data/lib/couchbase/json_transcoder.rb +12 -5
  230. data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
  231. data/lib/couchbase/management/query_index_manager.rb +70 -5
  232. data/lib/couchbase/raw_binary_transcoder.rb +37 -0
  233. data/lib/couchbase/raw_json_transcoder.rb +38 -0
  234. data/lib/couchbase/raw_string_transcoder.rb +40 -0
  235. data/lib/couchbase/search_options.rb +5 -0
  236. data/lib/couchbase/transcoder_flags.rb +62 -0
  237. data/lib/couchbase/version.rb +1 -1
  238. metadata +139 -11
  239. data/ext/couchbase/core/config_profile.cxx +0 -47
  240. /data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +0 -0
  241. /data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +0 -0
@@ -0,0 +1,39 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <array>
21
+ #include <gsl/span>
22
+ #include <string_view>
23
+
24
+ namespace couchbase::core::default_ca
25
+ {
26
+ struct certificate {
27
+ std::string_view authority;
28
+ std::string_view body;
29
+ };
30
+
31
+ auto
32
+ mozilla_ca_certs() -> gsl::span<const certificate>;
33
+
34
+ auto
35
+ mozilla_ca_certs_date() -> std::string_view;
36
+
37
+ auto
38
+ mozilla_ca_certs_sha256() -> std::string_view;
39
+ } // namespace couchbase::core::default_ca
@@ -16,6 +16,7 @@
16
16
  */
17
17
 
18
18
  #include "document_analytics.hxx"
19
+ #include "core/cluster_options.hxx"
19
20
  #include "core/logger/logger.hxx"
20
21
  #include "core/utils/duration_parser.hxx"
21
22
  #include "core/utils/json.hxx"
@@ -24,6 +24,7 @@
24
24
  #include "core/io/http_traits.hxx"
25
25
  #include "core/json_string.hxx"
26
26
  #include "core/platform/uuid.h"
27
+ #include "core/public_fwd.hxx"
27
28
  #include "core/timeout_defaults.hxx"
28
29
 
29
30
  namespace couchbase::core::operations
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_append.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_decrement.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -23,8 +23,8 @@
23
23
  #include "core/io/retry_context.hxx"
24
24
  #include "core/protocol/client_request.hxx"
25
25
  #include "core/protocol/cmd_get_meta.hxx"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
- #include "couchbase/tracing/request_tracer.hxx"
28
28
 
29
29
  namespace couchbase::core::operations
30
30
  {
@@ -23,8 +23,8 @@
23
23
  #include "core/io/retry_context.hxx"
24
24
  #include "core/protocol/client_request.hxx"
25
25
  #include "core/protocol/cmd_get.hxx"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
- #include "couchbase/tracing/request_tracer.hxx"
28
28
 
29
29
  namespace couchbase::core::operations
30
30
  {
@@ -23,8 +23,8 @@
23
23
  #include "core/io/retry_context.hxx"
24
24
  #include "core/protocol/client_request.hxx"
25
25
  #include "core/protocol/cmd_get_and_lock.hxx"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
- #include "couchbase/tracing/request_tracer.hxx"
28
28
 
29
29
  namespace couchbase::core::operations
30
30
  {
@@ -24,8 +24,8 @@
24
24
  #include "core/io/retry_context.hxx"
25
25
  #include "core/protocol/client_request.hxx"
26
26
  #include "core/protocol/cmd_get_and_touch.hxx"
27
+ #include "core/public_fwd.hxx"
27
28
  #include "core/timeout_defaults.hxx"
28
- #include "couchbase/tracing/request_tracer.hxx"
29
29
 
30
30
  namespace couchbase::core::operations
31
31
  {
@@ -23,8 +23,8 @@
23
23
  #include "core/io/retry_context.hxx"
24
24
  #include "core/protocol/client_request.hxx"
25
25
  #include "core/protocol/cmd_lookup_in.hxx"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
- #include "couchbase/tracing/request_tracer.hxx"
28
28
 
29
29
  namespace couchbase::core::operations
30
30
  {
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_increment.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_insert.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -24,8 +24,8 @@
24
24
  #include "core/io/retry_context.hxx"
25
25
  #include "core/protocol/client_request.hxx"
26
26
  #include "core/protocol/cmd_lookup_in.hxx"
27
+ #include "core/public_fwd.hxx"
27
28
  #include "core/timeout_defaults.hxx"
28
- #include "couchbase/tracing/request_tracer.hxx"
29
29
 
30
30
  #include <couchbase/lookup_in_result.hxx>
31
31
 
@@ -26,8 +26,8 @@
26
26
  #include "core/operations/operation_traits.hxx"
27
27
  #include "core/protocol/client_request.hxx"
28
28
  #include "core/protocol/cmd_mutate_in.hxx"
29
+ #include "core/public_fwd.hxx"
29
30
  #include "core/timeout_defaults.hxx"
30
- #include "couchbase/tracing/request_tracer.hxx"
31
31
 
32
32
  #include <couchbase/durability_level.hxx>
33
33
  #include <couchbase/mutate_in_result.hxx>
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_prepend.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -16,6 +16,8 @@
16
16
  */
17
17
 
18
18
  #include "document_query.hxx"
19
+
20
+ #include "core/cluster_options.hxx"
19
21
  #include "core/logger/logger.hxx"
20
22
  #include "core/operations/management/error_utils.hxx"
21
23
  #include "core/utils/duration_parser.hxx"
@@ -23,6 +23,7 @@
23
23
  #include "core/io/http_traits.hxx"
24
24
  #include "core/json_string.hxx"
25
25
  #include "core/platform/uuid.h"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
28
 
28
29
  #include "couchbase/query_profile.hxx"
@@ -30,6 +31,11 @@
30
31
 
31
32
  #include <couchbase/mutation_token.hxx>
32
33
 
34
+ namespace couchbase::tracing
35
+ {
36
+ class request_span;
37
+ }
38
+
33
39
  namespace couchbase::core::operations
34
40
  {
35
41
  struct query_response {
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_remove.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_replace.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include "document_search.hxx"
19
19
 
20
+ #include "core/cluster_options.hxx"
20
21
  #include "core/logger/logger.hxx"
21
22
  #include "core/utils/json.hxx"
22
23
 
@@ -31,9 +32,11 @@ search_request::encode_to(search_request::encoded_request_type& encoded, http_co
31
32
  {
32
33
  auto body = tao::json::value{
33
34
  { "query", utils::json::parse(query) },
34
- { "explain", explain },
35
35
  { "ctl", { { "timeout", encoded.timeout.count() } } },
36
36
  };
37
+ if (explain) {
38
+ body["explain"] = *explain;
39
+ }
37
40
  if (limit) {
38
41
  body["size"] = *limit;
39
42
  }
@@ -23,6 +23,7 @@
23
23
  #include "core/io/http_traits.hxx"
24
24
  #include "core/json_string.hxx"
25
25
  #include "core/platform/uuid.h"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/search_highlight_style.hxx"
27
28
  #include "core/search_scan_consistency.hxx"
28
29
  #include "core/timeout_defaults.hxx"
@@ -120,7 +121,7 @@ struct search_request {
120
121
 
121
122
  std::optional<std::uint32_t> limit{};
122
123
  std::optional<std::uint32_t> skip{};
123
- bool explain{ false };
124
+ std::optional<bool> explain{ false };
124
125
  bool disable_scoring{ false };
125
126
  /**
126
127
  * UNCOMMITTED: If set to true, will include the vector of search_location in rows.
@@ -23,8 +23,8 @@
23
23
  #include "core/io/retry_context.hxx"
24
24
  #include "core/protocol/client_request.hxx"
25
25
  #include "core/protocol/cmd_touch.hxx"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
- #include "couchbase/tracing/request_tracer.hxx"
28
28
 
29
29
  namespace couchbase::core::operations
30
30
  {
@@ -23,8 +23,8 @@
23
23
  #include "core/io/retry_context.hxx"
24
24
  #include "core/protocol/client_request.hxx"
25
25
  #include "core/protocol/cmd_unlock.hxx"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
- #include "couchbase/tracing/request_tracer.hxx"
28
28
 
29
29
  namespace couchbase::core::operations
30
30
  {
@@ -25,8 +25,8 @@
25
25
  #include "core/operations/operation_traits.hxx"
26
26
  #include "core/protocol/client_request.hxx"
27
27
  #include "core/protocol/cmd_upsert.hxx"
28
+ #include "core/public_fwd.hxx"
28
29
  #include "core/timeout_defaults.hxx"
29
- #include "couchbase/tracing/request_tracer.hxx"
30
30
 
31
31
  #include <couchbase/durability_level.hxx>
32
32
 
@@ -23,6 +23,7 @@
23
23
  #include "core/io/http_message.hxx"
24
24
  #include "core/io/http_traits.hxx"
25
25
  #include "core/platform/uuid.h"
26
+ #include "core/public_fwd.hxx"
26
27
  #include "core/timeout_defaults.hxx"
27
28
  #include "core/view_on_error.hxx"
28
29
  #include "core/view_scan_consistency.hxx"
@@ -29,6 +29,8 @@
29
29
  #include <cstring>
30
30
  #include <gsl/util>
31
31
 
32
+ #include <iostream>
33
+
32
34
  namespace couchbase::core::protocol
33
35
  {
34
36
  std::pair<bool, std::uint32_t>
@@ -110,10 +112,17 @@ class client_request
110
112
  private:
111
113
  [[nodiscard]] std::vector<std::byte> generate_payload(bool try_to_compress)
112
114
  {
113
- std::vector<std::byte> payload(header_size + body_.size());
115
+ // SA: for some reason GCC 8.5.0 on CentOS 8 sees here null-pointer dereference
116
+ #if defined(__GNUC__) && __GNUC__ == 8
117
+ #pragma GCC diagnostic push
118
+ #pragma GCC diagnostic ignored "-Wnull-dereference"
119
+ #endif
120
+ std::vector<std::byte> payload(header_size + body_.size(), std::byte{});
114
121
  payload[0] = static_cast<std::byte>(magic_);
115
122
  payload[1] = static_cast<std::byte>(opcode_);
116
-
123
+ #if defined(__GNUC__) && __GNUC__ == 8
124
+ #pragma GCC diagnostic pop
125
+ #endif
117
126
  const auto& framing_extras = body_.framing_extras();
118
127
 
119
128
  std::uint16_t key_size = gsl::narrow_cast<std::uint16_t>(body_.key().size());
@@ -0,0 +1,21 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2022-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
6
+ * except in compliance with the License. You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software distributed under
11
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
12
+ * ANY KIND, either express or implied. See the License for the specific language governing
13
+ * permissions and limitations under the License.
14
+ */
15
+
16
+ #pragma once
17
+
18
+ namespace couchbase::tracing
19
+ {
20
+ class request_span;
21
+ } // namespace couchbase::tracing
@@ -0,0 +1,26 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-2021 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ namespace couchbase::core
21
+ {
22
+ enum class tls_verify_mode {
23
+ none,
24
+ peer,
25
+ };
26
+ } // namespace couchbase::core
@@ -20,6 +20,8 @@
20
20
  #include "core/logger/logger.hxx"
21
21
  #include "core/service_type_fmt.hxx"
22
22
 
23
+ #include <gsl/narrow>
24
+
23
25
  #include <algorithm>
24
26
  #include <stdexcept>
25
27
 
@@ -162,9 +164,20 @@ configuration::node::endpoint(const std::string& network, service_type type, boo
162
164
  }
163
165
 
164
166
  bool
165
- configuration::has_node_with_hostname(const std::string& hostname) const
167
+ configuration::has_node(const std::string& network, service_type type, bool is_tls, const std::string& hostname, const std::string& port)
168
+ const
166
169
  {
167
- return std::any_of(nodes.begin(), nodes.end(), [&hostname](const auto& n) { return n.hostname == hostname; });
170
+ std::uint16_t port_number{ 0 };
171
+ try {
172
+ port_number = gsl::narrow_cast<std::uint16_t>(std::stoul(port, nullptr, 10));
173
+ } catch (const std::invalid_argument&) {
174
+ return false;
175
+ } catch (const std::out_of_range&) {
176
+ return false;
177
+ }
178
+ return std::any_of(nodes.begin(), nodes.end(), [&](const auto& n) {
179
+ return n.hostname_for(network) == hostname && n.port_or(network, type, is_tls, 0) == port_number;
180
+ });
168
181
  }
169
182
 
170
183
  std::string
@@ -120,7 +120,11 @@ struct configuration {
120
120
  }
121
121
 
122
122
  [[nodiscard]] std::size_t index_for_this_node() const;
123
- [[nodiscard]] bool has_node_with_hostname(const std::string& hostname) const;
123
+ [[nodiscard]] bool has_node(const std::string& network,
124
+ service_type type,
125
+ bool is_tls,
126
+ const std::string& hostname,
127
+ const std::string& port) const;
124
128
 
125
129
  template<typename Key>
126
130
  std::pair<std::uint16_t, std::optional<std::size_t>> map_key(const Key& key, std::size_t index)
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright 2021-Present Couchbase, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #include "attempt_context_testing_hooks.hxx"
18
+
19
+ namespace couchbase::core::transactions
20
+ {
21
+ namespace
22
+ {
23
+ inline std::optional<error_class>
24
+ noop_1(attempt_context*)
25
+ {
26
+ return {};
27
+ }
28
+
29
+ inline std::optional<error_class>
30
+ noop_2(attempt_context*, const std::string&)
31
+ {
32
+ return {};
33
+ }
34
+
35
+ inline std::optional<const std::string>
36
+ noop_3(attempt_context*)
37
+ {
38
+ return {};
39
+ }
40
+
41
+ inline bool
42
+ noop_4(attempt_context*, const std::string&, std::optional<const std::string>)
43
+ {
44
+ return false;
45
+ }
46
+ } // namespace
47
+
48
+ attempt_context_testing_hooks::attempt_context_testing_hooks()
49
+ : before_atr_commit{ noop_1 }
50
+ , before_atr_commit_ambiguity_resolution{ noop_1 }
51
+ , after_atr_commit{ noop_1 }
52
+ , before_doc_committed{ noop_2 }
53
+ , before_removing_doc_during_staged_insert{ noop_2 }
54
+ , before_rollback_delete_inserted{ noop_2 }
55
+ , after_doc_committed_before_saving_cas{ noop_2 }
56
+ , after_doc_committed{ noop_2 }
57
+ , before_staged_insert{ noop_2 }
58
+ , before_staged_remove{ noop_2 }
59
+ , before_staged_replace{ noop_2 }
60
+ , before_doc_removed{ noop_2 }
61
+ , before_doc_rolled_back{ noop_2 }
62
+ , after_doc_removed_pre_retry{ noop_2 }
63
+ , after_doc_removed_post_retry{ noop_2 }
64
+ , after_get_complete{ noop_2 }
65
+ , after_staged_replace_complete_before_cas_saved{ noop_2 }
66
+ , after_staged_replace_complete{ noop_2 }
67
+ , after_staged_remove_complete{ noop_2 }
68
+ , after_staged_insert_complete{ noop_2 }
69
+ , after_rollback_replace_or_remove{ noop_2 }
70
+ , after_rollback_delete_inserted{ noop_2 }
71
+ , before_check_atr_entry_for_blocking_doc{ noop_2 }
72
+ , before_doc_get{ noop_2 }
73
+ , before_get_doc_in_exists_during_staged_insert{ noop_2 }
74
+ , before_query{ noop_2 }
75
+ , after_query{ noop_2 }
76
+ , before_remove_staged_insert{ noop_2 }
77
+ , after_remove_staged_insert{ noop_2 }
78
+ , after_docs_committed{ noop_1 }
79
+ , after_docs_removed{ noop_1 }
80
+ , after_atr_pending{ noop_1 }
81
+ , before_atr_pending{ noop_1 }
82
+ , before_atr_complete{ noop_1 }
83
+ , before_atr_rolled_back{ noop_1 }
84
+ , after_atr_complete{ noop_1 }
85
+ , before_get_atr_for_abort{ noop_1 }
86
+ , before_atr_aborted{ noop_1 }
87
+ , after_atr_aborted{ noop_1 }
88
+ , after_atr_rolled_back{ noop_1 }
89
+ , random_atr_id_for_vbucket{ noop_3 }
90
+ , has_expired_client_side{ noop_4 }
91
+ {
92
+ }
93
+ } // namespace couchbase::core::transactions