Skip to content

[CONFIGURATION] File configuration - component registry #3537

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 17, 2025

Conversation

marcalff
Copy link
Member

Contributes to #2481

This is a partial fix, that implements the component registry.

Changes

Please provide a brief description of the changes here.

  • Implement the component registry:
    • Core component are made available using a build function, to avoid link dependencies on optional components.
    • Extension points are registered by name

For significant contributions please make sure you have completed the following items:

  • CHANGELOG.md updated for non-trivial changes
  • Unit tests have been added
  • Changes in public API reviewed

@marcalff marcalff requested a review from a team as a code owner July 13, 2025 20:39
Copy link

netlify bot commented Jul 13, 2025

Deploy Preview for opentelemetry-cpp-api-docs canceled.

Name Link
🔨 Latest commit ea1d2d9
🔍 Latest deploy log https://app.netlify.com/projects/opentelemetry-cpp-api-docs/deploys/6878f4407449470008678f12

Copy link

codecov bot commented Jul 13, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.99%. Comparing base (0e51e67) to head (ea1d2d9).
Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #3537   +/-   ##
=======================================
  Coverage   89.99%   89.99%           
=======================================
  Files         219      219           
  Lines        7048     7048           
=======================================
  Hits         6342     6342           
  Misses        706      706           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lalitb lalitb requested a review from Copilot July 14, 2025 17:28
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Implements a component registry to manage core and extension builders by name, allowing deferred binding of optional components.

  • Introduce a Registry class for storing and retrieving core and extension component builders.
  • Define abstract builder interfaces for propagators, exporters, samplers, processors, and metric readers under sdk/init.
  • Populate default TextMapPropagatorBuilder implementations for tracecontext, baggage, B3 (single and multi-header), and Jaeger in registry.cc.

Reviewed Changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
sdk/src/init/registry.cc Register default TextMapPropagatorBuilders and implement registry lookup/add methods
sdk/include/opentelemetry/sdk/init/registry.h Declare Registry class with maps for core and extension component builders
sdk/include/opentelemetry/sdk/init/text_map_propagator_builder.h Define abstract TextMapPropagatorBuilder interface
sdk/include/opentelemetry/sdk/init/zipkin_span_exporter_builder.h Define ZipkinSpanExporterBuilder interface
sdk/include/opentelemetry/sdk/init/prometheus_pull_metric_exporter_builder.h Define PrometheusPullMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_http_span_exporter_builder.h Define OtlpHttpSpanExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_http_push_metric_exporter_builder.h Define OtlpHttpPushMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_http_log_record_exporter_builder.h Define OtlpHttpLogRecordExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_grpc_span_exporter_builder.h Define OtlpGrpcSpanExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_grpc_push_metric_exporter_builder.h Define OtlpGrpcPushMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_grpc_log_record_exporter_builder.h Define OtlpGrpcLogRecordExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_file_span_exporter_builder.h Define OtlpFileSpanExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_file_push_metric_exporter_builder.h Define OtlpFilePushMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/otlp_file_log_record_exporter_builder.h Define OtlpFileLogRecordExporterBuilder interface
sdk/include/opentelemetry/sdk/init/extension_span_processor_builder.h Define ExtensionSpanProcessorBuilder interface
sdk/include/opentelemetry/sdk/init/extension_span_exporter_builder.h Define ExtensionSpanExporterBuilder interface
sdk/include/opentelemetry/sdk/init/extension_sampler_builder.h Define ExtensionSamplerBuilder interface
sdk/include/opentelemetry/sdk/init/extension_push_metric_exporter_builder.h Define ExtensionPushMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/extension_pull_metric_exporter_builder.h Define ExtensionPullMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/extension_log_record_processor_builder.h Define ExtensionLogRecordProcessorBuilder interface
sdk/include/opentelemetry/sdk/init/extension_log_record_exporter_builder.h Define ExtensionLogRecordExporterBuilder interface
sdk/include/opentelemetry/sdk/init/console_span_exporter_builder.h Define ConsoleSpanExporterBuilder interface
sdk/include/opentelemetry/sdk/init/console_push_metric_exporter_builder.h Define ConsolePushMetricExporterBuilder interface
sdk/include/opentelemetry/sdk/init/console_log_record_exporter_builder.h Define ConsoleLogRecordExporterBuilder interface
Comments suppressed due to low confidence (1)

sdk/src/init/registry.cc:103

  • Consider adding unit tests for Registry::GetTextMapPropagatorBuilder and AddTextMapPropagatorBuilder to validate registration and lookup behavior.
  auto search                       = m_propagator_builders.find(name);

@marcalff
Copy link
Member Author

marcalff commented Jul 16, 2025

@dbarker Thanks for the first round of review.

All comments addressed, please take another look.

@marcalff
Copy link
Member Author

@Copilot Please take another look.

Copy link
Contributor

@dbarker dbarker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks!

@marcalff marcalff merged commit 5423b91 into main Jul 17, 2025
70 checks passed
@marcalff marcalff deleted the merge_config_component_registry branch July 17, 2025 20:26
malkia added a commit to malkia/opentelemetry-cpp that referenced this pull request Jul 18, 2025
[CONFIGURATION] File configuration - component registry (open-telemetry#3537)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants