opentelemetry-java
opentelemetry-java copied to clipboard
Move declarative config to permanent home
Declarative config currently resides in the opentelemetry-sdk-extension-incubator.
As declarative config approaches stability, its time to find a permanent home for this functionality.
Some quirks:
- It depends on jackson, YAML parsing libraries, which probably require that it to be opt in (as opposed to automatically bundled with a common dependency with
opentelemetry-sdk. - It depends on ComponentLoader, SpiHelper for loading SPIs, which currently reside in
opentelemetry-sdk-extensions-autoconfigure-spi - It depends on all core SDK packages, including
opentelemetry-sdk-trace,opentelemetry-sdk-logs,opentelemetry-sdk-metrics,opentelemetry-sdk-common, andopentelemetry-sdk. -
opentelemetry-sdk-extension-autoconfiguredepends on it (currently with a compileOnly dependency to avoid cycle but we may want to revisit that) - It contains SdkConfigProvider, the config analog of SdkTracerProvider, SdkMeterProvider, SdkLoggerProvider. For symmetry, this should become part of OpenTelemetrySdk, which resides in
opentelemetry-sdk. - ComponentProvider SPI plays a key role, also have DeclarativeConfigurationCustomizer SPI for customizing data model
Proposal:
- Move SpiHelper, ComponentLoader to
opentelemetry-sdk-common. This will break the dependency cycle, and also solidifies ComponentLoader (not ClassLoader) as our defacto interface for loading SPIs, which makes it easier for exporters to load SPIs (#7181). Arguably, we should move these all the way toopentelemetry-contextsince we load ContextStorageProvider via SPI. - Introduce two new config artifacts
-
opentelemetry-sdk-config: Holds model classes, create operation, factories, SdkConfigProvider, ComponentProvider SPI, DeclarativeConfigurationCustomizer SPI. Depends onopentelemetry-sdk-trace,opentelemetry-sdk-metrics,opentelemetry-sdk-logs.opentelemetry-sdkdepends onopentelemetry-sdk-configso OpenTelemetrySdk can (eventually) incorporate SdkConfigProvider. Notably, this means create needs to return alternative data structure since OpenTelemetrySdk isn't available. -
opentelemetry-sdk-config-parse: Holds parse operation. Depends on jackson / YAML libraries required for parsing. Depends onopentelemetry-sdk-config.
-
-
opentelemetry-sdk-extension-autoconfiguredepends onopentelemetry-sdk-config,opentelemetry-sdk-config-parseand holds the logic for invoking parse / create whenOTEL_EXPERIMENTAL_CONFIG_FILEis set.