From 288682734f6c9c347e418dcd1e60513069e3bbdf Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Mon, 9 Feb 2026 11:45:47 +0100 Subject: [PATCH 1/2] deps: update opentelemetry-cpp to 1.25.0 --- deps/opentelemetry-cpp/.bazelrc | 6 +- deps/opentelemetry-cpp/.bazelversion | 2 +- deps/opentelemetry-cpp/.bcr/README.md | 58 + .../.bcr/metadata.template.json | 22 + deps/opentelemetry-cpp/.bcr/presubmit.yml | 14 + .../.bcr/source.template.json | 5 + deps/opentelemetry-cpp/.clang-tidy | 3 +- deps/opentelemetry-cpp/.clomonitor.yml | 6 + .../.devcontainer/Dockerfile.dev | 11 +- deps/opentelemetry-cpp/.gitignore | 4 + deps/opentelemetry-cpp/.iwyu.imp | 12 + deps/opentelemetry-cpp/.markdownlint.json | 4 + deps/opentelemetry-cpp/MODULE.bazel | 7 +- deps/opentelemetry-cpp/api/BUILD | 1 + .../include/opentelemetry/baggage/baggage.h | 9 +- .../opentelemetry/context/runtime_context.h | 43 +- .../include/opentelemetry/logs/event_logger.h | 19 + .../logs/event_logger_provider.h | 19 + .../api/include/opentelemetry/logs/noop.h | 40 +- .../api/include/opentelemetry/logs/provider.h | 27 +- .../api/include/opentelemetry/metrics/meter.h | 31 + .../metrics/multi_observer_result.h | 57 + .../api/include/opentelemetry/metrics/noop.h | 12 + .../internal/absl/types/internal/variant.h | 2 +- .../include/opentelemetry/nostd/shared_ptr.h | 8 + .../include/opentelemetry/nostd/string_view.h | 2 +- .../api/include/opentelemetry/nostd/variant.h | 2 +- .../plugin/detail/dynamic_load_windows.h | 4 +- .../opentelemetry/semconv/db_attributes.h | 11 +- .../opentelemetry/semconv/error_attributes.h | 2 +- .../opentelemetry/semconv/http_attributes.h | 48 +- .../semconv/incubating/app_attributes.h | 18 + .../semconv/incubating/azure_attributes.h | 4 +- .../semconv/incubating/cloud_attributes.h | 35 + .../semconv/incubating/container_attributes.h | 11 +- .../semconv/incubating/container_metrics.h | 193 ++ .../semconv/incubating/db_attributes.h | 24 +- .../semconv/incubating/dns_attributes.h | 6 +- .../semconv/incubating/enduser_attributes.h | 3 +- .../semconv/incubating/error_attributes.h | 2 +- .../semconv/incubating/event_attributes.h | 3 +- .../semconv/incubating/faas_attributes.h | 6 +- .../semconv/incubating/gcp_attributes.h | 156 + .../semconv/incubating/gen_ai_attributes.h | 94 +- .../semconv/incubating/http_attributes.h | 60 +- .../semconv/incubating/jsonrpc_attributes.h | 40 + .../semconv/incubating/k8s_attributes.h | 118 +- .../semconv/incubating/k8s_metrics.h | 2683 ++++++++++++++--- .../semconv/incubating/linux_attributes.h | 7 +- .../semconv/incubating/mcp_attributes.h | 182 ++ .../semconv/incubating/mcp_metrics.h | 129 + .../semconv/incubating/messaging_attributes.h | 4 +- .../semconv/incubating/nfs_attributes.h | 35 + .../semconv/incubating/nfs_metrics.h | 692 +++++ .../semconv/incubating/onc_rpc_attributes.h | 44 + .../semconv/incubating/openshift_attributes.h | 34 + .../semconv/incubating/openshift_metrics.h | 1065 +++++++ .../semconv/incubating/otel_attributes.h | 10 + .../semconv/incubating/peer_attributes.h | 11 +- .../semconv/incubating/pprof_attributes.h | 78 + .../semconv/incubating/process_attributes.h | 32 +- .../semconv/incubating/process_metrics.h | 110 +- .../semconv/incubating/rpc_attributes.h | 251 +- .../semconv/incubating/rpc_metrics.h | 163 +- .../semconv/incubating/service_attributes.h | 17 +- .../semconv/incubating/system_attributes.h | 60 +- .../semconv/incubating/system_metrics.h | 374 ++- .../semconv/incubating/thread_attributes.h | 21 + .../incubating/user_agent_attributes.h | 4 +- .../semconv/incubating/vcs_attributes.h | 9 +- .../opentelemetry/semconv/schema_url.h | 2 +- .../semconv/service_attributes.h | 3 +- .../api/include/opentelemetry/trace/span_id.h | 4 +- .../include/opentelemetry/trace/trace_flags.h | 2 +- .../include/opentelemetry/trace/trace_id.h | 4 +- .../api/include/opentelemetry/version.h | 4 +- deps/opentelemetry-cpp/api/test/baggage/BUILD | 1 + .../api/test/baggage/baggage_test.cc | 2 + .../api/test/baggage/propagation/BUILD | 2 +- deps/opentelemetry-cpp/api/test/common/BUILD | 1 + .../api/test/common/kv_properties_test.cc | 8 +- deps/opentelemetry-cpp/api/test/context/BUILD | 2 +- .../api/test/context/propagation/BUILD | 2 +- deps/opentelemetry-cpp/api/test/core/BUILD | 2 + deps/opentelemetry-cpp/api/test/logs/BUILD | 2 +- deps/opentelemetry-cpp/api/test/metrics/BUILD | 2 +- deps/opentelemetry-cpp/api/test/nostd/BUILD | 2 + .../api/test/nostd/shared_ptr_test.cc | 12 +- .../api/test/nostd/unique_ptr_test.cc | 4 +- deps/opentelemetry-cpp/api/test/plugin/BUILD | 2 + .../api/test/singleton/BUILD | 4 + deps/opentelemetry-cpp/api/test/trace/BUILD | 1 + .../api/test/trace/propagation/BUILD | 2 +- .../api/test/trace/propagation/detail/BUILD | 2 +- .../exporters/elasticsearch/BUILD | 3 + .../exporters/elasticsearch/CMakeLists.txt | 9 + deps/opentelemetry-cpp/exporters/etw/BUILD | 3 + .../exporters/etw/TraceLoggingDynamic.h | 613 ++-- .../opentelemetry/exporters/etw/etw_logger.h | 51 +- .../exporters/etw/etw_properties.h | 2 +- .../exporters/etw/etw_provider.h | 8 +- .../exporters/etw/etw_random_id_generator.h | 2 +- .../opentelemetry/exporters/etw/etw_tracer.h | 21 +- .../opentelemetry/exporters/etw/utils.h | 4 +- .../opentelemetry/exporters/etw/uuid.h | 2 +- .../exporters/etw/test/etw_logger_test.cc | 109 + .../exporters/etw/test/etw_provider_test.cc | 32 + .../exporters/etw/test/etw_tracer_test.cc | 9 + deps/opentelemetry-cpp/exporters/memory/BUILD | 3 + .../exporters/memory/CMakeLists.txt | 13 + .../memory/in_memory_span_exporter.h | 5 +- .../opentelemetry-cpp/exporters/ostream/BUILD | 51 + .../exporters/ostream/CMakeLists.txt | 151 +- .../src/console_push_metric_builder.cc | 31 +- deps/opentelemetry-cpp/exporters/otlp/BUILD | 188 ++ .../exporters/otlp/CMakeLists.txt | 533 +++- .../otlp_http_metric_exporter_benchmark.cc | 128 + .../exporters/otlp/otlp_builder_utils.h | 4 + .../otlp/otlp_grpc_exporter_options.h | 9 + .../otlp/otlp_http_exporter_options.h | 8 + .../exporters/otlp/otlp_metric_utils.h | 3 - .../exporters/otlp/otlp_recordable.h | 20 + .../exporters/otlp/protobuf_include_prefix.h | 1 + .../exporters/otlp/src/otlp_builder_utils.cc | 40 +- .../exporters/otlp/src/otlp_environment.cc | 118 +- .../exporters/otlp/src/otlp_file_client.cc | 2 +- .../exporters/otlp/src/otlp_grpc_client.cc | 6 +- .../exporters/otlp/src/otlp_grpc_exporter.cc | 6 +- .../otlp/src/otlp_grpc_log_record_builder.cc | 17 +- .../otlp/src/otlp_grpc_log_record_exporter.cc | 2 +- .../otlp/src/otlp_grpc_metric_exporter.cc | 2 +- .../otlp/src/otlp_grpc_push_metric_builder.cc | 17 +- .../otlp/src/otlp_grpc_span_builder.cc | 17 +- .../exporters/otlp/src/otlp_http_exporter.cc | 5 +- .../otlp/src/otlp_http_log_record_builder.cc | 16 +- .../otlp/src/otlp_http_push_metric_builder.cc | 16 +- .../otlp/src/otlp_http_span_builder.cc | 16 +- .../exporters/otlp/src/otlp_metric_utils.cc | 63 - .../exporters/otlp/src/otlp_recordable.cc | 27 + .../otlp/test/otlp_http_exporter_test.cc | 99 +- .../otlp_http_log_record_exporter_test.cc | 101 +- .../test/otlp_http_metric_exporter_test.cc | 131 +- .../otlp/test/otlp_recordable_test.cc | 77 + .../exporters/prometheus/BUILD | 18 + .../exporters/prometheus/CMakeLists.txt | 53 +- .../prometheus/src/exporter_options.cc | 8 +- .../prometheus/src/prometheus_pull_builder.cc | 36 +- deps/opentelemetry-cpp/exporters/zipkin/BUILD | 3 + .../exporters/zipkin/CMakeLists.txt | 12 + .../exporters/zipkin/zipkin_builder.h | 33 - .../exporters/zipkin/src/zipkin_builder.cc | 41 - .../zipkin/test/zipkin_exporter_test.cc | 6 +- deps/opentelemetry-cpp/ext/BUILD | 2 + deps/opentelemetry-cpp/ext/CMakeLists.txt | 2 +- .../ext/http/server/http_server.h | 8 +- .../ext/http/server/socket_tools.h | 4 +- .../ext/src/http/client/curl/BUILD | 3 + .../src/http/client/curl/http_client_curl.cc | 4 +- .../http/client/curl/http_operation_curl.cc | 21 +- deps/opentelemetry-cpp/ext/test/http/BUILD | 2 + .../ext/test/http/curl_http_test.cc | 8 +- .../ext/test/http/url_parser_test.cc | 4 +- .../w3c_tracecontext_http_test_server/BUILD | 2 + .../w3c_tracecontext_http_test_server/main.cc | 8 +- deps/opentelemetry-cpp/sdk/BUILD | 2 + deps/opentelemetry-cpp/sdk/CMakeLists.txt | 20 +- .../sdk/common/attribute_utils.h | 39 +- .../cardinality_limits_configuration.h | 34 + .../sdk/configuration/configuration.h | 5 +- .../sdk/configuration/configuration_parser.h | 358 ++- .../sdk/configuration/configured_sdk.h | 1 + ...nsole_push_metric_exporter_configuration.h | 10 +- .../distribution_configuration.h | 27 + .../distribution_entry_configuration.h | 27 + .../sdk/configuration/document_node.h | 14 + .../sdk/configuration/exemplar_filter.h | 27 + .../configuration/grpc_tls_configuration.h | 30 + .../configuration/http_tls_configuration.h | 29 + .../integer_attribute_value_configuration.h | 4 +- .../configuration/invalid_schema_exception.h | 9 +- .../meter_provider_configuration.h | 5 +- ...p_grpc_log_record_exporter_configuration.h | 6 +- ..._grpc_push_metric_exporter_configuration.h | 6 +- .../otlp_grpc_span_exporter_configuration.h | 6 +- ...p_http_log_record_exporter_configuration.h | 5 +- ..._http_push_metric_exporter_configuration.h | 5 +- .../otlp_http_span_exporter_configuration.h | 5 +- .../periodic_metric_reader_configuration.h | 4 +- ...theus_pull_metric_exporter_configuration.h | 8 +- .../pull_metric_reader_configuration.h | 5 +- .../sdk/configuration/registry.h | 12 - .../sdk/configuration/ryml_document.h | 9 +- .../sdk/configuration/ryml_document_node.h | 17 +- .../sdk/configuration/sdk_builder.h | 7 +- .../sdk/configuration/severity_number.h | 48 + .../span_exporter_configuration_visitor.h | 2 - .../sdk/configuration/translation_strategy.h | 28 + .../zipkin_span_exporter_builder.h | 34 - .../zipkin_span_exporter_configuration.h | 34 - .../logs/batch_log_record_processor_options.h | 56 +- .../metrics/aggregation/aggregation_config.h | 20 + .../metrics/aggregation/default_aggregation.h | 2 - .../sdk/metrics/data/metric_data.h | 3 +- .../sdk/metrics/data/point_data.h | 14 - .../export/periodic_exporting_metric_reader.h | 1 - ..._exporting_metric_reader_runtime_options.h | 2 - .../opentelemetry/sdk/metrics/instruments.h | 6 +- .../include/opentelemetry/sdk/metrics/meter.h | 8 + .../sdk/metrics/multi_observer_result.h | 52 + .../sdk/metrics/state/attributes_hashmap.h | 2 +- .../sdk/metrics/state/multi_metric_storage.h | 18 +- .../sdk/metrics/state/observable_registry.h | 34 +- .../sdk/metrics/view/view_registry.h | 57 + .../sdk/trace/batch_span_processor_options.h | 61 +- .../sdk/trace/multi_span_processor.h | 6 +- .../opentelemetry/sdk/version/version.h | 2 +- deps/opentelemetry-cpp/sdk/src/CMakeLists.txt | 4 + deps/opentelemetry-cpp/sdk/src/common/BUILD | 2 + .../sdk/src/common/base64.cc | 21 +- .../sdk/src/common/disabled.cc | 5 +- .../sdk/src/common/env_variables.cc | 9 +- .../src/common/fast_random_number_generator.h | 2 +- .../sdk/src/common/platform/BUILD | 2 + .../sdk/src/configuration/BUILD | 17 + .../sdk/src/configuration/CMakeLists.txt | 35 + .../src/configuration/configuration_parser.cc | 899 ++++-- .../sdk/src/configuration/configured_sdk.cc | 2 + .../sdk/src/configuration/document_node.cc | 59 +- .../sdk/src/configuration/ryml_document.cc | 44 +- .../src/configuration/ryml_document_node.cc | 66 +- .../sdk/src/configuration/sdk_builder.cc | 209 +- .../yaml_configuration_parser.cc | 12 +- deps/opentelemetry-cpp/sdk/src/logs/BUILD | 2 + .../sdk/src/logs/CMakeLists.txt | 1 + .../src/logs/batch_log_record_processor.cc | 2 +- .../batch_log_record_processor_options.cc | 75 + deps/opentelemetry-cpp/sdk/src/metrics/BUILD | 2 + .../sdk/src/metrics/CMakeLists.txt | 1 + ...base2_exponential_histogram_aggregation.cc | 6 +- .../base2_exponential_histogram_indexer.cc | 2 +- .../periodic_exporting_metric_reader.cc | 20 +- .../sdk/src/metrics/meter.cc | 19 + .../sdk/src/metrics/multi_observer_result.cc | 154 + .../src/metrics/state/observable_registry.cc | 229 +- .../metrics/state/temporal_metric_storage.cc | 8 +- deps/opentelemetry-cpp/sdk/src/resource/BUILD | 2 + deps/opentelemetry-cpp/sdk/src/trace/BUILD | 2 + .../sdk/src/trace/CMakeLists.txt | 1 + .../sdk/src/trace/batch_span_processor.cc | 2 +- .../src/trace/batch_span_processor_options.cc | 75 + .../sdk/src/trace/samplers/trace_id_ratio.cc | 3 +- .../opentelemetry-cpp/sdk/src/trace/tracer.cc | 4 + .../sdk/src/version/version.cc | 8 +- .../opentelemetry-cpp/sdk/test/CMakeLists.txt | 4 + deps/opentelemetry-cpp/sdk/test/common/BUILD | 2 + .../sdk/test/common/env_var_test.cc | 10 +- .../sdk/test/configuration/BUILD | 144 + .../sdk/test/configuration/CMakeLists.txt | 20 + .../configuration/yaml_distribution_test.cc | 107 + .../sdk/test/configuration/yaml_logs_test.cc | 75 +- .../test/configuration/yaml_metrics_test.cc | 206 +- .../configuration/yaml_propagator_test.cc | 18 +- .../test/configuration/yaml_resource_test.cc | 26 +- .../sdk/test/configuration/yaml_test.cc | 152 +- .../sdk/test/configuration/yaml_trace_test.cc | 159 +- .../sdk/test/instrumentationscope/BUILD | 2 + deps/opentelemetry-cpp/sdk/test/logs/BUILD | 2 + .../logs/batch_log_record_processor_test.cc | 121 + deps/opentelemetry-cpp/sdk/test/metrics/BUILD | 2 + .../sdk/test/metrics/CMakeLists.txt | 7 +- .../sdk/test/metrics/aggregation_test.cc | 156 + .../test/metrics/attributes_hashmap_test.cc | 6 +- .../sdk/test/metrics/exemplar/BUILD | 2 + .../test/metrics/meter_provider_sdk_test.cc | 4 +- .../sdk/test/metrics/multi_observer_test.cc | 216 ++ .../sdk/test/metrics/sum_aggregation_test.cc | 9 +- .../sdk/test/metrics/view_registry_test.cc | 43 + .../opentelemetry-cpp/sdk/test/resource/BUILD | 2 + deps/opentelemetry-cpp/sdk/test/trace/BUILD | 1 + .../test/trace/batch_span_processor_test.cc | 137 + .../sdk/test/trace/tracer_test.cc | 71 + .../proto/metrics/v1/metrics.proto | 40 + .../profiles/v1development/profiles.proto | 232 +- .../proto/resource/v1/resource.proto | 10 + .../opentelemetry/proto/trace/v1/trace.proto | 32 +- deps/opentelemetry-cpp/third_party_release | 18 +- 286 files changed, 13099 insertions(+), 2592 deletions(-) create mode 100644 deps/opentelemetry-cpp/.bcr/README.md create mode 100644 deps/opentelemetry-cpp/.bcr/metadata.template.json create mode 100644 deps/opentelemetry-cpp/.bcr/presubmit.yml create mode 100644 deps/opentelemetry-cpp/.bcr/source.template.json create mode 100644 deps/opentelemetry-cpp/.clomonitor.yml create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/metrics/multi_observer_result.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/jsonrpc_attributes.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/mcp_attributes.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/mcp_metrics.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/nfs_attributes.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/nfs_metrics.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/onc_rpc_attributes.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/openshift_attributes.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/openshift_metrics.h create mode 100644 deps/opentelemetry-cpp/api/include/opentelemetry/semconv/incubating/pprof_attributes.h create mode 100644 deps/opentelemetry-cpp/exporters/otlp/benchmark/otlp_http_metric_exporter_benchmark.cc delete mode 100644 deps/opentelemetry-cpp/exporters/zipkin/include/opentelemetry/exporters/zipkin/zipkin_builder.h delete mode 100644 deps/opentelemetry-cpp/exporters/zipkin/src/zipkin_builder.cc create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/cardinality_limits_configuration.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/distribution_configuration.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/distribution_entry_configuration.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/exemplar_filter.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/grpc_tls_configuration.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/http_tls_configuration.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/severity_number.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/translation_strategy.h delete mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/zipkin_span_exporter_builder.h delete mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/configuration/zipkin_span_exporter_configuration.h create mode 100644 deps/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/multi_observer_result.h create mode 100644 deps/opentelemetry-cpp/sdk/src/configuration/BUILD create mode 100644 deps/opentelemetry-cpp/sdk/src/configuration/CMakeLists.txt create mode 100644 deps/opentelemetry-cpp/sdk/src/logs/batch_log_record_processor_options.cc create mode 100644 deps/opentelemetry-cpp/sdk/src/metrics/multi_observer_result.cc create mode 100644 deps/opentelemetry-cpp/sdk/src/trace/batch_span_processor_options.cc create mode 100644 deps/opentelemetry-cpp/sdk/test/configuration/BUILD create mode 100644 deps/opentelemetry-cpp/sdk/test/configuration/CMakeLists.txt create mode 100644 deps/opentelemetry-cpp/sdk/test/configuration/yaml_distribution_test.cc create mode 100644 deps/opentelemetry-cpp/sdk/test/metrics/multi_observer_test.cc diff --git a/deps/opentelemetry-cpp/.bazelrc b/deps/opentelemetry-cpp/.bazelrc index 57cd0a2fa0c..9b87c5283a8 100644 --- a/deps/opentelemetry-cpp/.bazelrc +++ b/deps/opentelemetry-cpp/.bazelrc @@ -17,9 +17,9 @@ build --copt -DGRPC_BAZEL_BUILD build:windows --dynamic_mode=off # Set minimum supported C++ version -build:macos --host_cxxopt=-std=c++14 --cxxopt=-std=c++14 -build:linux --host_cxxopt=-std=c++14 --cxxopt=-std=c++14 -build:windows --host_cxxopt=/std:c++14 --cxxopt=/std:c++14 +build:macos --host_cxxopt=-std=c++17 --cxxopt=-std=c++17 +build:linux --host_cxxopt=-std=c++17 --cxxopt=-std=c++17 +build:windows --host_cxxopt=/std:c++17 --cxxopt=/std:c++17 # --config=asan : Address Sanitizer. common:asan --copt -DADDRESS_SANITIZER diff --git a/deps/opentelemetry-cpp/.bazelversion b/deps/opentelemetry-cpp/.bazelversion index 21c8c7b46b8..6d2890793d4 100644 --- a/deps/opentelemetry-cpp/.bazelversion +++ b/deps/opentelemetry-cpp/.bazelversion @@ -1 +1 @@ -7.1.1 +8.5.0 diff --git a/deps/opentelemetry-cpp/.bcr/README.md b/deps/opentelemetry-cpp/.bcr/README.md new file mode 100644 index 00000000000..3a67dfa7443 --- /dev/null +++ b/deps/opentelemetry-cpp/.bcr/README.md @@ -0,0 +1,58 @@ +# BCR Publishing Configuration + +This directory contains the template files required for publishing opentelemetry-cpp to the [Bazel Central Registry (BCR)](https://github.com/bazelbuild/bazel-central-registry). + +## Files + +### metadata.template.json +Contains the module metadata including homepage, maintainers, and repository information. This is used to create/update the BCR metadata for the module. + +### source.template.json +Defines the source archive location and format. Placeholders like `{OWNER}`, `{REPO}`, `{TAG}`, and `{VERSION}` are automatically replaced during publishing. + +### presubmit.yml +Defines the BCR presubmit tests that run when a new version is published. Currently configured to test on: +- Platforms: debian10, macos, ubuntu2004, windows +- Bazel versions: 7.x, 8.x, 9.* + +## Publishing Process + +The publish-to-bcr workflow (`.github/workflows/publish-to-bcr.yml`) automates publishing to BCR. + +### Prerequisites + +**Create a Personal Access Token (PAT)**: + - Create a Classic PAT with `workflow` and `repo` permissions + - Add it as a secret named `BCR_PUBLISH_TOKEN` in repository settings + +### How to Publish + +The workflow can be triggered in two ways: + +1. **Automatically**: When a new GitHub release is published +2. **Manually**: Via workflow dispatch in GitHub Actions UI + - Go to Actions → Publish to BCR → Run workflow + - Enter the tag name (e.g., `v1.24.0`) + +### What Happens + +When triggered, the workflow: +1. Generates a BCR entry using these templates +2. Pushes the entry to your BCR fork +3. Opens a pull request against the upstream BCR + +### Using a Fork Registry + +For development and testing, you can use a fork of the Bazel Central Registry: + +1. Fork https://github.com/bazelbuild/bazel-central-registry +2. Configure your fork URL in the workflow (modify the `publish-to-bcr.yml` file) +3. Test changes in your fork before submitting to the official BCR + +The configuration in this repository points to the **official** Bazel Central Registry at https://github.com/bazelbuild/bazel-central-registry. However, using a fork registry is recommended for testing and development to avoid polluting the official registry during experimentation. + +## References + +- [Publish to BCR Action](https://github.com/bazel-contrib/publish-to-bcr) +- [Bazel Central Registry](https://github.com/bazelbuild/bazel-central-registry) +- [BCR Module: opentelemetry-cpp](https://github.com/bazelbuild/bazel-central-registry/tree/main/modules/opentelemetry-cpp) diff --git a/deps/opentelemetry-cpp/.bcr/metadata.template.json b/deps/opentelemetry-cpp/.bcr/metadata.template.json new file mode 100644 index 00000000000..4db3fb88171 --- /dev/null +++ b/deps/opentelemetry-cpp/.bcr/metadata.template.json @@ -0,0 +1,22 @@ +{ + "homepage": "https://github.com/open-telemetry/opentelemetry-cpp", + "maintainers": [ + { + "name": "Keith Smiley", + "email": "keithbsmiley@gmail.com", + "github": "keith", + "github_user_id": 283886 + }, + { + "name": "Marc Alff", + "email": "marc.alff@oracle.com", + "github": "marcalff", + "github_user_id": 17238896 + } + ], + "repository": [ + "github:open-telemetry/opentelemetry-cpp" + ], + "versions": [], + "yanked_versions": {} +} diff --git a/deps/opentelemetry-cpp/.bcr/presubmit.yml b/deps/opentelemetry-cpp/.bcr/presubmit.yml new file mode 100644 index 00000000000..4bc27b5d144 --- /dev/null +++ b/deps/opentelemetry-cpp/.bcr/presubmit.yml @@ -0,0 +1,14 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 +matrix: + platform: ["debian10", "macos", "ubuntu2004", "windows"] + bazel: ["7.x", "8.x", "9.x"] +tasks: + verify_targets: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - '--cxxopt=-std=c++17' + - '--host_cxxopt=-std=c++17' + build_targets: + - '@opentelemetry-cpp//api' diff --git a/deps/opentelemetry-cpp/.bcr/source.template.json b/deps/opentelemetry-cpp/.bcr/source.template.json new file mode 100644 index 00000000000..94d3157d744 --- /dev/null +++ b/deps/opentelemetry-cpp/.bcr/source.template.json @@ -0,0 +1,5 @@ +{ + "integrity": "", + "strip_prefix": "opentelemetry-cpp-{VERSION}", + "url": "https://github.com/{OWNER}/{REPO}/archive/refs/tags/{TAG}.tar.gz" +} diff --git a/deps/opentelemetry-cpp/.clang-tidy b/deps/opentelemetry-cpp/.clang-tidy index db61b810c99..599a02fd88a 100644 --- a/deps/opentelemetry-cpp/.clang-tidy +++ b/deps/opentelemetry-cpp/.clang-tidy @@ -35,8 +35,7 @@ Checks: > -cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-c-arrays, -cppcoreguidelines-avoid-magic-numbers, - -cppcoreguidelines-init-variables, -cppcoreguidelines-macro-usage, -cppcoreguidelines-non-private-member-variables-in-classes, -cppcoreguidelines-avoid-non-const-global-variables, - -cppcoreguidelines-pro-* \ No newline at end of file + -cppcoreguidelines-pro-* diff --git a/deps/opentelemetry-cpp/.clomonitor.yml b/deps/opentelemetry-cpp/.clomonitor.yml new file mode 100644 index 00000000000..6b06698eab8 --- /dev/null +++ b/deps/opentelemetry-cpp/.clomonitor.yml @@ -0,0 +1,6 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 +# see https://github.com/cncf/clomonitor/blob/main/docs/checks.md#exemptions +exemptions: + - check: artifacthub_badge + reason: "Artifact Hub doesn't support c++ packages" diff --git a/deps/opentelemetry-cpp/.devcontainer/Dockerfile.dev b/deps/opentelemetry-cpp/.devcontainer/Dockerfile.dev index 60efed9723d..fec4e16c6a8 100644 --- a/deps/opentelemetry-cpp/.devcontainer/Dockerfile.dev +++ b/deps/opentelemetry-cpp/.devcontainer/Dockerfile.dev @@ -15,13 +15,18 @@ COPY ci /opt/ci RUN apt update && apt install -y wget \ ninja-build \ - llvm-dev \ - libclang-dev \ - clang-tidy \ + llvm-20-dev \ + libclang-20-dev \ + clang-tidy-20 \ shellcheck \ sudo \ cmake +RUN update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-20 200 && \ + update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-20 200 && \ + update-alternatives --config clang-tidy && \ + update-alternatives --config llvm-config + RUN cd /opt/ci && bash setup_ci_environment.sh RUN cd /opt/ci && bash install_iwyu.sh diff --git a/deps/opentelemetry-cpp/.gitignore b/deps/opentelemetry-cpp/.gitignore index cafefd636dd..e7bab0eb083 100644 --- a/deps/opentelemetry-cpp/.gitignore +++ b/deps/opentelemetry-cpp/.gitignore @@ -80,3 +80,7 @@ functional/cert/server_cert_b.csr functional/cert/server_cert_b.pem functional/cert/server_cert_b-key.pem functional/cert/unreadable.pem + +# CodeQL build artifacts +_codeql_build_dir/ +_codeql_detected_source_root diff --git a/deps/opentelemetry-cpp/.iwyu.imp b/deps/opentelemetry-cpp/.iwyu.imp index 123e72f32da..e2ab0e3b4e6 100644 --- a/deps/opentelemetry-cpp/.iwyu.imp +++ b/deps/opentelemetry-cpp/.iwyu.imp @@ -11,6 +11,18 @@ { "include": ["", "private", "", "public"] }, { "include": ["", "private", "", "public"] }, + # Work around for ryml + { "include": ["", "private", "", "public"] }, + + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + { "include": ["", "private", "", "public"] }, + # Local opentelemetry-cpp style # We prefer to include for simplicity diff --git a/deps/opentelemetry-cpp/.markdownlint.json b/deps/opentelemetry-cpp/.markdownlint.json index 48c2ae2a3f6..9c27af34b88 100644 --- a/deps/opentelemetry-cpp/.markdownlint.json +++ b/deps/opentelemetry-cpp/.markdownlint.json @@ -4,5 +4,9 @@ { "code_blocks": false, "tables": false + }, + "MD059": + { + "prohibited_texts": [] } } diff --git a/deps/opentelemetry-cpp/MODULE.bazel b/deps/opentelemetry-cpp/MODULE.bazel index d147305b137..9500ea5c271 100644 --- a/deps/opentelemetry-cpp/MODULE.bazel +++ b/deps/opentelemetry-cpp/MODULE.bazel @@ -3,7 +3,7 @@ module( name = "opentelemetry-cpp", - version = "1.23.0", + version = "1.25.0", compatibility_level = 0, repo_name = "io_opentelemetry_cpp", ) @@ -13,11 +13,14 @@ bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "curl", version = "8.8.0") bazel_dep(name = "grpc", version = "1.66.0.bcr.2", repo_name = "com_github_grpc_grpc") bazel_dep(name = "nlohmann_json", version = "3.12.0", repo_name = "github_nlohmann_json") -bazel_dep(name = "opentelemetry-proto", version = "1.7.0", repo_name = "com_github_opentelemetry_proto") +bazel_dep(name = "opentelemetry-proto", version = "1.8.0", repo_name = "com_github_opentelemetry_proto") bazel_dep(name = "opentracing-cpp", version = "1.6.0", repo_name = "com_github_opentracing") bazel_dep(name = "platforms", version = "0.0.11") bazel_dep(name = "prometheus-cpp", version = "1.3.0", repo_name = "com_github_jupp0r_prometheus_cpp") bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf") +bazel_dep(name = "rapidyaml", version = "0.9.0") +bazel_dep(name = "rules_cc", version = "0.2.9") +bazel_dep(name = "rules_foreign_cc", version = "0.15.1") bazel_dep(name = "rules_proto", version = "7.0.2") bazel_dep(name = "zlib", version = "1.3.1.bcr.5") diff --git a/deps/opentelemetry-cpp/api/BUILD b/deps/opentelemetry-cpp/api/BUILD index fb31393569c..bfd3af60147 100644 --- a/deps/opentelemetry-cpp/api/BUILD +++ b/deps/opentelemetry-cpp/api/BUILD @@ -2,6 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "int_flag", "string_flag") +load("@rules_cc//cc:cc_library.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/baggage/baggage.h b/deps/opentelemetry-cpp/api/include/opentelemetry/baggage/baggage.h index 6c799cda278..e3e08ff225c 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/baggage/baggage.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/baggage/baggage.h @@ -274,8 +274,13 @@ class OPENTELEMETRY_EXPORT Baggage { ret.push_back(' '); } - else if (std::isalnum(str[i]) || str[i] == '-' || str[i] == '_' || str[i] == '.' || - str[i] == '~') + // See https://www.w3.org/TR/baggage/#definition + else if ((str[i] >= '!') /* 21 */ + && (str[i] <= '~') /* 7E */ + && (str[i] != '"') /* 22 */ + && (str[i] != ',') /* 2C */ + && (str[i] != ';') /* 3B */ + && (str[i] != '\\')) /* 5C */ { ret.push_back(str[i]); } diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/context/runtime_context.h b/deps/opentelemetry-cpp/api/include/opentelemetry/context/runtime_context.h index 606cd796908..0ef170571b5 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/context/runtime_context.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/context/runtime_context.h @@ -26,11 +26,11 @@ class Token public: bool operator==(const Context &other) const noexcept { return context_ == other; } - ~Token() noexcept; + virtual ~Token() noexcept; -private: friend class RuntimeContextStorage; +protected: // A constructor that sets the token's Context object to the // one that was passed in. Token(const Context &context) : context_(context) {} @@ -241,6 +241,26 @@ class ThreadLocalContextStorage : public RuntimeContextStorage { friend class ThreadLocalContextStorage; + /** + * Limit the max stack depth. + * The stack will still work beyond this limit, + * counting push() and pop() properly, + * but will not record contexts. + * + * In practice, this should not affect instrumented applications, + * the limit is set to 1 million nested scopes. + * + * The whole reason for this limit to exist is to prevent + * compiler warnings like: + * error: argument 1 value ‘18446744073709551615’ + * exceeds maximum object size 9223372036854775807 + * [-Werror=alloc-size-larger-than=] + * on this line of code: + * Context *temp = new Context[new_capacity]; + * when compiling with gcc and optimizations (-flto). + */ + static constexpr size_t max_capacity_ = 1000000; + Stack() noexcept : size_(0), capacity_(0), base_(nullptr) {} // Pops the top Context off the stack. @@ -250,6 +270,11 @@ class ThreadLocalContextStorage : public RuntimeContextStorage { return; } + if (size_ > max_capacity_) + { + size_ -= 1; + return; + } // Store empty Context before decrementing `size`, to ensure // the shared_ptr object (if stored in prev context object ) are released. // The stack is not resized, and the unused memory would be reutilised @@ -278,6 +303,10 @@ class ThreadLocalContextStorage : public RuntimeContextStorage { return Context(); } + if (size_ > max_capacity_) + { + return Context(); + } return base_[size_ - 1]; } @@ -286,6 +315,10 @@ class ThreadLocalContextStorage : public RuntimeContextStorage void Push(const Context &context) noexcept { size_++; + if (size_ > max_capacity_) + { + return; + } if (size_ > capacity_) { Resize(size_ * 2); @@ -299,8 +332,14 @@ class ThreadLocalContextStorage : public RuntimeContextStorage size_t old_size = size_ - 1; if (new_capacity == 0) { + // First increase new_capacity = 2; } + if (new_capacity > max_capacity_) + { + // Last increase + new_capacity = max_capacity_; + } Context *temp = new Context[new_capacity]; if (base_ != nullptr) { diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger.h b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger.h index 929e97cc2c4..dbeffd2042e 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger.h @@ -15,6 +15,17 @@ OPENTELEMETRY_BEGIN_NAMESPACE namespace logs { #if OPENTELEMETRY_ABI_VERSION_NO < 2 +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable : 4996) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# endif + /** * Handles event log record creation. **/ @@ -77,6 +88,14 @@ class OPENTELEMETRY_DEPRECATED EventLogger void IgnoreTraitResult(ValueType &&...) {} }; + +# if defined(_MSC_VER) +# pragma warning(pop) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic pop +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic pop +# endif #endif } // namespace logs OPENTELEMETRY_END_NAMESPACE diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger_provider.h b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger_provider.h index 9eea0ca23bf..cb3b05dc727 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger_provider.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/event_logger_provider.h @@ -15,6 +15,17 @@ class EventLogger; class Logger; #if OPENTELEMETRY_ABI_VERSION_NO < 2 +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable : 4996) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# endif + /** * Creates new EventLogger instances. */ @@ -32,6 +43,14 @@ class OPENTELEMETRY_DEPRECATED EventLoggerProvider nostd::shared_ptr delegate_logger, nostd::string_view event_domain) noexcept = 0; }; + +# if defined(_MSC_VER) +# pragma warning(pop) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic pop +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic pop +# endif #endif } // namespace logs OPENTELEMETRY_END_NAMESPACE diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/noop.h b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/noop.h index 5e7654ae750..73bf1e57f9b 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/noop.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/noop.h @@ -91,10 +91,22 @@ class NoopLoggerProvider final : public LoggerProvider }; #if OPENTELEMETRY_ABI_VERSION_NO < 2 +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable : 4996) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# endif + class NoopEventLogger final : public EventLogger { public: NoopEventLogger() : logger_{nostd::shared_ptr(new NoopLogger())} {} + ~NoopEventLogger() override = default; const nostd::string_view GetName() noexcept override { return "noop event logger"; } @@ -112,27 +124,9 @@ class NoopEventLogger final : public EventLogger class NoopEventLoggerProvider final : public EventLoggerProvider { public: -# if defined(_MSC_VER) -# pragma warning(push) -# pragma warning(disable : 4996) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wdeprecated-declarations" -# endif - NoopEventLoggerProvider() : event_logger_{nostd::shared_ptr(new NoopEventLogger())} {} - -# if defined(_MSC_VER) -# pragma warning(pop) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic pop -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic pop -# endif + ~NoopEventLoggerProvider() override = default; nostd::shared_ptr CreateEventLogger( nostd::shared_ptr /*delegate_logger*/, @@ -144,6 +138,14 @@ class NoopEventLoggerProvider final : public EventLoggerProvider private: nostd::shared_ptr event_logger_; }; + +# if defined(_MSC_VER) +# pragma warning(pop) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic pop +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic pop +# endif #endif } // namespace logs diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/provider.h b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/provider.h index 58f668e0419..83d2e765de5 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/logs/provider.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/logs/provider.h @@ -48,6 +48,16 @@ class OPENTELEMETRY_EXPORT Provider } #if OPENTELEMETRY_ABI_VERSION_NO < 2 +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable : 4996) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# endif /** * Returns the singleton EventLoggerProvider. * @@ -70,6 +80,13 @@ class OPENTELEMETRY_EXPORT Provider std::lock_guard guard(GetLock()); GetEventProvider() = tp; } +# if defined(_MSC_VER) +# pragma warning(pop) +# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) +# pragma GCC diagnostic pop +# elif defined(__clang__) || defined(__apple_build_version__) +# pragma clang diagnostic pop +# endif #endif private: @@ -80,10 +97,6 @@ class OPENTELEMETRY_EXPORT Provider } #if OPENTELEMETRY_ABI_VERSION_NO < 2 - OPENTELEMETRY_DEPRECATED - OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr & - GetEventProvider() noexcept - { # if defined(_MSC_VER) # pragma warning(push) # pragma warning(disable : 4996) @@ -95,8 +108,13 @@ class OPENTELEMETRY_EXPORT Provider # pragma clang diagnostic ignored "-Wdeprecated-declarations" # endif + OPENTELEMETRY_DEPRECATED + OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr & + GetEventProvider() noexcept + { static nostd::shared_ptr provider(new NoopEventLoggerProvider); return provider; + } # if defined(_MSC_VER) # pragma warning(pop) @@ -105,7 +123,6 @@ class OPENTELEMETRY_EXPORT Provider # elif defined(__clang__) || defined(__apple_build_version__) # pragma clang diagnostic pop # endif - } #endif OPENTELEMETRY_API_SINGLETON static common::SpinLockMutex &GetLock() noexcept diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/meter.h b/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/meter.h index 59cfb878226..390bf006e65 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/meter.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/meter.h @@ -3,7 +3,10 @@ #pragma once +#include + #include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/nostd/unique_ptr.h" #include "opentelemetry/version.h" @@ -25,6 +28,8 @@ template class Gauge; class ObservableInstrument; +class MultiObserverResult; +using MultiObservableCallbackPtr = void (*)(MultiObserverResult &, void *); /** * Handles instrument creation and provides a facility for batch recording. @@ -169,6 +174,32 @@ class Meter nostd::string_view name, nostd::string_view description = "", nostd::string_view unit = "") noexcept = 0; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + + /** + * Registers a callback to be invoked when metrics are collected by this meter. The callback will + * be passed a MultiObserverResult which it can use to make observations for any or all of the + * instruments provided in this registration. Any measurements recorded for instruments _not_ in + * the initial RegisterCallback call will be discarded. + * + * @param callback the callback to be invoked. + * @param state the state to be passed to the callback. + * @param instruments the instruments to be observed. + * @return a unique identifier for the registered callback, which can be used to unregister the + * callback in DeregisterCallback. + */ + virtual uintptr_t RegisterCallback(MultiObservableCallbackPtr callback, + void *state, + nostd::span instruments) noexcept = 0; + + /** + * Unregisters a callback previously registered with RegisterCallback. + * + * @param callback_id the unique identifier returned by RegisterCallback. + */ + virtual void DeregisterCallback(uintptr_t callback_id) noexcept = 0; +#endif }; } // namespace metrics OPENTELEMETRY_END_NAMESPACE diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/multi_observer_result.h b/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/multi_observer_result.h new file mode 100644 index 00000000000..e3c62562259 --- /dev/null +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/multi_observer_result.h @@ -0,0 +1,57 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/metrics/async_instruments.h" +#include "opentelemetry/metrics/observer_result.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace metrics +{ + +class MultiObserverResult +{ + +public: + virtual ~MultiObserverResult() = default; + + /** + * Obtain an ObserverResultT for the given instrument, that can be used to record + * a measurement on said instrument from a multi-observer callback registered with + * Meter::RegisterCallback. The instrument _must_ have been included in the original + * call to Meter::RegisterCallback; any data points set on other instruments will be + * discarded. + * + * @param instrument The instrument for which to obtain an ObserverResult. + * @return An ObserverResultT for the given instrument. + */ + template + ObserverResultT &ForInstrument(const ObservableInstrument *instrument) = delete; + +protected: + // You can't have a virtual template, and you can't overload on return type, so we need to + // enumerate the options for the observer result type as separate methods to override. + virtual ObserverResultT &ForInstrumentDouble(const ObservableInstrument *instrument) = 0; + virtual ObserverResultT &ForInstrumentInt64(const ObservableInstrument *instrument) = 0; +}; + +template <> +inline ObserverResultT &MultiObserverResult::ForInstrument( + const ObservableInstrument *instrument) +{ + return ForInstrumentDouble(instrument); +} + +template <> +inline ObserverResultT &MultiObserverResult::ForInstrument( + const ObservableInstrument *instrument) +{ + return ForInstrumentInt64(instrument); +} + +} // namespace metrics +OPENTELEMETRY_END_NAMESPACE diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/noop.h b/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/noop.h index 1d508b93877..d472f47c0f1 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/noop.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/metrics/noop.h @@ -229,6 +229,18 @@ class NoopMeter final : public Meter return nostd::shared_ptr( new NoopObservableInstrument(name, description, unit)); } + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + uintptr_t RegisterCallback( + MultiObservableCallbackPtr /* callback */, + void * /* state */, + nostd::span /* instruments */) noexcept override + { + return 0; + } + + void DeregisterCallback(uintptr_t /* callback_id */) noexcept override {} +#endif }; /** diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/internal/absl/types/internal/variant.h b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/internal/absl/types/internal/variant.h index 43e7285b234..4436b532d3d 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/internal/absl/types/internal/variant.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/internal/absl/types/internal/variant.h @@ -45,7 +45,7 @@ OTABSL_NAMESPACE_BEGIN template class variant; -OTABSL_INTERNAL_INLINE_CONSTEXPR(size_t, variant_npos, -1); +OTABSL_INTERNAL_INLINE_CONSTEXPR(size_t, variant_npos, static_cast(-1)); template struct variant_size; diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/shared_ptr.h b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/shared_ptr.h index 681c4eb377b..88fb07ad3ff 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/shared_ptr.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/shared_ptr.h @@ -119,6 +119,10 @@ class shared_ptr shared_ptr &operator=(shared_ptr &&other) noexcept { + if (this == &other) + { + return *this; + } wrapper().~shared_ptr_wrapper(); other.wrapper().MoveTo(buffer_); return *this; @@ -132,6 +136,10 @@ class shared_ptr shared_ptr &operator=(const shared_ptr &other) noexcept { + if (this == &other) + { + return *this; + } wrapper().~shared_ptr_wrapper(); other.wrapper().CopyTo(buffer_); return *this; diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/string_view.h b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/string_view.h index f0e5bd9e2ac..a0c80814735 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/string_view.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/string_view.h @@ -124,7 +124,7 @@ class string_view auto found = Traits::find(data() + pos, length() - pos, ch); if (found) { - res = found - data(); + res = static_cast(found - data()); } } return res; diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/variant.h b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/variant.h index 4abac7766a5..d465f1ad412 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/variant.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/nostd/variant.h @@ -27,7 +27,7 @@ namespace nostd class bad_variant_access : public std::exception { public: - virtual const char *what() const noexcept override { return "bad_variant_access"; } + const char *what() const noexcept override { return "bad_variant_access"; } }; [[noreturn]] inline void throw_bad_variant_access() diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/plugin/detail/dynamic_load_windows.h b/deps/opentelemetry-cpp/api/include/opentelemetry/plugin/detail/dynamic_load_windows.h index 5ed2833756b..7f4365e3c82 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/plugin/detail/dynamic_load_windows.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/plugin/detail/dynamic_load_windows.h @@ -12,10 +12,10 @@ #include "opentelemetry/plugin/hook.h" #include "opentelemetry/version.h" -#include +#include -#include #include +#include OPENTELEMETRY_BEGIN_NAMESPACE namespace plugin diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/db_attributes.h b/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/db_attributes.h index fa77366619b..67abc8a669d 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/db_attributes.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/db_attributes.h @@ -84,7 +84,7 @@ static constexpr const char *kDbOperationName = "db.operation.name"; Summary may be available to the instrumentation through instrumentation hooks or other means. If it is not available, instrumentations that support query parsing SHOULD generate a summary following - Generating query + Generating query summary section. */ static constexpr const char *kDbQuerySummary = "db.query.summary"; @@ -92,11 +92,10 @@ static constexpr const char *kDbQuerySummary = "db.query.summary"; /** The database query being executed.

- For sanitization see Sanitization of @code - db.query.text @endcode. For batch operations, if the individual operations are known to have - the same query text then that query text SHOULD be used, otherwise all of the individual query - texts SHOULD be concatenated with separator @code ; @endcode or some other database system + For sanitization see Sanitization + of @code db.query.text @endcode. For batch operations, if the individual operations are known + to have the same query text then that query text SHOULD be used, otherwise all of the individual + query texts SHOULD be concatenated with separator @code ; @endcode or some other database system specific separator if more applicable. Parameterized query text SHOULD NOT be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter diff --git a/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/error_attributes.h b/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/error_attributes.h index e0ef3c925ed..427a515347a 100644 --- a/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/error_attributes.h +++ b/deps/opentelemetry-cpp/api/include/opentelemetry/semconv/error_attributes.h @@ -35,7 +35,7 @@ namespace error additional filters are applied.

If the operation has completed successfully, instrumentations SHOULD NOT set @code error.type - @endcode.

If a specific domain defines its own set of error identifiers (such as HTTP or gRPC + @endcode.

If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), it's RECOMMENDED to: