Remove TracerProvider mutators (#2503)

This commit is contained in:
Anuraag Agrawal 2021-01-14 02:07:33 +09:00 committed by GitHub
parent b9ae80d0f4
commit 03558c3153
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 3 additions and 86 deletions

View File

@ -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.

View File

@ -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()) {

View File

@ -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.
*

View File

@ -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);