Remove TracerProvider mutators (#2503)
This commit is contained in:
parent
b9ae80d0f4
commit
03558c3153
|
|
@ -8,11 +8,8 @@ package io.opentelemetry.sdk.trace;
|
|||
import io.opentelemetry.api.trace.Tracer;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfigBuilder;
|
||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||
import java.io.Closeable;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* "Management" interface for the Tracing SDK. This interface exposes methods for configuring the
|
||||
|
|
@ -27,36 +24,6 @@ public interface SdkTracerManagement extends Closeable {
|
|||
*/
|
||||
TraceConfig getActiveTraceConfig();
|
||||
|
||||
/**
|
||||
* Updates the active {@link TraceConfig}.
|
||||
*
|
||||
* <p>Note: To update the {@link TraceConfig} associated with this instance you should use the
|
||||
* {@link TraceConfig#toBuilder()} method on the {@link TraceConfig} returned from {@link
|
||||
* #getActiveTraceConfig()}, make the changes desired to the {@link TraceConfigBuilder} instance,
|
||||
* then use this method with the resulting {@link TraceConfig} instance.
|
||||
*
|
||||
* @param traceConfig the new active {@code TraceConfig}.
|
||||
* @see TraceConfig
|
||||
* @deprecated Use {@link SdkTracerProviderBuilder#setTraceConfig(Supplier)} to register a
|
||||
* supplier of {@link TraceConfig} if you need to make dynamic updates.
|
||||
*/
|
||||
@Deprecated
|
||||
void updateActiveTraceConfig(TraceConfig traceConfig);
|
||||
|
||||
/**
|
||||
* Adds a new {@code SpanProcessor} to this {@code Tracer}.
|
||||
*
|
||||
* <p>Any registered processor cause overhead, consider to use an async/batch processor especially
|
||||
* for span exporting, and export to multiple backends using the {@link
|
||||
* io.opentelemetry.sdk.trace.export.SpanExporter#composite(SpanExporter...)}.
|
||||
*
|
||||
* @param spanProcessor the new {@code SpanProcessor} to be added.
|
||||
* @deprecated Use {@link SdkTracerProvider#addSpanProcessor(SpanProcessor)} when initializing the
|
||||
* SDK
|
||||
*/
|
||||
@Deprecated
|
||||
void addSpanProcessor(SpanProcessor spanProcessor);
|
||||
|
||||
/**
|
||||
* Attempts to stop all the activity for this {@link Tracer}. Calls {@link
|
||||
* SpanProcessor#shutdown()} for all registered {@link SpanProcessor}s.
|
||||
|
|
|
|||
|
|
@ -74,18 +74,6 @@ public final class SdkTracerProvider implements TracerProvider, SdkTracerManagem
|
|||
return sharedState.getActiveTraceConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void updateActiveTraceConfig(TraceConfig traceConfig) {
|
||||
sharedState.updateActiveTraceConfig(traceConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void addSpanProcessor(SpanProcessor spanProcessor) {
|
||||
sharedState.addSpanProcessor(spanProcessor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableResultCode shutdown() {
|
||||
if (sharedState.isStopped()) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import io.opentelemetry.sdk.common.Clock;
|
|||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
import javax.annotation.Nullable;
|
||||
|
|
@ -22,18 +21,13 @@ final class TracerSharedState {
|
|||
private final IdGenerator idGenerator;
|
||||
private final Resource resource;
|
||||
|
||||
// Reads and writes are atomic for reference variables. Use volatile to ensure that these
|
||||
// operations are visible on other CPUs as well.
|
||||
private volatile Supplier<TraceConfig> traceConfigSupplier;
|
||||
private volatile SpanProcessor activeSpanProcessor;
|
||||
private final Supplier<TraceConfig> traceConfigSupplier;
|
||||
private final SpanProcessor activeSpanProcessor;
|
||||
|
||||
@GuardedBy("lock")
|
||||
@Nullable
|
||||
private volatile CompletableResultCode shutdownResult = null;
|
||||
|
||||
@GuardedBy("lock")
|
||||
private final List<SpanProcessor> registeredSpanProcessors;
|
||||
|
||||
TracerSharedState(
|
||||
Clock clock,
|
||||
IdGenerator idGenerator,
|
||||
|
|
@ -44,8 +38,7 @@ final class TracerSharedState {
|
|||
this.idGenerator = idGenerator;
|
||||
this.resource = resource;
|
||||
this.traceConfigSupplier = traceConfigSupplier;
|
||||
this.registeredSpanProcessors = new ArrayList<>(spanProcessors);
|
||||
activeSpanProcessor = SpanProcessor.composite(registeredSpanProcessors);
|
||||
activeSpanProcessor = SpanProcessor.composite(spanProcessors);
|
||||
}
|
||||
|
||||
Clock getClock() {
|
||||
|
|
@ -69,15 +62,6 @@ final class TracerSharedState {
|
|||
return traceConfigSupplier.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the active {@link TraceConfig}.
|
||||
*
|
||||
* @param traceConfig the new active {@code TraceConfig}.
|
||||
*/
|
||||
void updateActiveTraceConfig(TraceConfig traceConfig) {
|
||||
traceConfigSupplier = () -> traceConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the active {@code SpanProcessor}.
|
||||
*
|
||||
|
|
@ -87,18 +71,6 @@ final class TracerSharedState {
|
|||
return activeSpanProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new {@code SpanProcessor}.
|
||||
*
|
||||
* @param spanProcessor the new {@code SpanProcessor} to be added.
|
||||
*/
|
||||
void addSpanProcessor(SpanProcessor spanProcessor) {
|
||||
synchronized (lock) {
|
||||
registeredSpanProcessors.add(spanProcessor);
|
||||
activeSpanProcessor = SpanProcessor.composite(registeredSpanProcessors);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns {@code true} if tracing is stopped.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import io.opentelemetry.sdk.common.CompletableResultCode;
|
|||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||
import io.opentelemetry.sdk.trace.samplers.Sampler;
|
||||
import java.util.function.Supplier;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
|
@ -114,15 +113,6 @@ class SdkTracerProviderTest {
|
|||
assertThat(((SdkTracer) tracer).getInstrumentationLibraryInfo()).isEqualTo(expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation") // Testing the deprecated method
|
||||
void updateActiveTraceConfig() {
|
||||
assertThat(tracerFactory.getActiveTraceConfig()).isEqualTo(TraceConfig.getDefault());
|
||||
TraceConfig newConfig = TraceConfig.builder().setSampler(Sampler.alwaysOff()).build();
|
||||
tracerFactory.updateActiveTraceConfig(newConfig);
|
||||
assertThat(tracerFactory.getActiveTraceConfig()).isEqualTo(newConfig);
|
||||
}
|
||||
|
||||
@Test
|
||||
void build_traceConfig() {
|
||||
TraceConfig initialTraceConfig = mock(TraceConfig.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue