Skip to content

Commit 698d752

Browse files
committed
Refresh code from PR #2518, to fix review comments.
1 parent b51eaa6 commit 698d752

File tree

3 files changed

+63
-57
lines changed

3 files changed

+63
-57
lines changed

sdk/include/opentelemetry/sdk/configuration/configured_sdk.h

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,39 @@ namespace sdk
2020
namespace configuration
2121
{
2222

23+
/**
24+
* This class represents a fully configured SDK.
25+
* A SDK contains various objects, like propagators and providers for each
26+
* signals, that collectively describe the opentelemetry configuration.
27+
*/
2328
class ConfiguredSdk
2429
{
2530
public:
2631
static std::unique_ptr<ConfiguredSdk> Create(
2732
std::shared_ptr<Registry> registry,
2833
const std::unique_ptr<opentelemetry::sdk::configuration::Configuration> &model);
2934

30-
ConfiguredSdk(
31-
opentelemetry::sdk::resource::Resource &&resource,
32-
const std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> &tracer_provider,
33-
const std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> &propagator,
34-
const std::shared_ptr<opentelemetry::sdk::metrics::MeterProvider> &meter_provider,
35-
const std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> &logger_provider)
36-
: resource_(std::move(resource)),
37-
tracer_provider_(tracer_provider),
38-
propagator_(propagator),
39-
meter_provider_(meter_provider),
40-
logger_provider_(logger_provider)
41-
{}
42-
43-
void Init();
44-
void Cleanup();
45-
46-
private:
47-
opentelemetry::sdk::resource::Resource resource_;
48-
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider_;
49-
std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> propagator_;
50-
std::shared_ptr<opentelemetry::sdk::metrics::MeterProvider> meter_provider_;
51-
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider_;
35+
ConfiguredSdk() : resource(opentelemetry::sdk::resource::Resource::GetEmpty()) {}
36+
37+
/**
38+
* Install the SDK, so that an instrumented application can make calls
39+
* to it.
40+
* This methods sets the global provider singletons to point to the SDK.
41+
*/
42+
void Install();
43+
44+
/**
45+
* Uninstall the SDK, so that an instrumented application no longer makes
46+
* calls to it.
47+
* This method clears the global provider singletons.
48+
*/
49+
void UnInstall();
50+
51+
opentelemetry::sdk::resource::Resource resource;
52+
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
53+
std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> propagator;
54+
std::shared_ptr<opentelemetry::sdk::metrics::MeterProvider> meter_provider;
55+
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider;
5256
};
5357

5458
} // namespace configuration

sdk/src/configuration/configured_sdk.cc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,53 +56,53 @@ std::unique_ptr<ConfiguredSdk> ConfiguredSdk::Create(
5656
return sdk;
5757
}
5858

59-
void ConfiguredSdk::Init()
59+
void ConfiguredSdk::Install()
6060
{
61-
if (propagator_)
61+
if (propagator)
6262
{
63-
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(propagator_);
63+
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(propagator);
6464
}
6565

66-
if (tracer_provider_)
66+
if (tracer_provider)
6767
{
68-
std::shared_ptr<opentelemetry::trace::TracerProvider> api_tracer_provider = tracer_provider_;
68+
std::shared_ptr<opentelemetry::trace::TracerProvider> api_tracer_provider = tracer_provider;
6969
opentelemetry::trace::Provider::SetTracerProvider(api_tracer_provider);
7070
}
7171

72-
if (meter_provider_)
72+
if (meter_provider)
7373
{
74-
std::shared_ptr<opentelemetry::metrics::MeterProvider> api_meter_provider = meter_provider_;
74+
std::shared_ptr<opentelemetry::metrics::MeterProvider> api_meter_provider = meter_provider;
7575
opentelemetry::metrics::Provider::SetMeterProvider(api_meter_provider);
7676
}
7777

78-
if (logger_provider_)
78+
if (logger_provider)
7979
{
80-
std::shared_ptr<opentelemetry::logs::LoggerProvider> api_logger_provider = logger_provider_;
80+
std::shared_ptr<opentelemetry::logs::LoggerProvider> api_logger_provider = logger_provider;
8181
opentelemetry::logs::Provider::SetLoggerProvider(api_logger_provider);
8282
}
8383
}
8484

85-
void ConfiguredSdk::Cleanup()
85+
void ConfiguredSdk::UnInstall()
8686
{
87-
if (propagator_)
87+
if (propagator)
8888
{
8989
std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> none;
9090
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(none);
9191
}
9292

93-
if (tracer_provider_)
93+
if (tracer_provider)
9494
{
9595
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
9696
opentelemetry::trace::Provider::SetTracerProvider(none);
9797
}
9898

99-
if (meter_provider_)
99+
if (meter_provider)
100100
{
101101
std::shared_ptr<opentelemetry::metrics::MeterProvider> none;
102102
opentelemetry::metrics::Provider::SetMeterProvider(none);
103103
}
104104

105-
if (logger_provider_)
105+
if (logger_provider)
106106
{
107107
std::shared_ptr<opentelemetry::logs::LoggerProvider> none;
108108
opentelemetry::logs::Provider::SetLoggerProvider(none);

sdk/src/configuration/sdk_builder.cc

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ std::unique_ptr<opentelemetry::sdk::trace::Sampler> SdkBuilder::CreateJaegerRemo
711711
{
712712
std::unique_ptr<opentelemetry::sdk::trace::Sampler> sdk;
713713

714-
static const std::string die("JeagerRemoteSampler not supported");
714+
static const std::string die("JaegerRemoteSampler not supported");
715715
throw UnsupportedException(die);
716716

717717
return sdk;
@@ -764,10 +764,19 @@ std::unique_ptr<opentelemetry::sdk::trace::Sampler> SdkBuilder::CreateParentBase
764764
local_parent_not_sampled_sdk = opentelemetry::sdk::trace::AlwaysOffSamplerFactory::Create();
765765
}
766766

767-
// FIXME-SDK: https://github.com/open-telemetry/opentelemetry-cpp/issues/3545
768-
OTEL_INTERNAL_LOG_ERROR("CreateParentBasedSampler: FIXME-SDK, missing param in parent factory");
769-
std::shared_ptr<opentelemetry::sdk::trace::Sampler> delegate_sampler = std::move(root_sdk);
770-
sdk = opentelemetry::sdk::trace::ParentBasedSamplerFactory::Create(delegate_sampler);
767+
std::shared_ptr<opentelemetry::sdk::trace::Sampler> shared_root = std::move(root_sdk);
768+
std::shared_ptr<opentelemetry::sdk::trace::Sampler> shared_remote_parent_sampled =
769+
std::move(remote_parent_sampled_sdk);
770+
std::shared_ptr<opentelemetry::sdk::trace::Sampler> shared_remote_parent_not_sampled =
771+
std::move(remote_parent_not_sampled_sdk);
772+
std::shared_ptr<opentelemetry::sdk::trace::Sampler> shared_local_parent_sampled =
773+
std::move(local_parent_sampled_sdk);
774+
std::shared_ptr<opentelemetry::sdk::trace::Sampler> shared_local_parent_not_sampled =
775+
std::move(local_parent_not_sampled_sdk);
776+
777+
sdk = opentelemetry::sdk::trace::ParentBasedSamplerFactory::Create(
778+
shared_root, shared_remote_parent_sampled, shared_remote_parent_not_sampled,
779+
shared_local_parent_sampled, shared_local_parent_not_sampled);
771780

772781
return sdk;
773782
}
@@ -1009,7 +1018,7 @@ std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> SdkBuilder::CreateTra
10091018
std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> sdk;
10101019

10111020
// FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/70
1012-
OTEL_INTERNAL_LOG_ERROR("CreateTracerProvider: FIXME-CONFIG (IdGenerator)");
1021+
// FIXME-CONFIG: Add support for IdGenerator
10131022

10141023
std::unique_ptr<opentelemetry::sdk::trace::Sampler> sampler;
10151024

@@ -1364,7 +1373,7 @@ SdkBuilder::CreateAttributesProcessor(
13641373

13651374
// FIXME-SDK: https://github.com/open-telemetry/opentelemetry-cpp/issues/3546
13661375
// FIXME-SDK: Need a subclass of AttributesProcessor for IncludeExclude
1367-
OTEL_INTERNAL_LOG_ERROR("CreateAttributesProcessor() FIXME-SDK IncludeExclude");
1376+
OTEL_INTERNAL_LOG_WARN("IncludeExclude attribute processor not supported, ignoring");
13681377

13691378
return sdk;
13701379
}
@@ -1699,7 +1708,7 @@ void SdkBuilder::SetResource(
16991708
{
17001709
// FIXME-SDK: https://github.com/open-telemetry/opentelemetry-cpp/issues/3548
17011710
// FIXME-SDK: Implement resource detectors
1702-
OTEL_INTERNAL_LOG_ERROR("SdkBuilder::SetResource: FIXME-SDK detectors");
1711+
OTEL_INTERNAL_LOG_WARN("resource detectors not supported, ignoring");
17031712
}
17041713

17051714
auto sdk_resource =
@@ -1715,16 +1724,11 @@ void SdkBuilder::SetResource(
17151724
std::unique_ptr<ConfiguredSdk> SdkBuilder::CreateConfiguredSdk(
17161725
const std::unique_ptr<opentelemetry::sdk::configuration::Configuration> &model) const
17171726
{
1718-
std::unique_ptr<ConfiguredSdk> sdk;
1719-
auto resource = opentelemetry::sdk::resource::Resource::GetEmpty();
1720-
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
1721-
std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> propagator;
1722-
std::shared_ptr<opentelemetry::sdk::metrics::MeterProvider> meter_provider;
1723-
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider;
1727+
auto sdk = std::make_unique<ConfiguredSdk>();
17241728

17251729
if (!model->disabled)
17261730
{
1727-
SetResource(resource, model->resource);
1731+
SetResource(sdk->resource, model->resource);
17281732

17291733
if (model->attribute_limits)
17301734
{
@@ -1735,27 +1739,25 @@ std::unique_ptr<ConfiguredSdk> SdkBuilder::CreateConfiguredSdk(
17351739

17361740
if (model->tracer_provider)
17371741
{
1738-
tracer_provider = CreateTracerProvider(model->tracer_provider, resource);
1742+
sdk->tracer_provider = CreateTracerProvider(model->tracer_provider, sdk->resource);
17391743
}
17401744

17411745
if (model->propagator)
17421746
{
1743-
propagator = CreatePropagator(model->propagator);
1747+
sdk->propagator = CreatePropagator(model->propagator);
17441748
}
17451749

17461750
if (model->meter_provider)
17471751
{
1748-
meter_provider = CreateMeterProvider(model->meter_provider, resource);
1752+
sdk->meter_provider = CreateMeterProvider(model->meter_provider, sdk->resource);
17491753
}
17501754

17511755
if (model->logger_provider)
17521756
{
1753-
logger_provider = CreateLoggerProvider(model->logger_provider, resource);
1757+
sdk->logger_provider = CreateLoggerProvider(model->logger_provider, sdk->resource);
17541758
}
17551759
}
17561760

1757-
sdk = std::make_unique<ConfiguredSdk>(std::move(resource), tracer_provider, propagator,
1758-
meter_provider, logger_provider);
17591761
return sdk;
17601762
}
17611763

0 commit comments

Comments
 (0)