Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
remove ConfigurableProvider
remove SPI for SpanProcessor
  • Loading branch information
zeitlinger committed Feb 28, 2024
commit 42d6e1716adf75f72368c46c61da30ece1101969
Original file line number Diff line number Diff line change
@@ -1,20 +1,2 @@
Comparing source compatibility of against
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW INTERFACE: io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider
+++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider (not serializable)
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
+++ NEW SUPERCLASS: java.lang.Object
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getName()
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW INTERFACE: io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW INTERFACE: io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSamplerProvider (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW INTERFACE: io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW INTERFACE: io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider
Comparing source compatibility of against
No changes.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* #getPropagator(ConfigProperties)} will be enabled and available as part of {@link
* OpenTelemetry#getPropagators()}.
*/
public interface ConfigurablePropagatorProvider extends ConfigurableProvider {
public interface ConfigurablePropagatorProvider {
/**
* Returns a {@link TextMapPropagator} that can be registered to OpenTelemetry by providing the
* property value specified by {@link #getName()}.
Expand All @@ -27,6 +27,5 @@ public interface ConfigurablePropagatorProvider extends ConfigurableProvider {
* property to enable it. If the name is the same as any other defined propagator name, it is
* undefined which will be used.
*/
@Override
String getName();
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure.spi.internal;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.opentelemetry.sdk.metrics.export.MetricReader;
Expand All @@ -25,7 +24,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public interface ConfigurableMetricReaderProvider extends ConfigurableProvider {
public interface ConfigurableMetricReaderProvider {

/**
* Returns a {@link MetricReader} that can be registered to OpenTelemetry by providing the
Expand All @@ -41,6 +40,5 @@ public interface ConfigurableMetricReaderProvider extends ConfigurableProvider {
* name, the resulting behavior is undefined and it is explicitly unspecified which reader /
* exporter will actually be used.
*/
@Override
String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure.spi.logs;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;

/**
Expand All @@ -17,7 +16,7 @@
*
* @since 1.19.0
*/
public interface ConfigurableLogRecordExporterProvider extends ConfigurableProvider {
public interface ConfigurableLogRecordExporterProvider {

/**
* Returns a {@link LogRecordExporter} that can be registered to OpenTelemetry by providing the
Expand All @@ -31,6 +30,5 @@ public interface ConfigurableLogRecordExporterProvider extends ConfigurableProvi
* the name does conflict with another exporter name, the resulting behavior is undefined and it
* is explicitly unspecified which exporter will actually be used.
*/
@Override
String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure.spi.metrics;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ConfigurableMetricReaderProvider;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.opentelemetry.sdk.metrics.export.MetricReader;
Expand All @@ -23,7 +22,7 @@
*
* @since 1.15.0
*/
public interface ConfigurableMetricExporterProvider extends ConfigurableProvider {
public interface ConfigurableMetricExporterProvider {

/**
* Returns a {@link MetricExporter} that can be registered to OpenTelemetry by providing the
Expand All @@ -39,6 +38,5 @@ public interface ConfigurableMetricExporterProvider extends ConfigurableProvider
* name, the resulting behavior is undefined and it is explicitly unspecified which exporter /
* reader will actually be used.
*/
@Override
String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure.spi.traces;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.trace.samplers.Sampler;

/**
Expand All @@ -15,7 +14,7 @@
* returned by {@link #getName()}, the sampler returned by {@link #createSampler(ConfigProperties)}
* will be enabled and added to the SDK.
*/
public interface ConfigurableSamplerProvider extends ConfigurableProvider {
public interface ConfigurableSamplerProvider {

/**
* Returns a {@link Sampler} that can be registered to OpenTelemetry by providing the property
Expand All @@ -29,6 +28,5 @@ public interface ConfigurableSamplerProvider extends ConfigurableProvider {
* the name does conflict with another exporter name, the resulting behavior is undefined and it
* is explicitly unspecified which exporter will actually be used.
*/
@Override
String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure.spi.traces;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.trace.export.SpanExporter;

/**
Expand All @@ -15,7 +14,7 @@
* is returned by {@link #getName()}, the exporter returned by {@link
* #createExporter(ConfigProperties)} will be enabled and added to the SDK.
*/
public interface ConfigurableSpanExporterProvider extends ConfigurableProvider {
public interface ConfigurableSpanExporterProvider {

/**
* Returns a {@link SpanExporter} that can be registered to OpenTelemetry by providing the
Expand All @@ -29,6 +28,5 @@ public interface ConfigurableSpanExporterProvider extends ConfigurableProvider {
* the name does conflict with another exporter name, the resulting behavior is undefined and it
* is explicitly unspecified which exporter will actually be used.
*/
@Override
String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ static NamedSpiManager<LogRecordExporter> logRecordExporterSpiManager(
ConfigProperties config, SpiHelper spiHelper) {
return spiHelper.loadConfigurable(
ConfigurableLogRecordExporterProvider.class,
ConfigurableLogRecordExporterProvider::getName,
ConfigurableLogRecordExporterProvider::createExporter,
config);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ static NamedSpiManager<MetricReader> metricReadersSpiManager(
ConfigProperties config, SpiHelper spiHelper) {
return spiHelper.loadConfigurable(
ConfigurableMetricReaderProvider.class,
ConfigurableMetricReaderProvider::getName,
ConfigurableMetricReaderProvider::createMetricReader,
config);
}
Expand All @@ -106,6 +107,7 @@ static NamedSpiManager<MetricExporter> metricExporterSpiManager(
ConfigProperties config, SpiHelper spiHelper) {
return spiHelper.loadConfigurable(
ConfigurableMetricExporterProvider.class,
ConfigurableMetricExporterProvider::getName,
ConfigurableMetricExporterProvider::createExporter,
config);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ static ContextPropagators configurePropagators(
NamedSpiManager<TextMapPropagator> spiPropagatorsManager =
spiHelper.loadConfigurable(
ConfigurablePropagatorProvider.class,
ConfigurablePropagatorProvider::getName,
ConfigurablePropagatorProvider::getPropagator,
config);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ static NamedSpiManager<SpanExporter> spanExporterSpiManager(
ConfigProperties config, SpiHelper spiHelper) {
return spiHelper.loadConfigurable(
ConfigurableSpanExporterProvider.class,
ConfigurableSpanExporterProvider::getName,
ConfigurableSpanExporterProvider::createExporter,
config);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import io.opentelemetry.sdk.trace.samplers.Sampler;
import java.io.Closeable;
import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -55,7 +56,7 @@ static void configureTracerProvider(
config, spiHelper, spanExporterCustomizer, closeables);

List<SpanProcessor> processors =
configureSpanProcessors(config, exportersByName, meterProvider, closeables, spiHelper);
configureSpanProcessors(config, exportersByName, meterProvider, closeables);
for (SpanProcessor processor : processors) {
SpanProcessor wrapped = spanProcessorCustomizer.apply(processor, config);
if (wrapped != processor) {
Expand All @@ -69,10 +70,9 @@ static List<SpanProcessor> configureSpanProcessors(
ConfigProperties config,
Map<String, SpanExporter> exportersByName,
MeterProvider meterProvider,
List<Closeable> closeables,
SpiHelper spiHelper) {
List<Closeable> closeables) {
Map<String, SpanExporter> exportersByNameCopy = new HashMap<>(exportersByName);
List<SpanProcessor> spanProcessors = spiHelper.load(SpanProcessor.class);
List<SpanProcessor> spanProcessors = new ArrayList<>();

SpanExporter exporter = exportersByNameCopy.remove("logging");
if (exporter != null) {
Expand Down Expand Up @@ -162,7 +162,10 @@ static SpanLimits configureSpanLimits(ConfigProperties config) {
static Sampler configureSampler(String sampler, ConfigProperties config, SpiHelper spiHelper) {
NamedSpiManager<Sampler> spiSamplersManager =
spiHelper.loadConfigurable(
ConfigurableSamplerProvider.class, ConfigurableSamplerProvider::createSampler, config);
ConfigurableSamplerProvider.class,
ConfigurableSamplerProvider::getName,
ConfigurableSamplerProvider::createSampler,
config);

switch (sampler) {
case "always_on":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,9 @@

package io.opentelemetry.sdk.autoconfigure.internal;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.autoconfigure.spi.Ordered;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

Expand All @@ -35,13 +32,4 @@ default <T extends Ordered> List<T> loadOrdered(Class<T> spiClass) {
.sorted(Comparator.comparing(Ordered::order))
.collect(Collectors.toList());
}

default <T extends ConfigurableProvider> Map<String, T> loadConfigurableProviders(
Class<T> spiClass) {
Map<String, T> components = new HashMap<>();
for (T component : load(spiClass)) {
components.put(component.getName(), component);
}
return components;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure.internal;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider;
import io.opentelemetry.sdk.autoconfigure.spi.Ordered;
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
import java.util.ArrayList;
Expand All @@ -18,6 +17,7 @@
import java.util.ServiceLoader;
import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;

/**
Expand Down Expand Up @@ -47,26 +47,29 @@ public static SpiHelper create(ComponentLoader componentLoader) {
* Load implementations of an SPI which are configurable (i.e. they accept {@link
* ConfigProperties}.
*
* @param <T> the configurable type
* @param <S> the SPI type
* @param spiClass the SPI class
* @param getName function returning the name of an SPI implementation
* @param getConfigurable function returning a configured instance
* @param config the configuration to pass to invocations of {@code #getConfigurable}
* @param <T> the configurable type
* @param <S> the SPI type
* @return a {@link NamedSpiManager} used to access configured instances of the SPI by name
*/
public <T, S extends ConfigurableProvider> NamedSpiManager<T> loadConfigurable(
public <T, S> NamedSpiManager<T> loadConfigurable(
Class<S> spiClass,
Function<S, String> getName,
BiFunction<S, ConfigProperties, T> getConfigurable,
ConfigProperties config) {
Map<String, Supplier<T>> nameToProvider = new HashMap<>();
Map<String, S> providers = componentLoader.loadConfigurableProviders(spiClass);
for (Map.Entry<String, S> entry : providers.entrySet()) {
S provider = entry.getValue();
String name = entry.getKey();
// both the provider and the result may have a listener
maybeAddListener(provider);

nameToProvider.put(name, () -> maybeAddListener(getConfigurable.apply(provider, config)));
for (S provider : load(spiClass)) {
String name = getName.apply(provider);
nameToProvider.put(
name,
() -> {
T result = getConfigurable.apply(provider, config);
maybeAddListener(result);
return result;
});
}
return NamedSpiManager.create(nameToProvider);
}
Expand Down
Loading