Open marcalff opened 5 days ago
For reference, from the DEPRECATED.md file published in 1.16.0:
This PR introduces changes to SDK ProviderFactory methods.
SDK Factory methods for signal providers, such as:
currently returns a unique pointer on a API class.
This is incorrect, the proper return type should be a unique pointer on a SDK class instead.
All the current Create methods in:
are marked as deprecated, as they return an API object.
Instead, another set of Create methods is provided, with a different return type, an SDK object.
Both sets can not be exposed at the same time, as this would cause build breaks, so a compilation flag is defined to select which methods to use.
When OPENTELEMETRY_DEPRECATED_SDK_FACTORY is defined, the old, deprecated, methods are available.
When OPENTELEMETRY_DEPRECATED_SDK_FACTORY is not defined, the new methods are available.
The scope of this deprecation and removal, is to remove the flag OPENTELEMETRY_DEPRECATED_SDK_FACTORY itself, which implies that only the new set of Create() methods, returning an SDK object, are supported.
Build without defining flag OPENTELEMETRY_DEPRECATED_SDK_FACTORY.
Existing code, such as:
std::shared_ptr<opentelemetry::trace::TracerProvider> tracer_provider;
tracer_provider = opentelemetry::sdk::trace::TracerProviderFactory::Create(...);
should be adjusted to:
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
tracer_provider = opentelemetry::sdk::trace::TracerProviderFactory::Create(...);
Flag OPENTELEMETRY_DEPRECATED_SDK_FACTORY is introduced in release 1.16.0, to provide a migration path.
This flag is meant to be temporary, and short lived. Expect removal by release 1.17.0
CMake option
WITH_DEPRECATED_SDK_FACTORY
was introduced in opentelemetry-cpp 1.16.0.This option is temporary, and used to avoid application code changes when upgrading to 1.16.0, to facilitate upgrade.
Remove option
WITH_DEPRECATED_SDK_FACTORY
for the next release.Code currently using
WITH_DEPRECATED_SDK_FACTORY=OFF
is ready and not affected.Code still using
WITH_DEPRECATED_SDK_FACTORY=ON
in release 1.16.0 will not build in 1.17.0. It must be fixed before upgrading to the next release.