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.api.trace.Tracer;
|
||||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
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.io.Closeable;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* "Management" interface for the Tracing SDK. This interface exposes methods for configuring the
|
* "Management" interface for the Tracing SDK. This interface exposes methods for configuring the
|
||||||
|
|
@ -27,36 +24,6 @@ public interface SdkTracerManagement extends Closeable {
|
||||||
*/
|
*/
|
||||||
TraceConfig getActiveTraceConfig();
|
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
|
* Attempts to stop all the activity for this {@link Tracer}. Calls {@link
|
||||||
* SpanProcessor#shutdown()} for all registered {@link SpanProcessor}s.
|
* SpanProcessor#shutdown()} for all registered {@link SpanProcessor}s.
|
||||||
|
|
|
||||||
|
|
@ -74,18 +74,6 @@ public final class SdkTracerProvider implements TracerProvider, SdkTracerManagem
|
||||||
return sharedState.getActiveTraceConfig();
|
return sharedState.getActiveTraceConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
public void updateActiveTraceConfig(TraceConfig traceConfig) {
|
|
||||||
sharedState.updateActiveTraceConfig(traceConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
public void addSpanProcessor(SpanProcessor spanProcessor) {
|
|
||||||
sharedState.addSpanProcessor(spanProcessor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableResultCode shutdown() {
|
public CompletableResultCode shutdown() {
|
||||||
if (sharedState.isStopped()) {
|
if (sharedState.isStopped()) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import io.opentelemetry.sdk.common.Clock;
|
||||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||||
import io.opentelemetry.sdk.resources.Resource;
|
import io.opentelemetry.sdk.resources.Resource;
|
||||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
@ -22,18 +21,13 @@ final class TracerSharedState {
|
||||||
private final IdGenerator idGenerator;
|
private final IdGenerator idGenerator;
|
||||||
private final Resource resource;
|
private final Resource resource;
|
||||||
|
|
||||||
// Reads and writes are atomic for reference variables. Use volatile to ensure that these
|
private final Supplier<TraceConfig> traceConfigSupplier;
|
||||||
// operations are visible on other CPUs as well.
|
private final SpanProcessor activeSpanProcessor;
|
||||||
private volatile Supplier<TraceConfig> traceConfigSupplier;
|
|
||||||
private volatile SpanProcessor activeSpanProcessor;
|
|
||||||
|
|
||||||
@GuardedBy("lock")
|
@GuardedBy("lock")
|
||||||
@Nullable
|
@Nullable
|
||||||
private volatile CompletableResultCode shutdownResult = null;
|
private volatile CompletableResultCode shutdownResult = null;
|
||||||
|
|
||||||
@GuardedBy("lock")
|
|
||||||
private final List<SpanProcessor> registeredSpanProcessors;
|
|
||||||
|
|
||||||
TracerSharedState(
|
TracerSharedState(
|
||||||
Clock clock,
|
Clock clock,
|
||||||
IdGenerator idGenerator,
|
IdGenerator idGenerator,
|
||||||
|
|
@ -44,8 +38,7 @@ final class TracerSharedState {
|
||||||
this.idGenerator = idGenerator;
|
this.idGenerator = idGenerator;
|
||||||
this.resource = resource;
|
this.resource = resource;
|
||||||
this.traceConfigSupplier = traceConfigSupplier;
|
this.traceConfigSupplier = traceConfigSupplier;
|
||||||
this.registeredSpanProcessors = new ArrayList<>(spanProcessors);
|
activeSpanProcessor = SpanProcessor.composite(spanProcessors);
|
||||||
activeSpanProcessor = SpanProcessor.composite(registeredSpanProcessors);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Clock getClock() {
|
Clock getClock() {
|
||||||
|
|
@ -69,15 +62,6 @@ final class TracerSharedState {
|
||||||
return traceConfigSupplier.get();
|
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}.
|
* Returns the active {@code SpanProcessor}.
|
||||||
*
|
*
|
||||||
|
|
@ -87,18 +71,6 @@ final class TracerSharedState {
|
||||||
return activeSpanProcessor;
|
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.
|
* 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.common.InstrumentationLibraryInfo;
|
||||||
import io.opentelemetry.sdk.resources.Resource;
|
import io.opentelemetry.sdk.resources.Resource;
|
||||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||||
import io.opentelemetry.sdk.trace.samplers.Sampler;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
@ -114,15 +113,6 @@ class SdkTracerProviderTest {
|
||||||
assertThat(((SdkTracer) tracer).getInstrumentationLibraryInfo()).isEqualTo(expected);
|
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
|
@Test
|
||||||
void build_traceConfig() {
|
void build_traceConfig() {
|
||||||
TraceConfig initialTraceConfig = mock(TraceConfig.class);
|
TraceConfig initialTraceConfig = mock(TraceConfig.class);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue