Remove -alpha artifacts from runtime classpath of stable components (#6944)
This commit is contained in:
parent
492b94f2b0
commit
d56bdf5723
|
@ -18,6 +18,7 @@ sourceSets {
|
|||
dependencies {
|
||||
implementation(project(":sdk:all"))
|
||||
implementation(project(":sdk:trace-shaded-deps"))
|
||||
implementation(project(":sdk:testing"))
|
||||
implementation(project(":exporters:otlp:all"))
|
||||
implementation(project(":api:incubator"))
|
||||
}
|
||||
|
|
|
@ -7,12 +7,31 @@ package io.opentelemetry.integrationtests.graal;
|
|||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder;
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder;
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedTracer;
|
||||
import io.opentelemetry.api.logs.LoggerProvider;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.metrics.MeterProvider;
|
||||
import io.opentelemetry.api.trace.TracerProvider;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter;
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class IncubatingApiTests {
|
||||
|
@ -23,4 +42,63 @@ class IncubatingApiTests {
|
|||
assertThat(MeterProvider.noop().get("test").counterBuilder("test"))
|
||||
.isInstanceOf(ExtendedLongCounterBuilder.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void incubatingLogSdk() {
|
||||
InMemoryLogRecordExporter exporter = InMemoryLogRecordExporter.create();
|
||||
SdkLoggerProvider loggerProvider =
|
||||
SdkLoggerProvider.builder()
|
||||
.addLogRecordProcessor(SimpleLogRecordProcessor.create(exporter))
|
||||
.build();
|
||||
|
||||
ExtendedLogger logger = (ExtendedLogger) loggerProvider.get("logger");
|
||||
logger.isEnabled();
|
||||
((ExtendedLogRecordBuilder) logger.logRecordBuilder()).setBody("message").emit();
|
||||
}
|
||||
|
||||
@Test
|
||||
void incubatingTraceSdk() {
|
||||
InMemorySpanExporter exporter = InMemorySpanExporter.create();
|
||||
SdkTracerProvider tracerProvider =
|
||||
SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(exporter)).build();
|
||||
|
||||
ExtendedTracer tracer = (ExtendedTracer) tracerProvider.get("tracer");
|
||||
tracer.isEnabled();
|
||||
((ExtendedSpanBuilder) tracer.spanBuilder("span")).startAndRun(() -> {});
|
||||
}
|
||||
|
||||
@Test
|
||||
void incubatingMetricSdk() {
|
||||
InMemoryMetricReader reader = InMemoryMetricReader.create();
|
||||
SdkMeterProvider meterProvider =
|
||||
SdkMeterProvider.builder().registerMetricReader(reader).build();
|
||||
|
||||
Meter meter = meterProvider.get("meter");
|
||||
|
||||
ExtendedLongCounter longCounter =
|
||||
(ExtendedLongCounter) meter.counterBuilder("longCounter").build();
|
||||
longCounter.isEnabled();
|
||||
ExtendedDoubleCounter doubleCounter =
|
||||
(ExtendedDoubleCounter) meter.counterBuilder("doubleCounter").ofDoubles().build();
|
||||
doubleCounter.isEnabled();
|
||||
ExtendedLongUpDownCounter longUpDownCounter =
|
||||
(ExtendedLongUpDownCounter) meter.upDownCounterBuilder("longUpDownCounter").build();
|
||||
longUpDownCounter.isEnabled();
|
||||
ExtendedDoubleUpDownCounter doubleUpDownCounter =
|
||||
(ExtendedDoubleUpDownCounter)
|
||||
meter.upDownCounterBuilder("doubleUpDownCounter").ofDoubles().build();
|
||||
doubleUpDownCounter.isEnabled();
|
||||
ExtendedDoubleHistogram doubleHistogram =
|
||||
(ExtendedDoubleHistogram) meter.histogramBuilder("doubleHistogram").build();
|
||||
doubleHistogram.isEnabled();
|
||||
ExtendedLongHistogram longHistogram =
|
||||
(ExtendedLongHistogram) meter.histogramBuilder("longHistogram").ofLongs().build();
|
||||
longHistogram.isEnabled();
|
||||
ExtendedDoubleGauge doubleGauge =
|
||||
(ExtendedDoubleGauge) meter.gaugeBuilder("doubleGauge").build();
|
||||
doubleGauge.isEnabled();
|
||||
ExtendedLongGauge longGauge =
|
||||
(ExtendedLongGauge) meter.gaugeBuilder("longGauge").ofLongs().build();
|
||||
longGauge.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ dependencies {
|
|||
api(project(":sdk:all"))
|
||||
api(project(":sdk-extensions:autoconfigure-spi"))
|
||||
|
||||
implementation(project(":api:incubator"))
|
||||
compileOnly(project(":api:incubator"))
|
||||
|
||||
annotationProcessor("com.google.auto.value:auto-value")
|
||||
|
||||
|
@ -23,6 +23,11 @@ dependencies {
|
|||
|
||||
testing {
|
||||
suites {
|
||||
register<JvmTestSuite>("testIncubating") {
|
||||
dependencies {
|
||||
implementation(project(":api:incubator"))
|
||||
}
|
||||
}
|
||||
register<JvmTestSuite>("testAutoConfigureOrder") {
|
||||
targets {
|
||||
all {
|
||||
|
|
|
@ -8,7 +8,6 @@ package io.opentelemetry.sdk.autoconfigure;
|
|||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.context.propagation.TextMapPropagator;
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||
|
@ -26,7 +25,6 @@ import io.opentelemetry.sdk.logs.LogRecordProcessor;
|
|||
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
|
||||
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
|
||||
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
|
||||
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||
|
@ -65,6 +63,19 @@ import javax.annotation.Nullable;
|
|||
*/
|
||||
public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigurationCustomizer {
|
||||
|
||||
private static final boolean INCUBATOR_AVAILABLE;
|
||||
|
||||
static {
|
||||
boolean incubatorAvailable = false;
|
||||
try {
|
||||
Class.forName("io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider");
|
||||
incubatorAvailable = true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Not available
|
||||
}
|
||||
INCUBATOR_AVAILABLE = incubatorAvailable;
|
||||
}
|
||||
|
||||
private static final Logger logger =
|
||||
Logger.getLogger(AutoConfiguredOpenTelemetrySdkBuilder.class.getName());
|
||||
|
||||
|
@ -592,8 +603,9 @@ public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigur
|
|||
return;
|
||||
}
|
||||
GlobalOpenTelemetry.set(openTelemetrySdk);
|
||||
GlobalEventLoggerProvider.set(
|
||||
SdkEventLoggerProvider.create(openTelemetrySdk.getSdkLoggerProvider()));
|
||||
if (INCUBATOR_AVAILABLE) {
|
||||
IncubatingUtil.setGlobalEventLoggerProvider(openTelemetrySdk.getSdkLoggerProvider());
|
||||
}
|
||||
logger.log(
|
||||
Level.FINE, "Global OpenTelemetry set to {0} by autoconfiguration", openTelemetrySdk);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.autoconfigure;
|
||||
|
||||
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
|
||||
|
||||
/**
|
||||
* Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not
|
||||
* guaranteed to be present on the classpath. For all methods, callers MUST first separately
|
||||
* reflectively confirm that the incubator is available on the classpath.
|
||||
*/
|
||||
final class IncubatingUtil {
|
||||
|
||||
private IncubatingUtil() {}
|
||||
|
||||
static void setGlobalEventLoggerProvider(SdkLoggerProvider sdkLoggerProvider) {
|
||||
GlobalEventLoggerProvider.set(SdkEventLoggerProvider.create(sdkLoggerProvider));
|
||||
}
|
||||
}
|
|
@ -26,7 +26,6 @@ import static org.mockito.Mockito.when;
|
|||
import io.github.netmikey.logunit.api.LogCapturer;
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanId;
|
||||
import io.opentelemetry.api.trace.TraceId;
|
||||
|
@ -49,7 +48,6 @@ import io.opentelemetry.sdk.common.CompletableResultCode;
|
|||
import io.opentelemetry.sdk.logs.LogRecordProcessor;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
|
||||
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
|
||||
import io.opentelemetry.sdk.metrics.export.MetricReader;
|
||||
|
@ -156,7 +154,6 @@ class AutoConfiguredOpenTelemetrySdkTest {
|
|||
@BeforeEach
|
||||
void resetGlobal() {
|
||||
GlobalOpenTelemetry.resetForTest();
|
||||
GlobalEventLoggerProvider.resetForTest();
|
||||
builder =
|
||||
AutoConfiguredOpenTelemetrySdk.builder()
|
||||
.addPropertiesSupplier(disableExportPropertySupplier());
|
||||
|
@ -456,7 +453,6 @@ class AutoConfiguredOpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk();
|
||||
|
||||
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetry);
|
||||
assertThat(GlobalEventLoggerProvider.get()).isNotSameAs(openTelemetry.getSdkLoggerProvider());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -464,10 +460,6 @@ class AutoConfiguredOpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal().build().getOpenTelemetrySdk();
|
||||
|
||||
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry);
|
||||
assertThat(GlobalEventLoggerProvider.get())
|
||||
.isInstanceOf(SdkEventLoggerProvider.class)
|
||||
.extracting("delegateLoggerProvider")
|
||||
.isSameAs(openTelemetry.getSdkLoggerProvider());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.autoconfigure;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class AutoconfigureGlobalEventLoggerProviderTest {
|
||||
|
||||
private AutoConfiguredOpenTelemetrySdkBuilder builder;
|
||||
|
||||
@BeforeEach
|
||||
void resetGlobal() {
|
||||
GlobalOpenTelemetry.resetForTest();
|
||||
GlobalEventLoggerProvider.resetForTest();
|
||||
builder =
|
||||
AutoConfiguredOpenTelemetrySdk.builder()
|
||||
.addPropertiesSupplier(disableExportPropertySupplier());
|
||||
}
|
||||
|
||||
@Test
|
||||
void builder_setResultAsGlobalFalse() {
|
||||
GlobalOpenTelemetry.set(OpenTelemetry.noop());
|
||||
|
||||
OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk();
|
||||
|
||||
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetry);
|
||||
assertThat(GlobalEventLoggerProvider.get()).isNotSameAs(openTelemetry.getSdkLoggerProvider());
|
||||
}
|
||||
|
||||
@Test
|
||||
void builder_setResultAsGlobalTrue() {
|
||||
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal().build().getOpenTelemetrySdk();
|
||||
|
||||
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry);
|
||||
assertThat(GlobalEventLoggerProvider.get())
|
||||
.isInstanceOf(SdkEventLoggerProvider.class)
|
||||
.extracting("delegateLoggerProvider")
|
||||
.isSameAs(openTelemetry.getSdkLoggerProvider());
|
||||
}
|
||||
|
||||
private static Supplier<Map<String, String>> disableExportPropertySupplier() {
|
||||
Map<String, String> props = new HashMap<>();
|
||||
props.put("otel.metrics.exporter", "none");
|
||||
props.put("otel.traces.exporter", "none");
|
||||
props.put("otel.logs.exporter", "none");
|
||||
return () -> props;
|
||||
}
|
||||
}
|
|
@ -12,7 +12,7 @@ otelJava.moduleName.set("io.opentelemetry.sdk.logs")
|
|||
dependencies {
|
||||
api(project(":api:all"))
|
||||
api(project(":sdk:common"))
|
||||
implementation(project(":api:incubator"))
|
||||
compileOnly(project(":api:incubator"))
|
||||
|
||||
annotationProcessor("com.google.auto.value:auto-value")
|
||||
|
||||
|
@ -21,3 +21,21 @@ dependencies {
|
|||
testImplementation("org.awaitility:awaitility")
|
||||
testImplementation("com.google.guava:guava")
|
||||
}
|
||||
|
||||
testing {
|
||||
suites {
|
||||
register<JvmTestSuite>("testIncubating") {
|
||||
dependencies {
|
||||
implementation(project(":sdk:testing"))
|
||||
implementation(project(":api:incubator"))
|
||||
implementation("com.google.guava:guava")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
check {
|
||||
dependsOn(testing.suites)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Value;
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/** SDK implementation of {@link ExtendedLogRecordBuilder}. */
|
||||
final class ExtendedSdkLogRecordBuilder extends SdkLogRecordBuilder
|
||||
implements ExtendedLogRecordBuilder {
|
||||
|
||||
ExtendedSdkLogRecordBuilder(
|
||||
LoggerSharedState loggerSharedState, InstrumentationScopeInfo instrumentationScopeInfo) {
|
||||
super(loggerSharedState, instrumentationScopeInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setTimestamp(long timestamp, TimeUnit unit) {
|
||||
super.setTimestamp(timestamp, unit);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setTimestamp(Instant instant) {
|
||||
super.setTimestamp(instant);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setObservedTimestamp(long timestamp, TimeUnit unit) {
|
||||
super.setObservedTimestamp(timestamp, unit);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setObservedTimestamp(Instant instant) {
|
||||
super.setObservedTimestamp(instant);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setContext(Context context) {
|
||||
super.setContext(context);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setSeverity(Severity severity) {
|
||||
super.setSeverity(severity);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setSeverityText(String severityText) {
|
||||
super.setSeverityText(severityText);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setBody(String body) {
|
||||
super.setBody(body);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLogRecordBuilder setBody(Value<?> value) {
|
||||
super.setBody(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> ExtendedSdkLogRecordBuilder setAttribute(AttributeKey<T> key, T value) {
|
||||
super.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
|
||||
|
||||
/** SDK implementation of {@link ExtendedLogger}. */
|
||||
final class ExtendedSdkLogger extends SdkLogger implements ExtendedLogger {
|
||||
|
||||
private final boolean loggerEnabled;
|
||||
|
||||
ExtendedSdkLogger(
|
||||
LoggerSharedState loggerSharedState,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
LoggerConfig loggerConfig) {
|
||||
super(loggerSharedState, instrumentationScopeInfo, loggerConfig);
|
||||
this.loggerEnabled = loggerConfig.isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return loggerEnabled;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
|
||||
|
||||
/**
|
||||
* Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not
|
||||
* guaranteed to be present on the classpath. For all methods, callers MUST first separately
|
||||
* reflectively confirm that the incubator is available on the classpath.
|
||||
*/
|
||||
final class IncubatingUtil {
|
||||
|
||||
private IncubatingUtil() {}
|
||||
|
||||
static SdkLogger createExtendedLogger(
|
||||
LoggerSharedState sharedState,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
LoggerConfig tracerConfig) {
|
||||
return new ExtendedSdkLogger(sharedState, instrumentationScopeInfo, tracerConfig);
|
||||
}
|
||||
|
||||
static SdkLogRecordBuilder createExtendedLogRecordBuilder(
|
||||
LoggerSharedState loggerSharedState, InstrumentationScopeInfo instrumentationScopeInfo) {
|
||||
return new ExtendedSdkLogRecordBuilder(loggerSharedState, instrumentationScopeInfo);
|
||||
}
|
||||
}
|
|
@ -7,7 +7,6 @@ package io.opentelemetry.sdk.logs;
|
|||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Value;
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
|
@ -19,7 +18,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import javax.annotation.Nullable;
|
||||
|
||||
/** SDK implementation of {@link LogRecordBuilder}. */
|
||||
final class SdkLogRecordBuilder implements ExtendedLogRecordBuilder {
|
||||
class SdkLogRecordBuilder implements LogRecordBuilder {
|
||||
|
||||
private final LoggerSharedState loggerSharedState;
|
||||
private final LogLimits logLimits;
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.api.logs.LoggerProvider;
|
||||
|
@ -13,9 +12,21 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
|||
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
|
||||
|
||||
/** SDK implementation of {@link Logger}. */
|
||||
final class SdkLogger implements ExtendedLogger {
|
||||
class SdkLogger implements Logger {
|
||||
|
||||
private static final Logger NOOP_LOGGER = LoggerProvider.noop().get("noop");
|
||||
private static final boolean INCUBATOR_AVAILABLE;
|
||||
|
||||
static {
|
||||
boolean incubatorAvailable = false;
|
||||
try {
|
||||
Class.forName("io.opentelemetry.api.incubator.logs.ExtendedDefaultLoggerProvider");
|
||||
incubatorAvailable = true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Not available
|
||||
}
|
||||
INCUBATOR_AVAILABLE = incubatorAvailable;
|
||||
}
|
||||
|
||||
private final LoggerSharedState loggerSharedState;
|
||||
private final InstrumentationScopeInfo instrumentationScopeInfo;
|
||||
|
@ -30,10 +41,22 @@ final class SdkLogger implements ExtendedLogger {
|
|||
this.loggerEnabled = loggerConfig.isEnabled();
|
||||
}
|
||||
|
||||
static SdkLogger create(
|
||||
LoggerSharedState sharedState,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
LoggerConfig loggerConfig) {
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedLogger(sharedState, instrumentationScopeInfo, loggerConfig)
|
||||
: new SdkLogger(sharedState, instrumentationScopeInfo, loggerConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogRecordBuilder logRecordBuilder() {
|
||||
if (loggerEnabled) {
|
||||
return new SdkLogRecordBuilder(loggerSharedState, instrumentationScopeInfo);
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedLogRecordBuilder(
|
||||
loggerSharedState, instrumentationScopeInfo)
|
||||
: new SdkLogRecordBuilder(loggerSharedState, instrumentationScopeInfo);
|
||||
}
|
||||
return NOOP_LOGGER.logRecordBuilder();
|
||||
}
|
||||
|
@ -42,9 +65,4 @@ final class SdkLogger implements ExtendedLogger {
|
|||
InstrumentationScopeInfo getInstrumentationScopeInfo() {
|
||||
return instrumentationScopeInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return loggerEnabled;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ public final class SdkLoggerProvider implements LoggerProvider, Closeable {
|
|||
this.loggerComponentRegistry =
|
||||
new ComponentRegistry<>(
|
||||
instrumentationScopeInfo ->
|
||||
new SdkLogger(
|
||||
SdkLogger.create(
|
||||
sharedState,
|
||||
instrumentationScopeInfo,
|
||||
getLoggerConfig(instrumentationScopeInfo)));
|
||||
|
|
|
@ -15,7 +15,7 @@ otelJava.moduleName.set("io.opentelemetry.sdk.metrics")
|
|||
dependencies {
|
||||
api(project(":api:all"))
|
||||
api(project(":sdk:common"))
|
||||
implementation(project(":api:incubator"))
|
||||
compileOnly(project(":api:incubator"))
|
||||
|
||||
compileOnly("org.codehaus.mojo:animal-sniffer-annotations")
|
||||
|
||||
|
@ -37,6 +37,13 @@ dependencyCheck {
|
|||
|
||||
testing {
|
||||
suites {
|
||||
register<JvmTestSuite>("testIncubating") {
|
||||
dependencies {
|
||||
implementation(project(":sdk:testing"))
|
||||
implementation(project(":api:incubator"))
|
||||
implementation("com.google.guava:guava")
|
||||
}
|
||||
}
|
||||
register<JvmTestSuite>("debugEnabledTest") {
|
||||
targets {
|
||||
all {
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounterBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkDoubleCounter extends SdkDoubleCounter implements ExtendedDoubleCounter {
|
||||
|
||||
private ExtendedSdkDoubleCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkDoubleCounterBuilder extends SdkDoubleCounterBuilder
|
||||
implements ExtendedDoubleCounterBuilder {
|
||||
|
||||
ExtendedSdkDoubleCounterBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
String name,
|
||||
String description,
|
||||
String unit,
|
||||
Advice.AdviceBuilder adviceBuilder) {
|
||||
super(sdkMeter, name, description, unit, adviceBuilder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkDoubleCounter build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkDoubleCounter::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleCounterBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGaugeBuilder;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGaugeBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkDoubleGauge extends SdkDoubleGauge implements ExtendedDoubleGauge {
|
||||
|
||||
private ExtendedSdkDoubleGauge(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkDoubleGaugeBuilder extends SdkDoubleGaugeBuilder
|
||||
implements ExtendedDoubleGaugeBuilder {
|
||||
ExtendedSdkDoubleGaugeBuilder(SdkMeter sdkMeter, String name) {
|
||||
super(sdkMeter, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkDoubleGauge build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkDoubleGauge::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleGaugeBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongGaugeBuilder ofLongs() {
|
||||
return builder.swapBuilder(ExtendedSdkLongGauge.ExtendedSdkLongGaugeBuilder::new);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogramBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkDoubleHistogram extends SdkDoubleHistogram
|
||||
implements ExtendedDoubleHistogram {
|
||||
|
||||
ExtendedSdkDoubleHistogram(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkDoubleHistogramBuilder extends SdkDoubleHistogramBuilder
|
||||
implements ExtendedDoubleHistogramBuilder {
|
||||
|
||||
ExtendedSdkDoubleHistogramBuilder(SdkMeter sdkMeter, String name) {
|
||||
super(sdkMeter, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkDoubleHistogram build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkDoubleHistogram::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongHistogramBuilder ofLongs() {
|
||||
return builder.swapBuilder(ExtendedSdkLongHistogram.ExtendedSdkLongHistogramBuilder::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleHistogramBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounterBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkDoubleUpDownCounter extends SdkDoubleUpDownCounter
|
||||
implements ExtendedDoubleUpDownCounter {
|
||||
|
||||
private ExtendedSdkDoubleUpDownCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkDoubleUpDownCounterBuilder extends SdkDoubleUpDownCounterBuilder
|
||||
implements ExtendedDoubleUpDownCounterBuilder {
|
||||
|
||||
ExtendedSdkDoubleUpDownCounterBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
String name,
|
||||
String description,
|
||||
String unit,
|
||||
Advice.AdviceBuilder adviceBuilder) {
|
||||
super(sdkMeter, name, description, unit, adviceBuilder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleUpDownCounter build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkDoubleUpDownCounter::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleUpDownCounterBuilder setAttributesAdvice(
|
||||
List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounterBuilder;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkLongCounter extends SdkLongCounter implements ExtendedLongCounter {
|
||||
|
||||
private ExtendedSdkLongCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkLongCounterBuilder extends SdkLongCounterBuilder
|
||||
implements ExtendedLongCounterBuilder {
|
||||
|
||||
ExtendedSdkLongCounterBuilder(SdkMeter sdkMeter, String name) {
|
||||
super(sdkMeter, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLongCounter build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkLongCounter::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleCounterBuilder ofDoubles() {
|
||||
return builder.swapBuilder(ExtendedSdkDoubleCounter.ExtendedSdkDoubleCounterBuilder::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongCounterBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGaugeBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkLongGauge extends SdkLongGauge implements ExtendedLongGauge {
|
||||
|
||||
private ExtendedSdkLongGauge(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkLongGaugeBuilder extends SdkLongGaugeBuilder
|
||||
implements ExtendedLongGaugeBuilder {
|
||||
|
||||
ExtendedSdkLongGaugeBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
String name,
|
||||
String description,
|
||||
String unit,
|
||||
Advice.AdviceBuilder adviceBuilder) {
|
||||
super(sdkMeter, name, description, unit, adviceBuilder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLongGauge build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkLongGauge::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongGaugeBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogramBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkLongHistogram extends SdkLongHistogram implements ExtendedLongHistogram {
|
||||
|
||||
private ExtendedSdkLongHistogram(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkLongHistogramBuilder extends SdkLongHistogramBuilder
|
||||
implements ExtendedLongHistogramBuilder {
|
||||
|
||||
ExtendedSdkLongHistogramBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
String name,
|
||||
String description,
|
||||
String unit,
|
||||
Advice.AdviceBuilder adviceBuilder) {
|
||||
super(sdkMeter, name, description, unit, adviceBuilder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSdkLongHistogram build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkLongHistogram::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongHistogramBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounterBuilder;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounterBuilder;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
|
||||
final class ExtendedSdkLongUpDownCounter extends SdkLongUpDownCounter
|
||||
implements ExtendedLongUpDownCounter {
|
||||
|
||||
private ExtendedSdkLongUpDownCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor, sdkMeter, storage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class ExtendedSdkLongUpDownCounterBuilder extends SdkLongUpDownCounterBuilder
|
||||
implements ExtendedLongUpDownCounterBuilder {
|
||||
|
||||
ExtendedSdkLongUpDownCounterBuilder(SdkMeter sdkMeter, String name) {
|
||||
super(sdkMeter, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongUpDownCounter build() {
|
||||
return builder.buildSynchronousInstrument(ExtendedSdkLongUpDownCounter::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleUpDownCounterBuilder ofDoubles() {
|
||||
return builder.swapBuilder(
|
||||
ExtendedSdkDoubleUpDownCounter.ExtendedSdkDoubleUpDownCounterBuilder::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongUpDownCounterBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
|
||||
import io.opentelemetry.api.metrics.LongCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
|
||||
|
||||
/**
|
||||
* Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not
|
||||
* guaranteed to be present on the classpath. For all methods, callers MUST first separately
|
||||
* reflectively confirm that the incubator is available on the classpath.
|
||||
*/
|
||||
final class IncubatingUtil {
|
||||
|
||||
private IncubatingUtil() {}
|
||||
|
||||
static LongCounterBuilder createExtendedLongCounterBuilder(SdkMeter sdkMeter, String name) {
|
||||
return new ExtendedSdkLongCounter.ExtendedSdkLongCounterBuilder(sdkMeter, name);
|
||||
}
|
||||
|
||||
static LongUpDownCounterBuilder createExtendedLongUpDownCounterBuilder(
|
||||
SdkMeter sdkMeter, String name) {
|
||||
return new ExtendedSdkLongUpDownCounter.ExtendedSdkLongUpDownCounterBuilder(sdkMeter, name);
|
||||
}
|
||||
|
||||
static DoubleHistogramBuilder createExtendedDoubleHistogramBuilder(
|
||||
SdkMeter sdkMeter, String name) {
|
||||
return new ExtendedSdkDoubleHistogram.ExtendedSdkDoubleHistogramBuilder(sdkMeter, name);
|
||||
}
|
||||
|
||||
static DoubleGaugeBuilder createExtendedDoubleGaugeBuilder(SdkMeter sdkMeter, String name) {
|
||||
return new ExtendedSdkDoubleGauge.ExtendedSdkDoubleGaugeBuilder(sdkMeter, name);
|
||||
}
|
||||
}
|
|
@ -5,10 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.ObservableDoubleCounter;
|
||||
import io.opentelemetry.api.metrics.ObservableDoubleMeasurement;
|
||||
|
@ -17,19 +15,18 @@ import io.opentelemetry.sdk.internal.ThrottlingLogger;
|
|||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
final class SdkDoubleCounter extends AbstractInstrument implements ExtendedDoubleCounter {
|
||||
class SdkDoubleCounter extends AbstractInstrument implements DoubleCounter {
|
||||
private static final Logger logger = Logger.getLogger(SdkDoubleCounter.class.getName());
|
||||
|
||||
private final ThrottlingLogger throttlingLogger = new ThrottlingLogger(logger);
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkDoubleCounter(
|
||||
SdkDoubleCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -59,14 +56,9 @@ final class SdkDoubleCounter extends AbstractInstrument implements ExtendedDoubl
|
|||
add(increment, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkDoubleCounterBuilder implements DoubleCounterBuilder {
|
||||
|
||||
static final class SdkDoubleCounterBuilder implements ExtendedDoubleCounterBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkDoubleCounterBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
|
@ -109,12 +101,6 @@ final class SdkDoubleCounter extends AbstractInstrument implements ExtendedDoubl
|
|||
return builder.buildObservableMeasurement(InstrumentType.OBSERVABLE_COUNTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleCounterBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return builder.toStringHelper(getClass().getSimpleName());
|
||||
|
|
|
@ -5,10 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleGauge;
|
||||
import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.LongGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.ObservableDoubleGauge;
|
||||
|
@ -16,15 +14,14 @@ import io.opentelemetry.api.metrics.ObservableDoubleMeasurement;
|
|||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
final class SdkDoubleGauge extends AbstractInstrument implements ExtendedDoubleGauge {
|
||||
class SdkDoubleGauge extends AbstractInstrument implements DoubleGauge {
|
||||
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkDoubleGauge(
|
||||
SdkDoubleGauge(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -46,16 +43,10 @@ final class SdkDoubleGauge extends AbstractInstrument implements ExtendedDoubleG
|
|||
set(increment, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
|
||||
static final class SdkDoubleGaugeBuilder implements ExtendedDoubleGaugeBuilder {
|
||||
private final InstrumentBuilder builder;
|
||||
static class SdkDoubleGaugeBuilder implements DoubleGaugeBuilder {
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkDoubleGaugeBuilder(SdkMeter sdkMeter, String name) {
|
||||
|
||||
builder =
|
||||
new InstrumentBuilder(name, InstrumentType.GAUGE, InstrumentValueType.DOUBLE, sdkMeter);
|
||||
}
|
||||
|
@ -77,12 +68,6 @@ final class SdkDoubleGauge extends AbstractInstrument implements ExtendedDoubleG
|
|||
return builder.buildSynchronousInstrument(SdkDoubleGauge::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleGaugeBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongGaugeBuilder ofLongs() {
|
||||
return builder.swapBuilder(SdkLongGauge.SdkLongGaugeBuilder::new);
|
||||
|
|
|
@ -5,10 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogram;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
|
||||
import io.opentelemetry.api.metrics.LongHistogramBuilder;
|
||||
import io.opentelemetry.context.Context;
|
||||
|
@ -21,14 +19,14 @@ import java.util.Objects;
|
|||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
final class SdkDoubleHistogram extends AbstractInstrument implements ExtendedDoubleHistogram {
|
||||
class SdkDoubleHistogram extends AbstractInstrument implements DoubleHistogram {
|
||||
private static final Logger logger = Logger.getLogger(SdkDoubleHistogram.class.getName());
|
||||
|
||||
private final ThrottlingLogger throttlingLogger = new ThrottlingLogger(logger);
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkDoubleHistogram(
|
||||
SdkDoubleHistogram(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -58,14 +56,9 @@ final class SdkDoubleHistogram extends AbstractInstrument implements ExtendedDou
|
|||
record(value, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkDoubleHistogramBuilder implements DoubleHistogramBuilder {
|
||||
|
||||
static final class SdkDoubleHistogramBuilder implements ExtendedDoubleHistogramBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkDoubleHistogramBuilder(SdkMeter sdkMeter, String name) {
|
||||
builder =
|
||||
|
@ -108,12 +101,6 @@ final class SdkDoubleHistogram extends AbstractInstrument implements ExtendedDou
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleHistogramBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return builder.toStringHelper(getClass().getSimpleName());
|
||||
|
|
|
@ -5,10 +5,7 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.ObservableDoubleMeasurement;
|
||||
|
@ -17,16 +14,14 @@ import io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
final class SdkDoubleUpDownCounter extends AbstractInstrument
|
||||
implements ExtendedDoubleUpDownCounter {
|
||||
class SdkDoubleUpDownCounter extends AbstractInstrument implements DoubleUpDownCounter {
|
||||
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkDoubleUpDownCounter(
|
||||
SdkDoubleUpDownCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -48,14 +43,9 @@ final class SdkDoubleUpDownCounter extends AbstractInstrument
|
|||
add(increment, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkDoubleUpDownCounterBuilder implements DoubleUpDownCounterBuilder {
|
||||
|
||||
static final class SdkDoubleUpDownCounterBuilder implements ExtendedDoubleUpDownCounterBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkDoubleUpDownCounterBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
|
@ -100,13 +90,6 @@ final class SdkDoubleUpDownCounter extends AbstractInstrument
|
|||
return builder.buildObservableMeasurement(InstrumentType.OBSERVABLE_UP_DOWN_COUNTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedDoubleUpDownCounterBuilder setAttributesAdvice(
|
||||
List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return builder.toStringHelper(getClass().getSimpleName());
|
||||
|
|
|
@ -5,11 +5,9 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.LongCounter;
|
||||
import io.opentelemetry.api.metrics.LongCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.ObservableLongCounter;
|
||||
import io.opentelemetry.api.metrics.ObservableLongMeasurement;
|
||||
|
@ -17,20 +15,19 @@ import io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.sdk.internal.ThrottlingLogger;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
final class SdkLongCounter extends AbstractInstrument implements ExtendedLongCounter {
|
||||
class SdkLongCounter extends AbstractInstrument implements LongCounter {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(SdkLongCounter.class.getName());
|
||||
|
||||
private final ThrottlingLogger throttlingLogger = new ThrottlingLogger(logger);
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkLongCounter(
|
||||
SdkLongCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -60,14 +57,9 @@ final class SdkLongCounter extends AbstractInstrument implements ExtendedLongCou
|
|||
add(increment, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkLongCounterBuilder implements LongCounterBuilder {
|
||||
|
||||
static final class SdkLongCounterBuilder implements ExtendedLongCounterBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkLongCounterBuilder(SdkMeter sdkMeter, String name) {
|
||||
this.builder =
|
||||
|
@ -106,12 +98,6 @@ final class SdkLongCounter extends AbstractInstrument implements ExtendedLongCou
|
|||
return builder.buildObservableMeasurement(InstrumentType.OBSERVABLE_COUNTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongCounterBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return builder.toStringHelper(getClass().getSimpleName());
|
||||
|
|
|
@ -5,10 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.LongGauge;
|
||||
import io.opentelemetry.api.metrics.LongGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.ObservableLongGauge;
|
||||
import io.opentelemetry.api.metrics.ObservableLongMeasurement;
|
||||
|
@ -16,16 +14,14 @@ import io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.sdk.metrics.internal.descriptor.Advice;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
final class SdkLongGauge extends AbstractInstrument implements ExtendedLongGauge {
|
||||
class SdkLongGauge extends AbstractInstrument implements LongGauge {
|
||||
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkLongGauge(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
SdkLongGauge(InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
this.storage = storage;
|
||||
|
@ -46,14 +42,9 @@ final class SdkLongGauge extends AbstractInstrument implements ExtendedLongGauge
|
|||
set(increment, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkLongGaugeBuilder implements LongGaugeBuilder {
|
||||
|
||||
static final class SdkLongGaugeBuilder implements ExtendedLongGaugeBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkLongGaugeBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
|
@ -61,7 +52,6 @@ final class SdkLongGauge extends AbstractInstrument implements ExtendedLongGauge
|
|||
String description,
|
||||
String unit,
|
||||
Advice.AdviceBuilder adviceBuilder) {
|
||||
|
||||
builder =
|
||||
new InstrumentBuilder(name, InstrumentType.GAUGE, InstrumentValueType.LONG, sdkMeter)
|
||||
.setDescription(description)
|
||||
|
@ -86,12 +76,6 @@ final class SdkLongGauge extends AbstractInstrument implements ExtendedLongGauge
|
|||
return builder.buildSynchronousInstrument(SdkLongGauge::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongGaugeBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ObservableLongGauge buildWithCallback(Consumer<ObservableLongMeasurement> callback) {
|
||||
return builder.buildLongAsynchronousInstrument(InstrumentType.OBSERVABLE_GAUGE, callback);
|
||||
|
|
|
@ -5,10 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogramBuilder;
|
||||
import io.opentelemetry.api.metrics.LongHistogram;
|
||||
import io.opentelemetry.api.metrics.LongHistogramBuilder;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.internal.ThrottlingLogger;
|
||||
|
@ -22,14 +20,14 @@ import java.util.logging.Level;
|
|||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
final class SdkLongHistogram extends AbstractInstrument implements ExtendedLongHistogram {
|
||||
class SdkLongHistogram extends AbstractInstrument implements LongHistogram {
|
||||
private static final Logger logger = Logger.getLogger(SdkLongHistogram.class.getName());
|
||||
|
||||
private final ThrottlingLogger throttlingLogger = new ThrottlingLogger(logger);
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkLongHistogram(
|
||||
SdkLongHistogram(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -59,14 +57,9 @@ final class SdkLongHistogram extends AbstractInstrument implements ExtendedLongH
|
|||
record(value, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkLongHistogramBuilder implements LongHistogramBuilder {
|
||||
|
||||
static final class SdkLongHistogramBuilder implements ExtendedLongHistogramBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkLongHistogramBuilder(
|
||||
SdkMeter sdkMeter,
|
||||
|
@ -113,12 +106,6 @@ final class SdkLongHistogram extends AbstractInstrument implements ExtendedLongH
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongHistogramBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return builder.toStringHelper(getClass().getSimpleName());
|
||||
|
|
|
@ -5,10 +5,7 @@
|
|||
|
||||
package io.opentelemetry.sdk.metrics;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
|
||||
|
@ -17,15 +14,14 @@ import io.opentelemetry.api.metrics.ObservableLongUpDownCounter;
|
|||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
|
||||
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
final class SdkLongUpDownCounter extends AbstractInstrument implements ExtendedLongUpDownCounter {
|
||||
class SdkLongUpDownCounter extends AbstractInstrument implements LongUpDownCounter {
|
||||
|
||||
private final SdkMeter sdkMeter;
|
||||
private final WriteableMetricStorage storage;
|
||||
final SdkMeter sdkMeter;
|
||||
final WriteableMetricStorage storage;
|
||||
|
||||
private SdkLongUpDownCounter(
|
||||
SdkLongUpDownCounter(
|
||||
InstrumentDescriptor descriptor, SdkMeter sdkMeter, WriteableMetricStorage storage) {
|
||||
super(descriptor);
|
||||
this.sdkMeter = sdkMeter;
|
||||
|
@ -47,14 +43,9 @@ final class SdkLongUpDownCounter extends AbstractInstrument implements ExtendedL
|
|||
add(increment, Attributes.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return sdkMeter.isMeterEnabled() && storage.isEnabled();
|
||||
}
|
||||
static class SdkLongUpDownCounterBuilder implements LongUpDownCounterBuilder {
|
||||
|
||||
static final class SdkLongUpDownCounterBuilder implements ExtendedLongUpDownCounterBuilder {
|
||||
|
||||
private final InstrumentBuilder builder;
|
||||
final InstrumentBuilder builder;
|
||||
|
||||
SdkLongUpDownCounterBuilder(SdkMeter sdkMeter, String name) {
|
||||
this.builder =
|
||||
|
@ -96,12 +87,6 @@ final class SdkLongUpDownCounter extends AbstractInstrument implements ExtendedL
|
|||
return builder.buildObservableMeasurement(InstrumentType.OBSERVABLE_UP_DOWN_COUNTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedLongUpDownCounterBuilder setAttributesAdvice(List<AttributeKey<?>> attributes) {
|
||||
builder.setAdviceAttributes(attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return builder.toStringHelper(getClass().getSimpleName());
|
||||
|
|
|
@ -49,6 +49,18 @@ import java.util.regex.Pattern;
|
|||
final class SdkMeter implements Meter {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(SdkMeter.class.getName());
|
||||
private static final boolean INCUBATOR_AVAILABLE;
|
||||
|
||||
static {
|
||||
boolean incubatorAvailable = false;
|
||||
try {
|
||||
Class.forName("io.opentelemetry.api.incubator.metrics.ExtendedDefaultMeterProvider");
|
||||
incubatorAvailable = true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Not available
|
||||
}
|
||||
INCUBATOR_AVAILABLE = incubatorAvailable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instrument names MUST conform to the following syntax.
|
||||
|
@ -145,30 +157,42 @@ final class SdkMeter implements Meter {
|
|||
|
||||
@Override
|
||||
public LongCounterBuilder counterBuilder(String name) {
|
||||
return checkValidInstrumentName(name)
|
||||
? new SdkLongCounter.SdkLongCounterBuilder(this, name)
|
||||
: NOOP_METER.counterBuilder(NOOP_INSTRUMENT_NAME);
|
||||
if (!checkValidInstrumentName(name)) {
|
||||
return NOOP_METER.counterBuilder(NOOP_INSTRUMENT_NAME);
|
||||
}
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedLongCounterBuilder(this, name)
|
||||
: new SdkLongCounter.SdkLongCounterBuilder(this, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongUpDownCounterBuilder upDownCounterBuilder(String name) {
|
||||
return checkValidInstrumentName(name)
|
||||
? new SdkLongUpDownCounter.SdkLongUpDownCounterBuilder(this, name)
|
||||
: NOOP_METER.upDownCounterBuilder(NOOP_INSTRUMENT_NAME);
|
||||
if (!checkValidInstrumentName(name)) {
|
||||
return NOOP_METER.upDownCounterBuilder(NOOP_INSTRUMENT_NAME);
|
||||
}
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedLongUpDownCounterBuilder(this, name)
|
||||
: new SdkLongUpDownCounter.SdkLongUpDownCounterBuilder(this, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleHistogramBuilder histogramBuilder(String name) {
|
||||
return checkValidInstrumentName(name)
|
||||
? new SdkDoubleHistogram.SdkDoubleHistogramBuilder(this, name)
|
||||
: NOOP_METER.histogramBuilder(NOOP_INSTRUMENT_NAME);
|
||||
if (!checkValidInstrumentName(name)) {
|
||||
return NOOP_METER.histogramBuilder(NOOP_INSTRUMENT_NAME);
|
||||
}
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedDoubleHistogramBuilder(this, name)
|
||||
: new SdkDoubleHistogram.SdkDoubleHistogramBuilder(this, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleGaugeBuilder gaugeBuilder(String name) {
|
||||
return checkValidInstrumentName(name)
|
||||
? new SdkDoubleGauge.SdkDoubleGaugeBuilder(this, name)
|
||||
: NOOP_METER.gaugeBuilder(NOOP_INSTRUMENT_NAME);
|
||||
if (!checkValidInstrumentName(name)) {
|
||||
return NOOP_METER.gaugeBuilder(NOOP_INSTRUMENT_NAME);
|
||||
}
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedDoubleGaugeBuilder(this, name)
|
||||
: new SdkDoubleGauge.SdkDoubleGaugeBuilder(this, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,8 +22,7 @@ dependencies {
|
|||
api(project(":api:all"))
|
||||
api(project(":sdk:common"))
|
||||
|
||||
implementation(project(":api:incubator"))
|
||||
|
||||
compileOnly(project(":api:incubator"))
|
||||
compileOnly(project(":sdk:trace-shaded-deps"))
|
||||
|
||||
annotationProcessor("com.google.auto.value:auto-value")
|
||||
|
@ -65,6 +64,23 @@ dependencies {
|
|||
jmh("org.testcontainers:testcontainers") // testContainer for OTLP collector
|
||||
}
|
||||
|
||||
testing {
|
||||
suites {
|
||||
register<JvmTestSuite>("testIncubating") {
|
||||
dependencies {
|
||||
implementation(project(":sdk:testing"))
|
||||
implementation(project(":api:incubator"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
check {
|
||||
dependsOn(testing.suites)
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
withType<AnimalSniffer>().configureEach {
|
||||
// We catch NoClassDefFoundError to fallback to non-jctools queues.
|
||||
|
|
|
@ -0,0 +1,159 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.trace;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.propagation.ExtendedContextPropagators;
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder;
|
||||
import io.opentelemetry.api.incubator.trace.SpanCallable;
|
||||
import io.opentelemetry.api.incubator.trace.SpanRunnable;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.api.trace.StatusCode;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
/** {@link ExtendedSdkSpanBuilder} is SDK implementation of {@link ExtendedSpanBuilder}. */
|
||||
final class ExtendedSdkSpanBuilder extends SdkSpanBuilder implements ExtendedSpanBuilder {
|
||||
|
||||
ExtendedSdkSpanBuilder(
|
||||
String spanName,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
TracerSharedState tracerSharedState,
|
||||
SpanLimits spanLimits) {
|
||||
super(spanName, instrumentationScopeInfo, tracerSharedState, spanLimits);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setParent(Context context) {
|
||||
super.setParent(context);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setNoParent() {
|
||||
super.setNoParent();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setSpanKind(SpanKind spanKind) {
|
||||
super.setSpanKind(spanKind);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder addLink(SpanContext spanContext) {
|
||||
super.addLink(spanContext);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder addLink(SpanContext spanContext, Attributes attributes) {
|
||||
super.addLink(spanContext, attributes);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, String value) {
|
||||
super.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, long value) {
|
||||
super.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, double value) {
|
||||
super.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, boolean value) {
|
||||
super.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> ExtendedSpanBuilder setAttribute(AttributeKey<T> key, T value) {
|
||||
super.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) {
|
||||
super.setStartTimestamp(startTimestamp, unit);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setParentFrom(
|
||||
ContextPropagators propagators, Map<String, String> carrier) {
|
||||
super.setParent(
|
||||
ExtendedContextPropagators.extractTextMapPropagationContext(carrier, propagators));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> T startAndCall(SpanCallable<T, E> spanCallable) throws E {
|
||||
return startAndCall(spanCallable, ExtendedSdkSpanBuilder::setSpanError);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> T startAndCall(
|
||||
SpanCallable<T, E> spanCallable, BiConsumer<Span, Throwable> handleException) throws E {
|
||||
Span span = startSpan();
|
||||
|
||||
//noinspection unused
|
||||
try (Scope unused = span.makeCurrent()) {
|
||||
return spanCallable.callInSpan();
|
||||
} catch (Throwable e) {
|
||||
handleException.accept(span, e);
|
||||
throw e;
|
||||
} finally {
|
||||
span.end();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends Throwable> void startAndRun(SpanRunnable<E> runnable) throws E {
|
||||
startAndRun(runnable, ExtendedSdkSpanBuilder::setSpanError);
|
||||
}
|
||||
|
||||
@SuppressWarnings("NullAway")
|
||||
@Override
|
||||
public <E extends Throwable> void startAndRun(
|
||||
SpanRunnable<E> runnable, BiConsumer<Span, Throwable> handleException) throws E {
|
||||
startAndCall(
|
||||
() -> {
|
||||
runnable.runInSpan();
|
||||
return null;
|
||||
},
|
||||
handleException);
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks a span as error. This is the default exception handler.
|
||||
*
|
||||
* @param span the span
|
||||
* @param exception the exception that caused the error
|
||||
*/
|
||||
private static void setSpanError(Span span, Throwable exception) {
|
||||
span.setStatus(StatusCode.ERROR);
|
||||
span.recordException(exception);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.trace;
|
||||
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedTracer;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.trace.internal.TracerConfig;
|
||||
|
||||
/** {@link ExtendedSdkTracer} is SDK implementation of {@link ExtendedTracer}. */
|
||||
final class ExtendedSdkTracer extends SdkTracer implements ExtendedTracer {
|
||||
// TODO: add dedicated API for updating scope config.
|
||||
@SuppressWarnings("FieldCanBeFinal") // For now, allow updating reflectively.
|
||||
private boolean tracerEnabled;
|
||||
|
||||
ExtendedSdkTracer(
|
||||
TracerSharedState sharedState,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
TracerConfig tracerConfig) {
|
||||
super(sharedState, instrumentationScopeInfo, tracerConfig);
|
||||
this.tracerEnabled = tracerConfig.isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return tracerEnabled;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.trace;
|
||||
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.trace.internal.TracerConfig;
|
||||
|
||||
/**
|
||||
* Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not
|
||||
* guaranteed to be present on the classpath. For all methods, callers MUST first separately
|
||||
* reflectively confirm that the incubator is available on the classpath.
|
||||
*/
|
||||
final class IncubatingUtil {
|
||||
|
||||
private IncubatingUtil() {}
|
||||
|
||||
static SdkTracer createExtendedTracer(
|
||||
TracerSharedState sharedState,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
TracerConfig tracerConfig) {
|
||||
return new ExtendedSdkTracer(sharedState, instrumentationScopeInfo, tracerConfig);
|
||||
}
|
||||
|
||||
static SdkSpanBuilder createExtendedSpanBuilder(
|
||||
String spanName,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
TracerSharedState tracerSharedState,
|
||||
SpanLimits spanLimits) {
|
||||
return new ExtendedSdkSpanBuilder(
|
||||
spanName, instrumentationScopeInfo, tracerSharedState, spanLimits);
|
||||
}
|
||||
}
|
|
@ -12,21 +12,14 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey;
|
|||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.incubator.propagation.ExtendedContextPropagators;
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder;
|
||||
import io.opentelemetry.api.incubator.trace.SpanCallable;
|
||||
import io.opentelemetry.api.incubator.trace.SpanRunnable;
|
||||
import io.opentelemetry.api.internal.ImmutableSpanContext;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.api.trace.StatusCode;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.internal.AttributeUtil;
|
||||
import io.opentelemetry.sdk.internal.AttributesMap;
|
||||
|
@ -36,13 +29,11 @@ import io.opentelemetry.sdk.trace.samplers.SamplingResult;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/** {@link SdkSpanBuilder} is SDK implementation of {@link SpanBuilder}. */
|
||||
final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
||||
class SdkSpanBuilder implements SpanBuilder {
|
||||
|
||||
private final String spanName;
|
||||
private final InstrumentationScopeInfo instrumentationScopeInfo;
|
||||
|
@ -68,7 +59,7 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setParent(Context context) {
|
||||
public SpanBuilder setParent(Context context) {
|
||||
if (context == null) {
|
||||
return this;
|
||||
}
|
||||
|
@ -77,13 +68,13 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setNoParent() {
|
||||
public SpanBuilder setNoParent() {
|
||||
this.parent = Context.root();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setSpanKind(SpanKind spanKind) {
|
||||
public SpanBuilder setSpanKind(SpanKind spanKind) {
|
||||
if (spanKind == null) {
|
||||
return this;
|
||||
}
|
||||
|
@ -92,7 +83,7 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder addLink(SpanContext spanContext) {
|
||||
public SpanBuilder addLink(SpanContext spanContext) {
|
||||
if (spanContext == null || !spanContext.isValid()) {
|
||||
return this;
|
||||
}
|
||||
|
@ -101,7 +92,7 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder addLink(SpanContext spanContext, Attributes attributes) {
|
||||
public SpanBuilder addLink(SpanContext spanContext, Attributes attributes) {
|
||||
if (spanContext == null || !spanContext.isValid()) {
|
||||
return this;
|
||||
}
|
||||
|
@ -135,27 +126,27 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, String value) {
|
||||
public SpanBuilder setAttribute(String key, String value) {
|
||||
return setAttribute(stringKey(key), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, long value) {
|
||||
public SpanBuilder setAttribute(String key, long value) {
|
||||
return setAttribute(longKey(key), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, double value) {
|
||||
public SpanBuilder setAttribute(String key, double value) {
|
||||
return setAttribute(doubleKey(key), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setAttribute(String key, boolean value) {
|
||||
public SpanBuilder setAttribute(String key, boolean value) {
|
||||
return setAttribute(booleanKey(key), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> ExtendedSpanBuilder setAttribute(AttributeKey<T> key, T value) {
|
||||
public <T> SpanBuilder setAttribute(AttributeKey<T> key, T value) {
|
||||
if (key == null || key.getKey().isEmpty() || value == null) {
|
||||
return this;
|
||||
}
|
||||
|
@ -164,7 +155,7 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) {
|
||||
public SpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) {
|
||||
if (startTimestamp < 0 || unit == null) {
|
||||
return this;
|
||||
}
|
||||
|
@ -172,13 +163,6 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setParentFrom(
|
||||
ContextPropagators propagators, Map<String, String> carrier) {
|
||||
setParent(ExtendedContextPropagators.extractTextMapPropagationContext(carrier, propagators));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
public Span startSpan() {
|
||||
|
@ -250,44 +234,6 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
startEpochNanos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> T startAndCall(SpanCallable<T, E> spanCallable) throws E {
|
||||
return startAndCall(spanCallable, SdkSpanBuilder::setSpanError);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> T startAndCall(
|
||||
SpanCallable<T, E> spanCallable, BiConsumer<Span, Throwable> handleException) throws E {
|
||||
Span span = startSpan();
|
||||
|
||||
//noinspection unused
|
||||
try (Scope unused = span.makeCurrent()) {
|
||||
return spanCallable.callInSpan();
|
||||
} catch (Throwable e) {
|
||||
handleException.accept(span, e);
|
||||
throw e;
|
||||
} finally {
|
||||
span.end();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends Throwable> void startAndRun(SpanRunnable<E> runnable) throws E {
|
||||
startAndRun(runnable, SdkSpanBuilder::setSpanError);
|
||||
}
|
||||
|
||||
@SuppressWarnings("NullAway")
|
||||
@Override
|
||||
public <E extends Throwable> void startAndRun(
|
||||
SpanRunnable<E> runnable, BiConsumer<Span, Throwable> handleException) throws E {
|
||||
startAndCall(
|
||||
() -> {
|
||||
runnable.runInSpan();
|
||||
return null;
|
||||
},
|
||||
handleException);
|
||||
}
|
||||
|
||||
private AttributesMap attributes() {
|
||||
AttributesMap attributes = this.attributes;
|
||||
if (attributes == null) {
|
||||
|
@ -309,15 +255,4 @@ final class SdkSpanBuilder implements ExtendedSpanBuilder {
|
|||
static boolean isSampled(SamplingDecision decision) {
|
||||
return SamplingDecision.RECORD_AND_SAMPLE.equals(decision);
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks a span as error. This is the default exception handler.
|
||||
*
|
||||
* @param span the span
|
||||
* @param exception the exception that caused the error
|
||||
*/
|
||||
private static void setSpanError(Span span, Throwable exception) {
|
||||
span.setStatus(StatusCode.ERROR);
|
||||
span.recordException(exception);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
package io.opentelemetry.sdk.trace;
|
||||
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedTracer;
|
||||
import io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.api.trace.Tracer;
|
||||
import io.opentelemetry.api.trace.TracerProvider;
|
||||
|
@ -13,9 +12,21 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
|||
import io.opentelemetry.sdk.trace.internal.TracerConfig;
|
||||
|
||||
/** {@link SdkTracer} is SDK implementation of {@link Tracer}. */
|
||||
final class SdkTracer implements ExtendedTracer {
|
||||
class SdkTracer implements Tracer {
|
||||
static final String FALLBACK_SPAN_NAME = "<unspecified span name>";
|
||||
private static final Tracer NOOP_TRACER = TracerProvider.noop().get("noop");
|
||||
private static final boolean INCUBATOR_AVAILABLE;
|
||||
|
||||
static {
|
||||
boolean incubatorAvailable = false;
|
||||
try {
|
||||
Class.forName("io.opentelemetry.api.incubator.trace.ExtendedDefaultTracerProvider");
|
||||
incubatorAvailable = true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Not available
|
||||
}
|
||||
INCUBATOR_AVAILABLE = incubatorAvailable;
|
||||
}
|
||||
|
||||
private final TracerSharedState sharedState;
|
||||
private final InstrumentationScopeInfo instrumentationScopeInfo;
|
||||
|
@ -33,6 +44,15 @@ final class SdkTracer implements ExtendedTracer {
|
|||
this.tracerEnabled = tracerConfig.isEnabled();
|
||||
}
|
||||
|
||||
static SdkTracer create(
|
||||
TracerSharedState sharedState,
|
||||
InstrumentationScopeInfo instrumentationScopeInfo,
|
||||
TracerConfig tracerConfig) {
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedTracer(sharedState, instrumentationScopeInfo, tracerConfig)
|
||||
: new SdkTracer(sharedState, instrumentationScopeInfo, tracerConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpanBuilder spanBuilder(String spanName) {
|
||||
if (!tracerEnabled) {
|
||||
|
@ -45,17 +65,15 @@ final class SdkTracer implements ExtendedTracer {
|
|||
Tracer tracer = TracerProvider.noop().get(instrumentationScopeInfo.getName());
|
||||
return tracer.spanBuilder(spanName);
|
||||
}
|
||||
return new SdkSpanBuilder(
|
||||
spanName, instrumentationScopeInfo, sharedState, sharedState.getSpanLimits());
|
||||
return INCUBATOR_AVAILABLE
|
||||
? IncubatingUtil.createExtendedSpanBuilder(
|
||||
spanName, instrumentationScopeInfo, sharedState, sharedState.getSpanLimits())
|
||||
: new SdkSpanBuilder(
|
||||
spanName, instrumentationScopeInfo, sharedState, sharedState.getSpanLimits());
|
||||
}
|
||||
|
||||
// Visible for testing
|
||||
InstrumentationScopeInfo getInstrumentationScopeInfo() {
|
||||
return instrumentationScopeInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return tracerEnabled;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public final class SdkTracerProvider implements TracerProvider, Closeable {
|
|||
this.tracerSdkComponentRegistry =
|
||||
new ComponentRegistry<>(
|
||||
instrumentationScopeInfo ->
|
||||
new SdkTracer(
|
||||
SdkTracer.create(
|
||||
sharedState,
|
||||
instrumentationScopeInfo,
|
||||
getTracerConfig(instrumentationScopeInfo)));
|
||||
|
|
Loading…
Reference in New Issue