Skip to content

Commit c1affcf

Browse files
authored
[CONFIGURATION] Break the configuration_core dependency on the SDK trace library (#4555)
1 parent 71cbf11 commit c1affcf

11 files changed

Lines changed: 1060 additions & 1091 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ Increment the:
4848
and leaving the caller waiting
4949
[#4425](https://github.com/open-telemetry/opentelemetry-cpp/issues/4425)
5050

51+
* [CONFIGURATION] Break the configuration_core dependency on SDK trace
52+
[#4555](https://github.com/open-telemetry/opentelemetry-cpp/pull/4555)
53+
5154
* [CONFIGURATION] Build the configured resource detectors in SdkBuilder, apply
5255
the `detection.attributes` include/exclude filter to the detected attributes,
5356
and merge the resource per the resource SDK specification.

‎sdk/include/opentelemetry/sdk/configuration/sdk_builder.h‎

Lines changed: 9 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -3,160 +3,39 @@
33

44
#pragma once
55

6-
#include <cstddef>
76
#include <memory>
7+
#include <string>
88

9-
#include "opentelemetry/sdk/configuration/always_off_sampler_configuration.h"
10-
#include "opentelemetry/sdk/configuration/attribute_limits_configuration.h"
11-
#include "opentelemetry/sdk/configuration/base2_exponential_bucket_histogram_aggregation_configuration.h"
12-
#include "opentelemetry/sdk/configuration/batch_log_record_processor_configuration.h"
13-
#include "opentelemetry/sdk/configuration/batch_span_processor_configuration.h"
14-
#include "opentelemetry/sdk/configuration/boolean_array_attribute_value_configuration.h"
15-
#include "opentelemetry/sdk/configuration/boolean_attribute_value_configuration.h"
9+
#include "opentelemetry/context/propagation/text_map_propagator.h"
10+
#include "opentelemetry/sdk/common/global_log_handler.h"
11+
#include "opentelemetry/sdk/configuration/attribute_value_configuration.h"
1612
#include "opentelemetry/sdk/configuration/configuration.h"
1713
#include "opentelemetry/sdk/configuration/configured_sdk.h"
18-
#include "opentelemetry/sdk/configuration/console_log_record_exporter_configuration.h"
19-
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h"
2014
#include "opentelemetry/sdk/configuration/container_resource_detector_configuration.h"
21-
#include "opentelemetry/sdk/configuration/double_array_attribute_value_configuration.h"
22-
#include "opentelemetry/sdk/configuration/double_attribute_value_configuration.h"
23-
#include "opentelemetry/sdk/configuration/explicit_bucket_histogram_aggregation_configuration.h"
24-
#include "opentelemetry/sdk/configuration/extension_pull_metric_exporter_configuration.h"
25-
#include "opentelemetry/sdk/configuration/extension_push_metric_exporter_configuration.h"
2615
#include "opentelemetry/sdk/configuration/extension_resource_detector_configuration.h"
27-
#include "opentelemetry/sdk/configuration/extension_span_exporter_configuration.h"
28-
#include "opentelemetry/sdk/configuration/extension_span_processor_configuration.h"
2916
#include "opentelemetry/sdk/configuration/host_resource_detector_configuration.h"
30-
#include "opentelemetry/sdk/configuration/integer_array_attribute_value_configuration.h"
31-
#include "opentelemetry/sdk/configuration/integer_attribute_value_configuration.h"
32-
#include "opentelemetry/sdk/configuration/logger_configurator_configuration.h"
33-
#include "opentelemetry/sdk/configuration/meter_configurator_configuration.h"
34-
#include "opentelemetry/sdk/configuration/metric_reader_configuration.h"
35-
#include "opentelemetry/sdk/configuration/otlp_file_log_record_exporter_configuration.h"
36-
#include "opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h"
37-
#include "opentelemetry/sdk/configuration/otlp_file_span_exporter_configuration.h"
38-
#include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h"
39-
#include "opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h"
40-
#include "opentelemetry/sdk/configuration/otlp_grpc_span_exporter_configuration.h"
41-
#include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h"
42-
#include "opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h"
43-
#include "opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h"
44-
#include "opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h"
45-
#include "opentelemetry/sdk/configuration/probability_sampler_configuration.h"
4617
#include "opentelemetry/sdk/configuration/process_resource_detector_configuration.h"
47-
#include "opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h"
48-
#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h"
49-
#include "opentelemetry/sdk/configuration/pull_metric_reader_configuration.h"
50-
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
18+
#include "opentelemetry/sdk/configuration/propagator_configuration.h"
5119
#include "opentelemetry/sdk/configuration/registry.h"
20+
#include "opentelemetry/sdk/configuration/resource_configuration.h"
5221
#include "opentelemetry/sdk/configuration/resource_detection_configuration.h"
5322
#include "opentelemetry/sdk/configuration/resource_detector_configuration.h"
5423
#include "opentelemetry/sdk/configuration/service_resource_detector_configuration.h"
55-
#include "opentelemetry/sdk/configuration/simple_span_processor_configuration.h"
56-
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
57-
#include "opentelemetry/sdk/configuration/string_array_attribute_value_configuration.h"
58-
#include "opentelemetry/sdk/configuration/string_attribute_value_configuration.h"
59-
#include "opentelemetry/sdk/configuration/tracer_configurator_configuration.h"
60-
#include "opentelemetry/sdk/instrumentationscope/scope_configurator.h"
24+
#include "opentelemetry/sdk/configuration/severity_number.h"
25+
#include "opentelemetry/sdk/resource/resource.h"
6126
#include "opentelemetry/sdk/resource/resource_detector.h"
62-
#include "opentelemetry/sdk/trace/exporter.h"
63-
#include "opentelemetry/sdk/trace/processor.h"
64-
#include "opentelemetry/sdk/trace/sampler.h"
65-
#include "opentelemetry/sdk/trace/tracer_config.h"
66-
#include "opentelemetry/sdk/trace/tracer_provider.h"
67-
#include "opentelemetry/trace/tracer_provider.h"
6827
#include "opentelemetry/version.h"
6928

7029
OPENTELEMETRY_BEGIN_NAMESPACE
7130
namespace sdk
7231
{
73-
namespace trace
74-
{
75-
class ComposableSampler;
76-
} // namespace trace
77-
7832
namespace configuration
7933
{
8034

81-
class ComposableSamplerConfiguration;
82-
8335
class SdkBuilder
8436
{
8537
public:
86-
SdkBuilder(std::shared_ptr<Registry> registry) : registry_(std::move(registry)) {}
87-
SdkBuilder(SdkBuilder &&) = default;
88-
SdkBuilder(const SdkBuilder &) = default;
89-
SdkBuilder &operator=(SdkBuilder &&) = default;
90-
SdkBuilder &operator=(const SdkBuilder &other) = default;
91-
~SdkBuilder() = default;
92-
93-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateAlwaysOffSampler(
94-
const opentelemetry::sdk::configuration::AlwaysOffSamplerConfiguration *model) const;
95-
96-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateAlwaysOnSampler(
97-
const opentelemetry::sdk::configuration::AlwaysOnSamplerConfiguration *model) const;
98-
99-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateJaegerRemoteSampler(
100-
const opentelemetry::sdk::configuration::JaegerRemoteSamplerConfiguration *model) const;
101-
102-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateParentBasedSampler(
103-
const opentelemetry::sdk::configuration::ParentBasedSamplerConfiguration *model) const;
104-
105-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateProbabilitySampler(
106-
const opentelemetry::sdk::configuration::ProbabilitySamplerConfiguration *model) const;
107-
108-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateTraceIdRatioBasedSampler(
109-
const opentelemetry::sdk::configuration::TraceIdRatioBasedSamplerConfiguration *model) const;
110-
111-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateExtensionSampler(
112-
const opentelemetry::sdk::configuration::ExtensionSamplerConfiguration *model) const;
113-
114-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateSampler(
115-
const std::unique_ptr<opentelemetry::sdk::configuration::SamplerConfiguration> &model) const;
116-
117-
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateCompositeSampler(
118-
const opentelemetry::sdk::configuration::ComposableSamplerConfiguration *model) const;
119-
120-
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateOtlpHttpSpanExporter(
121-
const opentelemetry::sdk::configuration::OtlpHttpSpanExporterConfiguration *model) const;
122-
123-
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateOtlpGrpcSpanExporter(
124-
const opentelemetry::sdk::configuration::OtlpGrpcSpanExporterConfiguration *model) const;
125-
126-
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateOtlpFileSpanExporter(
127-
const opentelemetry::sdk::configuration::OtlpFileSpanExporterConfiguration *model) const;
128-
129-
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateConsoleSpanExporter(
130-
const opentelemetry::sdk::configuration::ConsoleSpanExporterConfiguration *model) const;
131-
132-
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateExtensionSpanExporter(
133-
const opentelemetry::sdk::configuration::ExtensionSpanExporterConfiguration *model) const;
134-
135-
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateSpanExporter(
136-
const std::unique_ptr<opentelemetry::sdk::configuration::SpanExporterConfiguration> &model)
137-
const;
138-
139-
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateBatchSpanProcessor(
140-
const opentelemetry::sdk::configuration::BatchSpanProcessorConfiguration *model) const;
141-
142-
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateSimpleSpanProcessor(
143-
const opentelemetry::sdk::configuration::SimpleSpanProcessorConfiguration *model) const;
144-
145-
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateExtensionSpanProcessor(
146-
const opentelemetry::sdk::configuration::ExtensionSpanProcessorConfiguration *model) const;
147-
148-
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateSpanProcessor(
149-
const std::unique_ptr<opentelemetry::sdk::configuration::SpanProcessorConfiguration> &model)
150-
const;
151-
152-
std::unique_ptr<opentelemetry::sdk::instrumentationscope::ScopeConfigurator<
153-
opentelemetry::sdk::trace::TracerConfig>>
154-
CreateTracerConfigurator(const std::unique_ptr<TracerConfiguratorConfiguration> &model) const;
155-
156-
std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> CreateTracerProvider(
157-
const std::unique_ptr<opentelemetry::sdk::configuration::TracerProviderConfiguration> &model,
158-
const opentelemetry::sdk::resource::Resource &resource,
159-
const AttributeLimitsConfiguration *attribute_limits = nullptr) const;
38+
explicit SdkBuilder(std::shared_ptr<Registry> registry);
16039

16140
std::unique_ptr<opentelemetry::context::propagation::TextMapPropagator> CreateTextMapPropagator(
16241
const std::string &name) const;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/registry.h"
9+
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
10+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
11+
#include "opentelemetry/sdk/configuration/span_processor_configuration.h"
12+
#include "opentelemetry/sdk/configuration/tracer_configurator_configuration.h"
13+
#include "opentelemetry/sdk/instrumentationscope/scope_configurator.h"
14+
#include "opentelemetry/sdk/trace/exporter.h"
15+
#include "opentelemetry/sdk/trace/processor.h"
16+
#include "opentelemetry/sdk/trace/sampler.h"
17+
#include "opentelemetry/sdk/trace/tracer_config.h"
18+
#include "opentelemetry/version.h"
19+
20+
OPENTELEMETRY_BEGIN_NAMESPACE
21+
namespace sdk
22+
{
23+
namespace configuration
24+
{
25+
26+
/**
27+
* Common utility functions for building trace SDK components from configuration models
28+
*/
29+
class TraceBuilderUtils
30+
{
31+
public:
32+
static std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateSampler(
33+
const Registry *registry,
34+
const std::unique_ptr<SamplerConfiguration> &model);
35+
36+
static std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateSpanExporter(
37+
const Registry *registry,
38+
const std::unique_ptr<SpanExporterConfiguration> &model);
39+
40+
static std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateSpanProcessor(
41+
const Registry *registry,
42+
const std::unique_ptr<SpanProcessorConfiguration> &model);
43+
44+
static std::unique_ptr<opentelemetry::sdk::instrumentationscope::ScopeConfigurator<
45+
opentelemetry::sdk::trace::TracerConfig>>
46+
CreateTracerConfigurator(const Registry *registry,
47+
const std::unique_ptr<TracerConfiguratorConfiguration> &model);
48+
};
49+
50+
} // namespace configuration
51+
} // namespace sdk
52+
OPENTELEMETRY_END_NAMESPACE

‎sdk/src/configuration/BUILD‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,22 @@ cc_library(
2424
"//sdk:headers",
2525
"//sdk/src/common:wildcard_match",
2626
"//sdk/src/resource",
27-
"//sdk/src/trace",
2827
],
2928
)
3029

3130
cc_library(
3231
name = "configuration_trace_builders",
33-
srcs = ["trace_builders.cc"],
32+
srcs = [
33+
"trace_builder_utils.cc",
34+
"trace_builders.cc",
35+
],
3436
include_prefix = "src/configuration",
3537
deps = [
3638
":configuration_core",
3739
"//api",
3840
"//sdk:headers",
3941
"//sdk/src/common:wildcard_match",
42+
"//sdk/src/trace",
4043
],
4144
)
4245

@@ -52,6 +55,7 @@ cc_library(
5255
"//api",
5356
"//sdk:headers",
5457
"//sdk/src/common:wildcard_match",
58+
"//sdk/src/logs",
5559
],
5660
)
5761

‎sdk/src/configuration/CMakeLists.txt‎

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,13 @@ target_include_directories(
2323
PUBLIC "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/sdk/include>"
2424
"$<INSTALL_INTERFACE:include>")
2525

26-
# TODO: Remove trace, metrics and logs library links from config core. See:
27-
# https://github.com/open-telemetry/opentelemetry-cpp/issues/4352
2826
target_link_libraries(
2927
opentelemetry_configuration_core
30-
PUBLIC opentelemetry_api opentelemetry_common opentelemetry_resources
31-
opentelemetry_trace)
28+
PUBLIC opentelemetry_api opentelemetry_common opentelemetry_resources)
3229

3330
# Trace SDK component builders
34-
add_library(opentelemetry_configuration_trace_builders trace_builders.cc)
31+
add_library(opentelemetry_configuration_trace_builders trace_builder_utils.cc
32+
trace_builders.cc)
3533

3634
set_target_properties(opentelemetry_configuration_trace_builders
3735
PROPERTIES EXPORT_NAME configuration_trace_builders)
@@ -101,15 +99,9 @@ target_link_libraries(
10199

102100
if(OPENTELEMETRY_INSTALL)
103101
opentelemetry_add_pkgconfig(
104-
configuration_core
105-
"OpenTelemetry SDK - Configuration Core"
102+
configuration_core "OpenTelemetry SDK - Configuration Core"
106103
"Programmatic configuration model, registry, and SDK builder."
107-
"opentelemetry_api"
108-
"opentelemetry_common"
109-
"opentelemetry_trace"
110-
"opentelemetry_metrics"
111-
"opentelemetry_logs"
112-
"opentelemetry_resources")
104+
"opentelemetry_api" "opentelemetry_common" "opentelemetry_resources")
113105

114106
opentelemetry_add_pkgconfig(
115107
configuration_trace_builders

0 commit comments

Comments
 (0)