couchbase 3.4.1 → 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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/ext/couchbase/CMakeLists.txt +59 -7
- data/ext/couchbase/cmake/Documentation.cmake +0 -1
- data/ext/couchbase/cmake/OpenSSL.cmake +98 -3
- data/ext/couchbase/cmake/Testing.cmake +12 -4
- data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +4 -0
- data/ext/couchbase/cmake/build_config.hxx.in +3 -0
- data/ext/couchbase/core/bucket.cxx +3 -2
- data/ext/couchbase/core/bucket.hxx +9 -0
- data/ext/couchbase/core/cluster.hxx +17 -0
- data/ext/couchbase/core/cluster_options.cxx +2 -2
- data/ext/couchbase/core/cluster_options.hxx +4 -7
- data/ext/couchbase/core/{config_profile.cxx → cluster_options_fwd.hxx} +7 -6
- data/ext/couchbase/core/config_profile.hxx +2 -65
- data/ext/couchbase/core/config_profiles.cxx +79 -0
- data/ext/couchbase/core/config_profiles.hxx +56 -0
- data/ext/couchbase/core/error_context/search.hxx +1 -1
- data/ext/couchbase/core/impl/analytics.cxx +237 -0
- data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
- data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
- data/ext/couchbase/core/impl/cluster.cxx +2 -1
- data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/date_range.cxx +89 -0
- data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
- data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +5 -3
- data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
- data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
- data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
- data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
- data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
- data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
- data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
- data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
- data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
- data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
- data/ext/couchbase/core/impl/match_query.cxx +59 -0
- data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
- data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
- data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
- data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
- data/ext/couchbase/core/impl/query.cxx +5 -5
- data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
- data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
- data/ext/couchbase/core/impl/search.cxx +191 -0
- data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
- data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
- data/ext/couchbase/core/impl/search_result.cxx +66 -0
- data/ext/couchbase/core/impl/search_row.cxx +74 -0
- data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
- data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
- data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
- data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
- data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
- data/ext/couchbase/core/impl/term_facet.cxx +36 -0
- data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/term_query.cxx +56 -0
- data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
- data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
- data/ext/couchbase/core/io/dns_client.cxx +225 -0
- data/ext/couchbase/core/io/dns_client.hxx +19 -188
- data/ext/couchbase/core/io/http_context.hxx +1 -1
- data/ext/couchbase/core/io/http_session.hxx +10 -0
- data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
- data/ext/couchbase/core/io/mcbp_session.cxx +28 -1
- data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
- data/ext/couchbase/core/json_string.hxx +5 -0
- data/ext/couchbase/core/meta/version.cxx +18 -4
- data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
- data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
- data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
- data/ext/couchbase/core/operations/document_append.hxx +1 -1
- data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
- data/ext/couchbase/core/operations/document_exists.hxx +1 -1
- data/ext/couchbase/core/operations/document_get.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
- data/ext/couchbase/core/operations/document_increment.hxx +1 -1
- data/ext/couchbase/core/operations/document_insert.hxx +1 -1
- data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
- data/ext/couchbase/core/operations/document_query.cxx +2 -0
- data/ext/couchbase/core/operations/document_query.hxx +6 -0
- data/ext/couchbase/core/operations/document_remove.hxx +1 -1
- data/ext/couchbase/core/operations/document_replace.hxx +1 -1
- data/ext/couchbase/core/operations/document_search.cxx +4 -1
- data/ext/couchbase/core/operations/document_search.hxx +2 -1
- data/ext/couchbase/core/operations/document_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
- data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
- data/ext/couchbase/core/operations/document_view.hxx +1 -0
- data/ext/couchbase/core/protocol/client_request.hxx +11 -2
- data/ext/couchbase/core/public_fwd.hxx +21 -0
- data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
- data/ext/couchbase/core/topology/configuration.cxx +15 -2
- data/ext/couchbase/core/topology/configuration.hxx +5 -1
- data/ext/couchbase/core/transactions/active_transaction_record.hxx +2 -2
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +3 -0
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +1 -1
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
- data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
- data/ext/couchbase/core/transactions/internal/transaction_context.hxx +12 -12
- data/ext/couchbase/core/transactions/internal/transactions_cleanup.hxx +7 -1
- data/ext/couchbase/core/transactions/transaction_context.cxx +1 -0
- data/ext/couchbase/core/transactions/transactions_cleanup.cxx +144 -155
- data/ext/couchbase/core/utils/connection_string.cxx +27 -3
- data/ext/couchbase/core/utils/connection_string.hxx +3 -3
- data/ext/couchbase/core/utils/json.cxx +4 -1
- data/ext/couchbase/couchbase/analytics_error_context.hxx +143 -0
- data/ext/couchbase/couchbase/analytics_meta_data.hxx +155 -0
- data/ext/couchbase/couchbase/analytics_metrics.hxx +163 -0
- data/ext/couchbase/couchbase/analytics_options.hxx +359 -0
- data/ext/couchbase/couchbase/analytics_result.hxx +102 -0
- data/ext/couchbase/couchbase/analytics_scan_consistency.hxx +46 -0
- data/ext/couchbase/couchbase/analytics_status.hxx +41 -0
- data/ext/couchbase/couchbase/analytics_warning.hxx +85 -0
- data/ext/couchbase/couchbase/behavior_options.hxx +10 -1
- data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
- data/ext/couchbase/couchbase/cluster.hxx +75 -1
- data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
- data/ext/couchbase/couchbase/date_range.hxx +69 -0
- data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
- data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
- data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
- data/ext/couchbase/couchbase/error_context.hxx +7 -6
- data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
- data/ext/couchbase/couchbase/fmt/analytics_status.hxx +76 -0
- data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
- data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
- data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
- data/ext/couchbase/couchbase/geo_point.hxx +32 -0
- data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
- data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
- data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_operator.hxx +45 -0
- data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
- data/ext/couchbase/couchbase/match_query.hxx +163 -0
- data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
- data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
- data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
- data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
- data/ext/couchbase/couchbase/query_options.hxx +0 -1
- data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
- data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
- data/ext/couchbase/couchbase/scope.hxx +73 -0
- data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
- data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
- data/ext/couchbase/couchbase/search_facet.hxx +60 -0
- data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
- data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
- data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
- data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
- data/ext/couchbase/couchbase/search_options.hxx +509 -0
- data/ext/couchbase/couchbase/search_query.hxx +69 -0
- data/ext/couchbase/couchbase/search_result.hxx +77 -0
- data/ext/couchbase/couchbase/search_row.hxx +104 -0
- data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
- data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
- data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
- data/ext/couchbase/couchbase/search_sort.hxx +58 -0
- data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
- data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
- data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
- data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
- data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
- data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
- data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
- data/ext/couchbase/couchbase/security_options.hxx +3 -0
- data/ext/couchbase/couchbase/term_facet.hxx +48 -0
- data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/term_query.hxx +151 -0
- data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
- data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
- data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
- data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
- data/ext/couchbase/couchbase/transactions/attempt_context.hxx +68 -1
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
- data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
- data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
- data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
- data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
- data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
- data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
- data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
- data/ext/couchbase/couchbase/transactions.hxx +34 -1
- data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
- data/ext/couchbase/test/CMakeLists.txt +8 -7
- data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
- data/ext/couchbase/test/test_helper.hxx +6 -6
- data/ext/couchbase/test/test_integration_analytics.cxx +314 -16
- data/ext/couchbase/test/test_integration_collections.cxx +7 -3
- data/ext/couchbase/test/test_integration_connect.cxx +7 -3
- data/ext/couchbase/test/test_integration_crud.cxx +19 -2
- data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
- data/ext/couchbase/test/test_integration_durability.cxx +12 -7
- data/ext/couchbase/test/test_integration_examples.cxx +324 -11
- data/ext/couchbase/test/test_integration_management.cxx +162 -94
- data/ext/couchbase/test/test_integration_query.cxx +68 -10
- data/ext/couchbase/test/test_integration_range_scan.cxx +12 -12
- data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
- data/ext/couchbase/test/test_integration_search.cxx +621 -0
- data/ext/couchbase/test/test_integration_subdoc.cxx +62 -11
- data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
- data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
- data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
- data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
- data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +90 -5
- data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
- data/ext/couchbase/test/test_unit_config_profiles.cxx +13 -13
- data/ext/couchbase/test/test_unit_connection_string.cxx +35 -0
- data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
- data/ext/couchbase/test/test_unit_search.cxx +427 -0
- data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
- data/ext/couchbase/test/test_unit_utils.cxx +8 -4
- data/ext/couchbase/third_party/snappy/CMakeLists.txt +150 -27
- data/ext/couchbase/third_party/snappy/cmake/config.h.in +28 -24
- data/ext/couchbase/third_party/snappy/snappy-internal.h +189 -25
- data/ext/couchbase/third_party/snappy/snappy-sinksource.cc +26 -9
- data/ext/couchbase/third_party/snappy/snappy-sinksource.h +11 -11
- data/ext/couchbase/third_party/snappy/snappy-stubs-internal.cc +1 -1
- data/ext/couchbase/third_party/snappy/snappy-stubs-internal.h +227 -308
- data/ext/couchbase/third_party/snappy/snappy-stubs-public.h.in +0 -11
- data/ext/couchbase/third_party/snappy/snappy.cc +1176 -410
- data/ext/couchbase/third_party/snappy/snappy.h +19 -4
- data/ext/couchbase.cxx +85 -22
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/authenticator.rb +0 -1
- data/lib/couchbase/cluster.rb +13 -13
- data/lib/couchbase/cluster_registry.rb +7 -2
- data/lib/couchbase/config_profiles.rb +1 -1
- data/lib/couchbase/configuration.rb +3 -4
- data/lib/couchbase/json_transcoder.rb +12 -5
- data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
- data/lib/couchbase/management/query_index_manager.rb +70 -5
- data/lib/couchbase/options.rb +85 -2
- data/lib/couchbase/raw_binary_transcoder.rb +37 -0
- data/lib/couchbase/raw_json_transcoder.rb +38 -0
- data/lib/couchbase/raw_string_transcoder.rb +40 -0
- data/lib/couchbase/search_options.rb +163 -240
- data/lib/couchbase/transcoder_flags.rb +62 -0
- data/lib/couchbase/version.rb +1 -1
- metadata +151 -12
- data/ext/couchbase/core/CMakeLists.txt +0 -0
- /data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +0 -0
- /data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 573df37049b91d6dc00b674904dbda7883a4a20e7078191fc01f3b29f139df13
|
|
4
|
+
data.tar.gz: ec07bdbe1a3cdd5caab78b7bc4af3e525d0dba25e54e8bfb13b5d07203c0361a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3b945f9a1942520c04fb22810049bda99e4daecccbadab60c9df474ec9d606a92f253f56e815739e3d64c927727d83d74265973fa72a6493ab38cc27df5f0913
|
|
7
|
+
data.tar.gz: 7cfa5628c2dc3a4c43741e139e064ac20f1085fd446f3b10cc480fc622464d0396cfa31d470cdca9c7c8323bb37d6b38ef1200c4b8d4b511fea0642a56f699d5
|
data/README.md
CHANGED
|
@@ -23,7 +23,7 @@ The library has been tested with MRI 3.0, 3.1 and 3.2. Supported platforms are L
|
|
|
23
23
|
Add this line to your application's Gemfile:
|
|
24
24
|
|
|
25
25
|
```ruby
|
|
26
|
-
gem "couchbase", "3.4.
|
|
26
|
+
gem "couchbase", "3.4.3"
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
And then execute:
|
|
@@ -139,7 +139,7 @@ Now the API reference is accessible using a web browser (where `VERSION` is the
|
|
|
139
139
|
|
|
140
140
|
The gem is available as open source under the terms of the [Apache2 License](https://opensource.org/licenses/Apache-2.0).
|
|
141
141
|
|
|
142
|
-
Copyright 2011-
|
|
142
|
+
Copyright 2011-Present Couchbase, Inc.
|
|
143
143
|
|
|
144
144
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
145
145
|
you may not use this file except in compliance with the License.
|
|
@@ -80,6 +80,7 @@ add_subdirectory(core/tracing)
|
|
|
80
80
|
add_subdirectory(core/metrics)
|
|
81
81
|
|
|
82
82
|
set(couchbase_cxx_client_FILES
|
|
83
|
+
${CMAKE_CURRENT_BINARY_DIR}/generated/mozilla_ca_bundle.cxx
|
|
83
84
|
core/agent.cxx
|
|
84
85
|
core/agent_config.cxx
|
|
85
86
|
core/agent_group.cxx
|
|
@@ -91,7 +92,7 @@ set(couchbase_cxx_client_FILES
|
|
|
91
92
|
core/cluster_agent_config.cxx
|
|
92
93
|
core/cluster_options.cxx
|
|
93
94
|
core/collections_component.cxx
|
|
94
|
-
core/
|
|
95
|
+
core/config_profiles.cxx
|
|
95
96
|
core/core_sdk_shim.cxx
|
|
96
97
|
core/crud_component.cxx
|
|
97
98
|
core/dispatcher.cxx
|
|
@@ -255,41 +256,74 @@ set(couchbase_cxx_client_FILES
|
|
|
255
256
|
core/utils/mutation_token.cxx
|
|
256
257
|
core/utils/split_string.cxx
|
|
257
258
|
core/utils/url_codec.cxx
|
|
259
|
+
core/impl/analytics.cxx
|
|
260
|
+
core/impl/search.cxx
|
|
258
261
|
core/impl/analytics_error_category.cxx
|
|
259
262
|
core/impl/append.cxx
|
|
260
263
|
core/impl/best_effort_retry_strategy.cxx
|
|
264
|
+
core/impl/boolean_field_query.cxx
|
|
265
|
+
core/impl/boolean_query.cxx
|
|
261
266
|
core/impl/build_deferred_query_indexes.cxx
|
|
262
|
-
core/impl/collection_query_index_manager.cxx
|
|
263
267
|
core/impl/cluster.cxx
|
|
268
|
+
core/impl/collection_query_index_manager.cxx
|
|
264
269
|
core/impl/common_error_category.cxx
|
|
265
270
|
core/impl/configuration_profiles_registry.cxx
|
|
271
|
+
core/impl/conjunction_query.cxx
|
|
266
272
|
core/impl/create_query_index.cxx
|
|
273
|
+
core/impl/date_range.cxx
|
|
274
|
+
core/impl/date_range_facet.cxx
|
|
275
|
+
core/impl/date_range_facet_result.cxx
|
|
276
|
+
core/impl/date_range_query.cxx
|
|
267
277
|
core/impl/decrement.cxx
|
|
278
|
+
core/impl/disjunction_query.cxx
|
|
268
279
|
core/impl/dns_srv_tracker.cxx
|
|
269
280
|
core/impl/drop_query_index.cxx
|
|
270
281
|
core/impl/exists.cxx
|
|
271
282
|
core/impl/expiry.cxx
|
|
272
283
|
core/impl/fail_fast_retry_strategy.cxx
|
|
273
284
|
core/impl/field_level_encryption_error_category.cxx
|
|
285
|
+
core/impl/geo_bounding_box_query.cxx
|
|
286
|
+
core/impl/geo_distance_query.cxx
|
|
287
|
+
core/impl/geo_polygon_query.cxx
|
|
274
288
|
core/impl/get.cxx
|
|
289
|
+
core/impl/get_all_query_indexes.cxx
|
|
275
290
|
core/impl/get_all_replicas.cxx
|
|
276
291
|
core/impl/get_and_lock.cxx
|
|
277
292
|
core/impl/get_and_touch.cxx
|
|
278
|
-
core/impl/get_all_query_indexes.cxx
|
|
279
293
|
core/impl/get_any_replica.cxx
|
|
280
294
|
core/impl/get_replica.cxx
|
|
281
295
|
core/impl/increment.cxx
|
|
282
296
|
core/impl/insert.cxx
|
|
297
|
+
core/impl/internal_date_range_facet_result.cxx
|
|
298
|
+
core/impl/internal_numeric_range_facet_result.cxx
|
|
299
|
+
core/impl/internal_search_error_context.cxx
|
|
300
|
+
core/impl/internal_search_meta_data.cxx
|
|
301
|
+
core/impl/internal_search_result.cxx
|
|
302
|
+
core/impl/internal_search_row.cxx
|
|
303
|
+
core/impl/internal_search_row_locations.cxx
|
|
304
|
+
core/impl/internal_term_facet_result.cxx
|
|
283
305
|
core/impl/key_value_error_category.cxx
|
|
284
306
|
core/impl/lookup_in.cxx
|
|
285
307
|
core/impl/management_error_category.cxx
|
|
308
|
+
core/impl/match_all_query.cxx
|
|
309
|
+
core/impl/match_none_query.cxx
|
|
310
|
+
core/impl/match_phrase_query.cxx
|
|
311
|
+
core/impl/match_query.cxx
|
|
286
312
|
core/impl/mutate_in.cxx
|
|
287
313
|
core/impl/network_error_category.cxx
|
|
314
|
+
core/impl/numeric_range.cxx
|
|
315
|
+
core/impl/numeric_range_facet.cxx
|
|
316
|
+
core/impl/numeric_range_facet_result.cxx
|
|
317
|
+
core/impl/numeric_range_query.cxx
|
|
288
318
|
core/impl/observe_poll.cxx
|
|
289
319
|
core/impl/observe_seqno.cxx
|
|
320
|
+
core/impl/phrase_query.cxx
|
|
321
|
+
core/impl/prefix_query.cxx
|
|
290
322
|
core/impl/prepend.cxx
|
|
291
323
|
core/impl/query.cxx
|
|
292
324
|
core/impl/query_error_category.cxx
|
|
325
|
+
core/impl/query_string_query.cxx
|
|
326
|
+
core/impl/regexp_query.cxx
|
|
293
327
|
core/impl/remove.cxx
|
|
294
328
|
core/impl/replace.cxx
|
|
295
329
|
core/impl/retry_action.cxx
|
|
@@ -313,6 +347,20 @@ set(couchbase_cxx_client_FILES
|
|
|
313
347
|
core/impl/subdoc/remove.cxx
|
|
314
348
|
core/impl/subdoc/replace.cxx
|
|
315
349
|
core/impl/subdoc/upsert.cxx
|
|
350
|
+
core/impl/search.cxx
|
|
351
|
+
core/impl/search_error_context.cxx
|
|
352
|
+
core/impl/search_meta_data.cxx
|
|
353
|
+
core/impl/search_result.cxx
|
|
354
|
+
core/impl/search_row.cxx
|
|
355
|
+
core/impl/search_row_location.cxx
|
|
356
|
+
core/impl/search_row_locations.cxx
|
|
357
|
+
core/impl/search_sort_field.cxx
|
|
358
|
+
core/impl/search_sort_id.cxx
|
|
359
|
+
core/impl/search_sort_score.cxx
|
|
360
|
+
core/impl/term_facet.cxx
|
|
361
|
+
core/impl/term_facet_result.cxx
|
|
362
|
+
core/impl/term_query.cxx
|
|
363
|
+
core/impl/term_range_query.cxx
|
|
316
364
|
core/impl/touch.cxx
|
|
317
365
|
core/impl/transaction_error_category.cxx
|
|
318
366
|
core/impl/transaction_get_result.cxx
|
|
@@ -321,6 +369,8 @@ set(couchbase_cxx_client_FILES
|
|
|
321
369
|
core/impl/upsert.cxx
|
|
322
370
|
core/impl/view_error_category.cxx
|
|
323
371
|
core/impl/watch_query_indexes.cxx
|
|
372
|
+
core/impl/wildcard_query.cxx
|
|
373
|
+
core/io/dns_client.cxx
|
|
324
374
|
core/io/dns_config.cxx
|
|
325
375
|
core/io/http_parser.cxx
|
|
326
376
|
core/io/mcbp_message.cxx
|
|
@@ -329,11 +379,12 @@ set(couchbase_cxx_client_FILES
|
|
|
329
379
|
core/transactions/atr_cleanup_entry.cxx
|
|
330
380
|
core/transactions/atr_ids.cxx
|
|
331
381
|
core/transactions/attempt_context_impl.cxx
|
|
382
|
+
core/transactions/attempt_context_testing_hooks.cxx
|
|
332
383
|
core/transactions/binary.cxx
|
|
384
|
+
core/transactions/cleanup_testing_hooks.cxx
|
|
333
385
|
core/transactions/exceptions.cxx
|
|
334
386
|
core/transactions/result.cxx
|
|
335
387
|
core/transactions/staged_mutation.cxx
|
|
336
|
-
core/transactions/utils.cxx
|
|
337
388
|
core/transactions/transaction_attempt.cxx
|
|
338
389
|
core/transactions/transaction_context.cxx
|
|
339
390
|
core/transactions/transaction_get_result.cxx
|
|
@@ -342,7 +393,8 @@ set(couchbase_cxx_client_FILES
|
|
|
342
393
|
core/transactions/transactions.cxx
|
|
343
394
|
core/transactions/transactions_cleanup.cxx
|
|
344
395
|
core/transactions/transactions_config.cxx
|
|
345
|
-
core/transactions/uid_generator.cxx
|
|
396
|
+
core/transactions/uid_generator.cxx
|
|
397
|
+
core/transactions/utils.cxx)
|
|
346
398
|
|
|
347
399
|
if (COUCHBASE_CXX_CLIENT_BUILD_SHARED)
|
|
348
400
|
add_library(couchbase_cxx_client SHARED ${couchbase_cxx_client_FILES})
|
|
@@ -401,9 +453,9 @@ endif ()
|
|
|
401
453
|
if (NOT COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL)
|
|
402
454
|
if (TARGET PkgConfig::PKG_CONFIG_OPENSSL)
|
|
403
455
|
target_link_libraries(couchbase_cxx_client PUBLIC PkgConfig::PKG_CONFIG_OPENSSL)
|
|
404
|
-
else()
|
|
456
|
+
else ()
|
|
405
457
|
target_link_libraries(couchbase_cxx_client PUBLIC OpenSSL::SSL OpenSSL::Crypto)
|
|
406
|
-
endif()
|
|
458
|
+
endif ()
|
|
407
459
|
endif ()
|
|
408
460
|
|
|
409
461
|
option(COUCHBASE_CXX_CLIENT_BUILD_TESTS "Build test programs" TRUE)
|
|
@@ -20,7 +20,6 @@ if(DOXYGEN_FOUND AND DOT)
|
|
|
20
20
|
set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/html/index.html)
|
|
21
21
|
set(DOXYGEN_CONFIG_TEMPLATE ${PROJECT_SOURCE_DIR}/docs/Doxyfile.in)
|
|
22
22
|
set(DOXYGEN_CONFIG ${PROJECT_BINARY_DIR}/Doxyfile)
|
|
23
|
-
file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR})
|
|
24
23
|
configure_file(${DOXYGEN_CONFIG_TEMPLATE} ${DOXYGEN_CONFIG})
|
|
25
24
|
add_custom_command(
|
|
26
25
|
OUTPUT ${DOXYGEN_INDEX_FILE}
|
|
@@ -49,7 +49,7 @@ else()
|
|
|
49
49
|
OPENSSL_USABLE ${CMAKE_CURRENT_BINARY_DIR}
|
|
50
50
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/test_openssl.cxx
|
|
51
51
|
LINK_LIBRARIES OpenSSL::SSL CXX_STANDARD 17)
|
|
52
|
-
if(
|
|
52
|
+
if(OPENSSL_USABLE)
|
|
53
53
|
message(STATUS "OPENSSL_VERSION: ${OPENSSL_VERSION}")
|
|
54
54
|
message(STATUS "OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}")
|
|
55
55
|
message(STATUS "OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}")
|
|
@@ -60,7 +60,12 @@ else()
|
|
|
60
60
|
"Cannot use OpenSSL ${OPENSSL_VERSION} at \"${OPENSSL_INCLUDE_DIR}\" and \"${OPENSSL_LIBRARIES}\". Will try to use from pkg-config."
|
|
61
61
|
)
|
|
62
62
|
find_package(PkgConfig REQUIRED)
|
|
63
|
-
pkg_check_modules(
|
|
63
|
+
pkg_check_modules(
|
|
64
|
+
PKG_CONFIG_OPENSSL
|
|
65
|
+
REQUIRED
|
|
66
|
+
IMPORTED_TARGET
|
|
67
|
+
GLOBAL
|
|
68
|
+
openssl11)
|
|
64
69
|
if(PKG_CONFIG_OPENSSL_FOUND)
|
|
65
70
|
message(STATUS "PKG_CONFIG_OPENSSL_VERSION: ${PKG_CONFIG_OPENSSL_VERSION}")
|
|
66
71
|
message(STATUS "PKG_CONFIG_OPENSSL_INCLUDE_DIRS: ${PKG_CONFIG_OPENSSL_INCLUDE_DIRS}")
|
|
@@ -74,7 +79,12 @@ else()
|
|
|
74
79
|
endif()
|
|
75
80
|
elseif(UNIX)
|
|
76
81
|
find_package(PkgConfig REQUIRED)
|
|
77
|
-
pkg_check_modules(
|
|
82
|
+
pkg_check_modules(
|
|
83
|
+
PKG_CONFIG_OPENSSL
|
|
84
|
+
REQUIRED
|
|
85
|
+
IMPORTED_TARGET
|
|
86
|
+
GLOBAL
|
|
87
|
+
openssl11)
|
|
78
88
|
if(PKG_CONFIG_OPENSSL_FOUND)
|
|
79
89
|
message(STATUS "PKG_CONFIG_OPENSSL_VERSION: ${PKG_CONFIG_OPENSSL_VERSION}")
|
|
80
90
|
message(STATUS "PKG_CONFIG_OPENSSL_INCLUDE_DIRS: ${PKG_CONFIG_OPENSSL_INCLUDE_DIRS}")
|
|
@@ -90,3 +100,88 @@ endif()
|
|
|
90
100
|
# Read more at https://wiki.wireshark.org/TLS
|
|
91
101
|
option(COUCHBASE_CXX_CLIENT_TLS_KEY_LOG_FILE
|
|
92
102
|
"Path to file to write per-session secrets (Useful for Wireshark SSL/TLS dissection)")
|
|
103
|
+
|
|
104
|
+
option(COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE
|
|
105
|
+
"Download and embed Mozilla certificates from https://curl.se/ca/cacert.pem" TRUE)
|
|
106
|
+
|
|
107
|
+
if(COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE)
|
|
108
|
+
file(DOWNLOAD "https://curl.se/ca/cacert.pem.sha256" "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.sha256"
|
|
109
|
+
TLS_VERIFY ON)
|
|
110
|
+
file(READ "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.sha256" HASH_FILE_CONTENT)
|
|
111
|
+
string(
|
|
112
|
+
REGEX MATCH
|
|
113
|
+
"^([0-9a-f]+)"
|
|
114
|
+
COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256
|
|
115
|
+
${HASH_FILE_CONTENT})
|
|
116
|
+
if(NOT COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256)
|
|
117
|
+
message(FATAL_ERROR "Failed to extract expected hash from file")
|
|
118
|
+
endif()
|
|
119
|
+
file(
|
|
120
|
+
DOWNLOAD "https://curl.se/ca/cacert.pem" "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.crt"
|
|
121
|
+
TLS_VERIFY ON
|
|
122
|
+
EXPECTED_HASH SHA256=${COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256})
|
|
123
|
+
|
|
124
|
+
file(READ "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.crt" CA_BUNDLE_CONTENT)
|
|
125
|
+
string(
|
|
126
|
+
REGEX MATCH
|
|
127
|
+
"Certificate data from Mozilla as of: ([^\n]*)"
|
|
128
|
+
CA_BUNDLE_DATE_LINE
|
|
129
|
+
${CA_BUNDLE_CONTENT})
|
|
130
|
+
set(COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "${CMAKE_MATCH_1}")
|
|
131
|
+
else()
|
|
132
|
+
set(CA_BUNDLE_CONTENT "")
|
|
133
|
+
endif()
|
|
134
|
+
|
|
135
|
+
set(CA_BUNDLE_CPP_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/mozilla_ca_bundle.cxx")
|
|
136
|
+
|
|
137
|
+
# We parse CRT file because C++ does not allow string literals over 64k, and turning everything into bytes does not
|
|
138
|
+
# seems to be cross-platform and fast.
|
|
139
|
+
string(
|
|
140
|
+
REGEX MATCHALL
|
|
141
|
+
"[^=#]+=+\n-----BEGIN CERTIFICATE-----[^-]+-----END CERTIFICATE-----"
|
|
142
|
+
CERTIFICATES
|
|
143
|
+
"${CA_BUNDLE_CONTENT}")
|
|
144
|
+
list(LENGTH CERTIFICATES NUMBER_OF_CERTIFICATES)
|
|
145
|
+
file(
|
|
146
|
+
WRITE ${CA_BUNDLE_CPP_FILE}
|
|
147
|
+
"
|
|
148
|
+
#include \"core/mozilla_ca_bundle.hxx\"
|
|
149
|
+
|
|
150
|
+
namespace couchbase::core::default_ca
|
|
151
|
+
{
|
|
152
|
+
constexpr inline std::size_t number_of_certificates{ ${NUMBER_OF_CERTIFICATES} };
|
|
153
|
+
constexpr inline certificate certificates[]{
|
|
154
|
+
")
|
|
155
|
+
foreach(CERTIFICATE ${CERTIFICATES})
|
|
156
|
+
string(
|
|
157
|
+
REGEX MATCH
|
|
158
|
+
"[ \t\r\n]*([^=\n]+)[ \t\r\n]*=+\n(-----BEGIN CERTIFICATE-----[^-]+-----END CERTIFICATE-----)"
|
|
159
|
+
PARTS
|
|
160
|
+
${CERTIFICATE})
|
|
161
|
+
file(APPEND ${CA_BUNDLE_CPP_FILE} " { R\"(${CMAKE_MATCH_1})\",\n R\"(${CMAKE_MATCH_2})\" },\n\n")
|
|
162
|
+
endforeach()
|
|
163
|
+
|
|
164
|
+
file(
|
|
165
|
+
APPEND ${CA_BUNDLE_CPP_FILE}
|
|
166
|
+
" { \"\", \"\" },
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
auto
|
|
170
|
+
mozilla_ca_certs() -> gsl::span<const certificate>
|
|
171
|
+
{
|
|
172
|
+
return { certificates, number_of_certificates };
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
auto
|
|
176
|
+
mozilla_ca_certs_date() -> std::string_view
|
|
177
|
+
{
|
|
178
|
+
return \"${COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE}\";
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
auto
|
|
182
|
+
mozilla_ca_certs_sha256() -> std::string_view
|
|
183
|
+
{
|
|
184
|
+
return \"${COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256}\";
|
|
185
|
+
}
|
|
186
|
+
} // namespace couchbase::core::default_ca
|
|
187
|
+
")
|
|
@@ -17,7 +17,7 @@ macro(integration_test name)
|
|
|
17
17
|
test_integration_${name}
|
|
18
18
|
project_options
|
|
19
19
|
project_warnings
|
|
20
|
-
Catch2::
|
|
20
|
+
Catch2::Catch2WithMain
|
|
21
21
|
Threads::Threads
|
|
22
22
|
snappy
|
|
23
23
|
couchbase_cxx_client
|
|
@@ -25,6 +25,8 @@ macro(integration_test name)
|
|
|
25
25
|
catch_discover_tests(
|
|
26
26
|
test_integration_${name}
|
|
27
27
|
PROPERTIES
|
|
28
|
+
SKIP_REGULAR_EXPRESSION
|
|
29
|
+
"SKIP"
|
|
28
30
|
LABELS
|
|
29
31
|
"integration")
|
|
30
32
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_INTEGRATION_TESTS "test_integration_${name}")
|
|
@@ -44,7 +46,7 @@ macro(transaction_test name)
|
|
|
44
46
|
test_transaction_${name}
|
|
45
47
|
project_options
|
|
46
48
|
project_warnings
|
|
47
|
-
Catch2::
|
|
49
|
+
Catch2::Catch2WithMain
|
|
48
50
|
Threads::Threads
|
|
49
51
|
snappy
|
|
50
52
|
couchbase_cxx_client
|
|
@@ -52,6 +54,8 @@ macro(transaction_test name)
|
|
|
52
54
|
catch_discover_tests(
|
|
53
55
|
test_transaction_${name}
|
|
54
56
|
PROPERTIES
|
|
57
|
+
SKIP_REGULAR_EXPRESSION
|
|
58
|
+
"SKIP"
|
|
55
59
|
LABELS
|
|
56
60
|
"transaction")
|
|
57
61
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_TRANSACTION_TESTS "test_transaction_${name}")
|
|
@@ -70,7 +74,7 @@ macro(unit_test name)
|
|
|
70
74
|
test_unit_${name}
|
|
71
75
|
project_options
|
|
72
76
|
project_warnings
|
|
73
|
-
Catch2::
|
|
77
|
+
Catch2::Catch2WithMain
|
|
74
78
|
Threads::Threads
|
|
75
79
|
snappy
|
|
76
80
|
couchbase_cxx_client
|
|
@@ -78,6 +82,8 @@ macro(unit_test name)
|
|
|
78
82
|
catch_discover_tests(
|
|
79
83
|
test_unit_${name}
|
|
80
84
|
PROPERTIES
|
|
85
|
+
SKIP_REGULAR_EXPRESSION
|
|
86
|
+
"SKIP"
|
|
81
87
|
LABELS
|
|
82
88
|
"unit")
|
|
83
89
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_UNIT_TESTS "test_unit_${name}")
|
|
@@ -96,7 +102,7 @@ macro(integration_benchmark name)
|
|
|
96
102
|
benchmark_integration_${name}
|
|
97
103
|
project_options
|
|
98
104
|
project_warnings
|
|
99
|
-
Catch2::
|
|
105
|
+
Catch2::Catch2WithMain
|
|
100
106
|
Threads::Threads
|
|
101
107
|
snappy
|
|
102
108
|
couchbase_cxx_client
|
|
@@ -104,6 +110,8 @@ macro(integration_benchmark name)
|
|
|
104
110
|
catch_discover_tests(
|
|
105
111
|
benchmark_integration_${name}
|
|
106
112
|
PROPERTIES
|
|
113
|
+
SKIP_REGULAR_EXPRESSION
|
|
114
|
+
"SKIP"
|
|
107
115
|
LABELS
|
|
108
116
|
"benchmark")
|
|
109
117
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_BENCHMARKS "benchmark_integration_${name}")
|
|
@@ -18,6 +18,10 @@ set(PEGTL_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
|
18
18
|
set(PEGTL_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
19
19
|
add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/snappy)
|
|
20
20
|
set_target_properties(snappy PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
21
|
+
if(NOT MSVC)
|
|
22
|
+
# https://github.com/google/snappy/pull/156
|
|
23
|
+
target_compile_options(snappy PRIVATE -Wno-sign-compare)
|
|
24
|
+
endif()
|
|
21
25
|
|
|
22
26
|
set(HDR_LOG_REQUIRED OFF CACHE BOOL "" FORCE)
|
|
23
27
|
set(HDR_HISTOGRAM_BUILD_SHARED OFF CACHE BOOL "" FORCE)
|
|
@@ -18,3 +18,6 @@
|
|
|
18
18
|
#pragma once
|
|
19
19
|
|
|
20
20
|
#cmakedefine TLS_KEY_LOG_FILE "@TLS_KEY_LOG_FILE@"
|
|
21
|
+
#cmakedefine COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE
|
|
22
|
+
#cmakedefine COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "@COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE@"
|
|
23
|
+
#cmakedefine COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256 "@COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256@"
|
|
@@ -315,11 +315,12 @@ class bucket_impl
|
|
|
315
315
|
}
|
|
316
316
|
{
|
|
317
317
|
std::scoped_lock lock(config_mutex_);
|
|
318
|
-
if (!config_->
|
|
318
|
+
if (!config_->has_node(origin_.options().network, service_type::key_value, origin_.options().enable_tls, hostname, port)) {
|
|
319
319
|
CB_LOG_TRACE(
|
|
320
|
-
R"({} requested to restart session, but the node has been ejected from current configuration already. idx={}, address="{}:{}")",
|
|
320
|
+
R"({} requested to restart session, but the node has been ejected from current configuration already. idx={}, network={}, address="{}:{}")",
|
|
321
321
|
log_prefix_,
|
|
322
322
|
index,
|
|
323
|
+
origin_.options().network,
|
|
323
324
|
hostname,
|
|
324
325
|
port);
|
|
325
326
|
return;
|
|
@@ -106,6 +106,8 @@ class bucket
|
|
|
106
106
|
} else {
|
|
107
107
|
auto [partition, server] = map_id(cmd->request.id);
|
|
108
108
|
if (!server.has_value()) {
|
|
109
|
+
CB_LOG_TRACE(
|
|
110
|
+
R"({} unable to map key=\"{}\" to the node, id={}, partition={})", log_prefix(), cmd->request.id, cmd->id_, partition);
|
|
109
111
|
return io::retry_orchestrator::maybe_retry(
|
|
110
112
|
cmd->manager_, cmd, retry_reason::node_not_available, errc::common::request_canceled);
|
|
111
113
|
}
|
|
@@ -114,9 +116,16 @@ class bucket
|
|
|
114
116
|
}
|
|
115
117
|
auto session = find_session_by_index(index);
|
|
116
118
|
if (!session || !session->has_config()) {
|
|
119
|
+
CB_LOG_TRACE(R"({} defer operation id={}, session={}, has_config={})",
|
|
120
|
+
log_prefix(),
|
|
121
|
+
cmd->id_,
|
|
122
|
+
session.has_value(),
|
|
123
|
+
session.has_value() && session->has_config());
|
|
117
124
|
return defer_command([self = shared_from_this(), cmd]() { self->map_and_send(cmd); });
|
|
118
125
|
}
|
|
119
126
|
if (session->is_stopped()) {
|
|
127
|
+
CB_LOG_TRACE(
|
|
128
|
+
R"({} the session has been found, but it is stopped, retrying id={}, session={})", log_prefix(), cmd->id_, session->id());
|
|
120
129
|
return io::retry_orchestrator::maybe_retry(
|
|
121
130
|
cmd->manager_, cmd, retry_reason::node_not_available, errc::common::request_canceled);
|
|
122
131
|
}
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
#include "diagnostics.hxx"
|
|
34
34
|
#include "dispatcher.hxx"
|
|
35
35
|
#include "impl/dns_srv_tracker.hxx"
|
|
36
|
+
#include "mozilla_ca_bundle.hxx"
|
|
36
37
|
#include "operations.hxx"
|
|
37
38
|
#include "origin.hxx"
|
|
38
39
|
|
|
@@ -394,6 +395,21 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
|
394
395
|
CB_LOG_WARNING("[{}]: unable to load default CAs: {}", id_, ec.message());
|
|
395
396
|
// we don't consider this fatal and try to continue without it
|
|
396
397
|
}
|
|
398
|
+
|
|
399
|
+
if (const auto certificates = default_ca::mozilla_ca_certs();
|
|
400
|
+
!origin_.options().disable_mozilla_ca_certificates && !certificates.empty()) {
|
|
401
|
+
CB_LOG_DEBUG("[{}]: loading {} CA certificates from Mozilla bundle. Update date: \"{}\", SHA256: \"{}\"",
|
|
402
|
+
id_,
|
|
403
|
+
certificates.size(),
|
|
404
|
+
default_ca::mozilla_ca_certs_date(),
|
|
405
|
+
default_ca::mozilla_ca_certs_sha256());
|
|
406
|
+
for (const auto& cert : certificates) {
|
|
407
|
+
tls_.add_certificate_authority(asio::const_buffer(cert.body.data(), cert.body.size()), ec);
|
|
408
|
+
if (ec) {
|
|
409
|
+
CB_LOG_WARNING("[{}]: unable to load CA \"{}\" from Mozilla bundle: {}", id_, cert.authority, ec.message());
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
397
413
|
} else { // trust certificate is explicitly specified
|
|
398
414
|
std::error_code ec{};
|
|
399
415
|
// load only the explicit certificate
|
|
@@ -430,6 +446,7 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
|
430
446
|
return close([ec, handler = std::forward<Handler>(handler)]() mutable { return handler(ec); });
|
|
431
447
|
}
|
|
432
448
|
}
|
|
449
|
+
|
|
433
450
|
session_ = io::mcbp_session(id_, ctx_, tls_, origin_, dns_srv_tracker_);
|
|
434
451
|
} else {
|
|
435
452
|
session_ = io::mcbp_session(id_, ctx_, origin_, dns_srv_tracker_);
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
#include "cluster_options.hxx"
|
|
19
|
-
#include "
|
|
19
|
+
#include "config_profiles.hxx"
|
|
20
20
|
#include <stdexcept>
|
|
21
21
|
|
|
22
22
|
namespace couchbase::core
|
|
@@ -45,6 +45,6 @@ cluster_options::default_timeout_for(service_type type) const
|
|
|
45
45
|
void
|
|
46
46
|
cluster_options::apply_profile(std::string profile_name)
|
|
47
47
|
{
|
|
48
|
-
|
|
48
|
+
known_profiles().apply(profile_name, *this);
|
|
49
49
|
}
|
|
50
50
|
} // namespace couchbase::core
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
#include "core/transactions/cleanup_testing_hooks.hxx"
|
|
26
26
|
#include "service_type.hxx"
|
|
27
27
|
#include "timeout_defaults.hxx"
|
|
28
|
+
#include "tls_verify_mode.hxx"
|
|
28
29
|
|
|
29
30
|
#include <couchbase/best_effort_retry_strategy.hxx>
|
|
30
31
|
#include <couchbase/metrics/meter.hxx>
|
|
@@ -32,16 +33,10 @@
|
|
|
32
33
|
#include <couchbase/transactions/transactions_config.hxx>
|
|
33
34
|
|
|
34
35
|
#include <chrono>
|
|
35
|
-
#include <list>
|
|
36
36
|
#include <string>
|
|
37
37
|
|
|
38
38
|
namespace couchbase::core
|
|
39
39
|
{
|
|
40
|
-
enum class tls_verify_mode {
|
|
41
|
-
none,
|
|
42
|
-
peer,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
40
|
struct cluster_options {
|
|
46
41
|
std::chrono::milliseconds bootstrap_timeout = timeout_defaults::bootstrap_timeout;
|
|
47
42
|
std::chrono::milliseconds resolve_timeout = timeout_defaults::resolve_timeout;
|
|
@@ -53,7 +48,6 @@ struct cluster_options {
|
|
|
53
48
|
std::chrono::milliseconds analytics_timeout = timeout_defaults::analytics_timeout;
|
|
54
49
|
std::chrono::milliseconds search_timeout = timeout_defaults::search_timeout;
|
|
55
50
|
std::chrono::milliseconds management_timeout = timeout_defaults::management_timeout;
|
|
56
|
-
std::chrono::milliseconds dns_srv_timeout = timeout_defaults::dns_srv_timeout;
|
|
57
51
|
|
|
58
52
|
bool enable_tls{ false };
|
|
59
53
|
std::string trust_certificate{};
|
|
@@ -87,6 +81,9 @@ struct cluster_options {
|
|
|
87
81
|
couchbase::transactions::transactions_config::built transactions{};
|
|
88
82
|
|
|
89
83
|
[[nodiscard]] std::chrono::milliseconds default_timeout_for(service_type type) const;
|
|
84
|
+
|
|
85
|
+
bool dump_configuration{ false };
|
|
86
|
+
bool disable_mozilla_ca_certificates{ false };
|
|
90
87
|
void apply_profile(std::string profile_name);
|
|
91
88
|
};
|
|
92
89
|
|
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
#pragma once
|
|
19
19
|
|
|
20
|
-
couchbase
|
|
21
|
-
couchbase::core::known_profiles()
|
|
20
|
+
namespace couchbase
|
|
22
21
|
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
namespace core
|
|
23
|
+
{
|
|
24
|
+
struct cluster_options;
|
|
25
|
+
} // namespace core
|
|
26
|
+
} // namespace couchbase
|
|
@@ -16,13 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
#pragma once
|
|
18
18
|
|
|
19
|
-
#include "
|
|
20
|
-
#include <chrono>
|
|
21
|
-
#include <fmt/core.h>
|
|
22
|
-
#include <map>
|
|
23
|
-
#include <mutex>
|
|
24
|
-
#include <stdexcept>
|
|
25
|
-
#include <string>
|
|
19
|
+
#include "cluster_options_fwd.hxx"
|
|
26
20
|
|
|
27
21
|
namespace couchbase::core
|
|
28
22
|
{
|
|
@@ -32,61 +26,4 @@ class config_profile
|
|
|
32
26
|
virtual ~config_profile() = default;
|
|
33
27
|
virtual void apply(cluster_options&) = 0;
|
|
34
28
|
};
|
|
35
|
-
|
|
36
|
-
class development_profile : public config_profile
|
|
37
|
-
{
|
|
38
|
-
public:
|
|
39
|
-
void apply(couchbase::core::cluster_options& opts) override
|
|
40
|
-
{
|
|
41
|
-
opts.key_value_timeout = std::chrono::milliseconds(20000); // 20 sec kv timeout.
|
|
42
|
-
opts.key_value_durable_timeout = std::chrono::milliseconds(20000); // 20 sec durable kv timeout.
|
|
43
|
-
opts.connect_timeout = std::chrono::milliseconds(20000); // 20 sec connect timeout.
|
|
44
|
-
opts.view_timeout = std::chrono::milliseconds(120000); // 2 minute view timeout
|
|
45
|
-
opts.query_timeout = std::chrono::milliseconds(120000); // 2 minute query timeout
|
|
46
|
-
opts.analytics_timeout = std::chrono::milliseconds(120000); // 2 minute analytics timeout
|
|
47
|
-
opts.search_timeout = std::chrono::milliseconds(120000); // 2 minute search timeout
|
|
48
|
-
opts.management_timeout = std::chrono::milliseconds(120000); // 2 minute management timeout
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
// this class just registers the known profiles defined above, and allows access to them.
|
|
53
|
-
class config_profiles
|
|
54
|
-
{
|
|
55
|
-
private:
|
|
56
|
-
std::map<std::string, std::shared_ptr<couchbase::core::config_profile>> profiles_;
|
|
57
|
-
std::mutex mut_;
|
|
58
|
-
|
|
59
|
-
public:
|
|
60
|
-
config_profiles() noexcept
|
|
61
|
-
{
|
|
62
|
-
// add all known profiles (above) to the map
|
|
63
|
-
register_profile<development_profile>("wan_development");
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
void apply(const std::string& profile_name, couchbase::core::cluster_options& opts)
|
|
67
|
-
{
|
|
68
|
-
std::lock_guard<std::mutex> lock(mut_);
|
|
69
|
-
auto it = profiles_.find(profile_name);
|
|
70
|
-
if (it != profiles_.end()) {
|
|
71
|
-
it->second->apply(opts);
|
|
72
|
-
} else {
|
|
73
|
-
throw std::invalid_argument(fmt::format("unknown profile '{}'", profile_name));
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
template<typename T, typename... Args>
|
|
78
|
-
void register_profile(const std::string& name, Args... args)
|
|
79
|
-
{
|
|
80
|
-
// This will just add it, doesn't look to see if it is overwriting an existing profile.
|
|
81
|
-
// TODO: perhaps add a template Args param?
|
|
82
|
-
// TODO: should we make this thread-safe? Easy enough here, but we'd need to make the
|
|
83
|
-
// singleton thread-safe too.
|
|
84
|
-
std::lock_guard<std::mutex> lock(mut_);
|
|
85
|
-
profiles_.emplace(std::make_pair(name, std::make_shared<T>(args...)));
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
config_profiles&
|
|
90
|
-
known_profiles();
|
|
91
|
-
|
|
92
|
-
} // namespace couchbase::core
|
|
29
|
+
} // namespace couchbase::core
|