Skip to content

Commit df73512

Browse files
committed
no problematic api changes
1 parent 9b84e85 commit df73512

File tree

12 files changed

+100
-55
lines changed

12 files changed

+100
-55
lines changed
Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,11 @@
11
Comparing source compatibility of opentelemetry-sdk-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-1.52.0.jar
2-
No changes.
2+
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.OpenTelemetrySdk (not serializable)
3+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4+
---! REMOVED METHOD: PUBLIC(-) void close()
5+
+++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.WithShutdown (not serializable)
6+
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
7+
+++ NEW INTERFACE: java.io.Closeable
8+
+++ NEW INTERFACE: java.lang.AutoCloseable
9+
+++ NEW SUPERCLASS: java.lang.Object
10+
+++ NEW METHOD: PUBLIC(+) void close()
11+
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.common.CompletableResultCode shutdown()

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,19 @@
88
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
99
import io.opentelemetry.api.incubator.config.ConfigProvider;
1010
import io.opentelemetry.sdk.OpenTelemetrySdk;
11-
import io.opentelemetry.sdk.common.CompletableResultCode;
12-
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
13-
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
14-
import io.opentelemetry.sdk.trace.SdkTracerProvider;
15-
import javax.annotation.Nullable;
16-
import java.io.Closeable;
11+
import io.opentelemetry.sdk.WithShutdown;
1712
import java.lang.reflect.Field;
13+
import javax.annotation.Nullable;
1814

