open-telemetry / opentelemetry-cpp

The OpenTelemetry C++ Client
https://opentelemetry.io/
Apache License 2.0
811 stars 391 forks source link

[REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY` #2716

Open marcalff opened 5 days ago

marcalff commented 5 days ago

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.

marcalff commented 5 days ago

For reference, from the DEPRECATED.md file published in 1.16.0:


SDK ProviderFactory cleanup

Announcement (SDK ProviderFactory cleanup)

This PR introduces changes to SDK ProviderFactory methods.

Motivation (SDK ProviderFactory cleanup)

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.

Scope (SDK ProviderFactory cleanup)

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.

Mitigation (SDK ProviderFactory cleanup)

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(...);

Planned removal (SDK ProviderFactory cleanup)

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