1915
/** A new interface for creating OpenTelemetrySdk that supports getting {@link ConfigProvider}. */
20-
public interface ExtendedOpenTelemetrySdk extends ExtendedOpenTelemetry, Closeable {
21-
/**
22-
* Shutdown the SDK. Calls {@link SdkTracerProvider#shutdown()}, {@link
23-
* SdkMeterProvider#shutdown()}, and {@link SdkLoggerProvider#shutdown()}.
24-
*
25-
* @return a {@link CompletableResultCode} which completes when all providers are shutdown
26-
*/
27-
CompletableResultCode shutdown();
28-
16+
public interface ExtendedOpenTelemetrySdk extends ExtendedOpenTelemetry, WithShutdown {
2917
/** Returns a builder for {@link ExtendedOpenTelemetrySdk}. */
3018
static ExtendedOpenTelemetrySdkBuilder builder() {
3119
return new ExtendedOpenTelemetrySdkBuilder();
3220
}
3321

34-
@Nullable default ExtendedOpenTelemetrySdk fromOpenTelemetrySdk(OpenTelemetrySdk openTelemetry) {
22+
@Nullable
23+
static ExtendedOpenTelemetrySdk fromOpenTelemetrySdk(OpenTelemetrySdk openTelemetry) {
3524
try {
3625
Class<?> sdk = Class.forName("io.opentelemetry.sdk.OpenTelemetrySdk");
3726
Field extendedOpenTelemetrySdk = sdk.getDeclaredField("extendedOpenTelemetrySdk");

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdkBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.context.propagation.ContextPropagators;
1111
import io.opentelemetry.sdk.OpenTelemetrySdk;
1212
import io.opentelemetry.sdk.OpenTelemetrySdkBuilder;
13+
import io.opentelemetry.sdk.WithShutdown;
1314
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1415
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
1516
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
@@ -120,7 +121,7 @@ public OpenTelemetrySdk build() {
120121

121122
try {
122123
Method setExtendedOpenTelemetrySdk =
123-
builder.getClass().getDeclaredMethod("setExtendedOpenTelemetrySdk", Object.class);
124+
builder.getClass().getDeclaredMethod("setExtendedOpenTelemetrySdk", WithShutdown.class);
124125
setExtendedOpenTelemetrySdk.setAccessible(true);
125126
setExtendedOpenTelemetrySdk.invoke(builder, extendedOpenTelemetrySdk);
126127
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ObfuscatedExtendedOpenTelemetrySdk.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2121
import java.util.ArrayList;
2222
import java.util.List;
23-
import java.util.concurrent.TimeUnit;
2423
import java.util.concurrent.atomic.AtomicBoolean;
2524
import java.util.logging.Logger;
2625
import javax.annotation.concurrent.ThreadSafe;
@@ -63,11 +62,6 @@ public CompletableResultCode shutdown() {
6362
return CompletableResultCode.ofAll(results);
6463
}
6564

66-
@Override
67-
public void close() {
68-
shutdown().join(10, TimeUnit.SECONDS);
69-
}
70-
7165
@Override
7266
public ConfigProvider getConfigProvider() {
7367
return configProvider;

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ List<Closeable> getCloseables() {
4343
ComponentLoader getComponentLoader() {
4444
return spiHelper.getComponentLoader();
4545
}
46+
4647
/**
4748
* Find a registered {@link ComponentProvider} with {@link ComponentProvider#getType()} matching
4849
* {@code type}, {@link ComponentProvider#getName()} matching {@code name}, and call {@link

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ static LoggerProviderFactory getInstance() {
3232

3333
public void configure(
3434
SdkLoggerProviderBuilder builder,
35-
LoggerProviderAndAttributeLimits model, DeclarativeConfigContext context) {
35+
LoggerProviderAndAttributeLimits model,
36+
DeclarativeConfigContext context) {
3637

3738
LoggerProviderModel loggerProviderModel = model.getLoggerProvider();
3839
if (loggerProviderModel == null) {
@@ -81,7 +82,6 @@ public void configure(
8182
}
8283
SdkLoggerProviderUtil.setLoggerConfigurator(builder, configuratorBuilder.build());
8384
}
84-
8585
}
8686

8787
private static class LoggerConfigFactory

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ public void configure(
9191
}
9292
SdkMeterProviderUtil.setMeterConfigurator(builder, configuratorBuilder.build());
9393
}
94-
9594
}
9695

9796
private static class MeterConfigFactory
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.extension.incubator;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import io.opentelemetry.sdk.OpenTelemetrySdk;
11+
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
12+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
13+
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
14+
import org.junit.jupiter.api.Test;
15+
16+
class TestExtendedOpenTelemetrySdk {
17+
private final InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.create();
18+
19+
@Test
20+
void extractExtendedSdk() {
21+
SdkConfigProvider configProvider =
22+
SdkConfigProvider.create(new OpenTelemetryConfigurationModel());
23+
OpenTelemetrySdk sdk =
24+
ExtendedOpenTelemetrySdk.builder()
25+
.withMeterProvider(builder -> builder.registerMetricReader(sdkMeterReader))
26+
.setConfigProvider(configProvider)
27+
.build();
28+
ExtendedOpenTelemetrySdk extendedSdk = ExtendedOpenTelemetrySdk.fromOpenTelemetrySdk(sdk);
29+
assertThat(extendedSdk).isNotNull();
30+
assertThat(extendedSdk.getConfigProvider()).isEqualTo(configProvider);
31+
}
32+
}

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import io.opentelemetry.internal.testing.CleanupExtension;
2525
import io.opentelemetry.sdk.OpenTelemetrySdk;
2626
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
27-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
2827
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdkBuilder;
2928
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AlwaysOnSamplerModel;
3029
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel;
@@ -125,8 +124,7 @@ void create_Defaults() {
125124
.build();
126125
cleanup.addCloseable(expectedSdk);
127126

128-
ExtendedOpenTelemetrySdk sdk =
129-
OpenTelemetryConfigurationFactory.getInstance().create(model, context);
127+
OpenTelemetrySdk sdk = OpenTelemetryConfigurationFactory.getInstance().create(model, context);
130128
cleanup.addCloseable(sdk);
131129
cleanup.addCloseables(closeables);
132130

@@ -136,10 +134,10 @@ void create_Defaults() {
136134
@Test
137135
void create_Disabled() {
138136
List<Closeable> closeables = new ArrayList<>();
139-
ExtendedOpenTelemetrySdk expectedSdk = new ExtendedOpenTelemetrySdkBuilder().build();
137+
OpenTelemetrySdk expectedSdk = OpenTelemetrySdk.builder().build();
140138
cleanup.addCloseable(expectedSdk);
141139

142-
ExtendedOpenTelemetrySdk sdk =
140+
OpenTelemetrySdk sdk =
143141
OpenTelemetryConfigurationFactory.getInstance()
144142
.create(
145143
new OpenTelemetryConfigurationModel()
@@ -254,7 +252,7 @@ void create_Configured() {
254252
.withName("stream-name")
255253
.withAttributeKeys(null)))));
256254

257-
ExtendedOpenTelemetrySdk expectedSdk =
255+
OpenTelemetrySdk expectedSdk =
258256
new ExtendedOpenTelemetrySdkBuilder()
259257
.setConfigProvider(SdkConfigProvider.create(model))
260258
.setPropagators(
@@ -312,8 +310,7 @@ void create_Configured() {
312310
.build();
313311
cleanup.addCloseable(expectedSdk);
314312

315-
ExtendedOpenTelemetrySdk sdk =
316-
OpenTelemetryConfigurationFactory.getInstance().create(model, context);
313+
OpenTelemetrySdk sdk = OpenTelemetryConfigurationFactory.getInstance().create(model, context);
317314
cleanup.addCloseable(sdk);
318315
cleanup.addCloseables(closeables);
319316

sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdk.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@
2121
import java.io.Closeable;
2222
import java.util.ArrayList;
2323
import java.util.List;
24-
import java.util.concurrent.TimeUnit;
2524
import java.util.concurrent.atomic.AtomicBoolean;
2625
import java.util.logging.Logger;
2726
import javax.annotation.Nullable;
2827
import javax.annotation.concurrent.ThreadSafe;
2928

3029
/** The SDK implementation of {@link OpenTelemetry}. */
3130
@ThreadSafe
32-
public final class OpenTelemetrySdk implements OpenTelemetry, Closeable {
31+
public final class OpenTelemetrySdk implements OpenTelemetry, Closeable, WithShutdown {
3332

3433
private static final Logger LOGGER = Logger.getLogger(OpenTelemetrySdk.class.getName());
3534

@@ -38,14 +37,14 @@ public final class OpenTelemetrySdk implements OpenTelemetry, Closeable {
3837
private final ObfuscatedMeterProvider meterProvider;
3938
private final ObfuscatedLoggerProvider loggerProvider;
4039
private final ContextPropagators propagators;
41-
@Nullable private final Object extendedOpenTelemetrySdk;
40+
@Nullable private final WithShutdown extendedOpenTelemetrySdk;
4241

4342
OpenTelemetrySdk(
4443
SdkTracerProvider tracerProvider,
4544
SdkMeterProvider meterProvider,
4645
SdkLoggerProvider loggerProvider,
4746
ContextPropagators propagators,
48-
@Nullable Object extendedOpenTelemetrySdk) {
47+
@Nullable WithShutdown extendedOpenTelemetrySdk) {
4948
this.tracerProvider = new ObfuscatedTracerProvider(tracerProvider);
5049
this.meterProvider = new ObfuscatedMeterProvider(meterProvider);
5150
this.loggerProvider = new ObfuscatedLoggerProvider(loggerProvider);
@@ -100,13 +99,13 @@ public ContextPropagators getPropagators() {
10099
return propagators;
101100
}
102101

103-
/**
104-
* Shutdown the SDK. Calls {@link SdkTracerProvider#shutdown()}, {@link
105-
* SdkMeterProvider#shutdown()}, and {@link SdkLoggerProvider#shutdown()}.
106-
*
107-
* @return a {@link CompletableResultCode} which completes when all providers are shutdown
108-
*/
102+
@Override
109103
public CompletableResultCode shutdown() {
104+
if (extendedOpenTelemetrySdk != null) {
105+
// If an ExtendedOpenTelemetrySdk is present, we delegate the shutdown to it.
106+
return extendedOpenTelemetrySdk.shutdown();
107+
}
108+
110109
if (!isShutdown.compareAndSet(false, true)) {
111110
LOGGER.info("Multiple shutdown calls");
112111
return CompletableResultCode.ofSuccess();
@@ -118,11 +117,6 @@ public CompletableResultCode shutdown() {
118117
return CompletableResultCode.ofAll(results);
119118
}
120119

121-
@Override
122-
public void close() {
123-
shutdown().join(10, TimeUnit.SECONDS);
124-
}
125-
126120
@Override
127121
public String toString() {
128122
return "OpenTelemetrySdk{"

0 commit comments

Comments
 (0)