Skip to content

Commit a624c70

Browse files
committed
partially incorporate pr feedback
1 parent 6ec7a0a commit a624c70

File tree

7 files changed

+57
-19
lines changed

7 files changed

+57
-19
lines changed

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public interface ConfigProvider {
2323
/**
2424
* Returns the {@link StructuredConfigProperties} corresponding to <a
2525
* href="https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema/instrumentation.json">instrumentation
26-
* config</a>, or {@code null} if file configuration is not used.
26+
* config</a>, or {@code null} if unavailable.
2727
*
2828
* @return the instrumentation {@link StructuredConfigProperties}
2929
*/

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/GlobalConfigProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public static ConfigProvider get() {
3737
* Sets the global {@link ConfigProvider}. Future calls to {@link #get()} will return the provided
3838
* {@link ConfigProvider} instance. This should be called once as early as possible in your
3939
* application initialization logic.
40+
*
41+
* @throws IllegalStateException when called more than once
4042
*/
4143
public static void set(ConfigProvider configProvider) {
4244
boolean changed = instance.compareAndSet(ConfigProvider.noop(), configProvider);

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
package io.opentelemetry.api.incubator.config;
77

8-
import java.util.HashMap;
8+
import java.util.LinkedHashMap;
99
import java.util.List;
1010
import java.util.Map;
1111
import java.util.Optional;
@@ -22,6 +22,8 @@ public class InstrumentationConfigUtil {
2222
/**
2323
* Return a map representation of the peer service map entries in {@code
2424
* .instrumentation.general.peer.service_mapping}, or null if none is configured.
25+
*
26+
* @throws StructuredConfigException if an unexpected type is encountered accessing the property
2527
*/
2628
@Nullable
2729
public static Map<String, String> peerServiceMapping(ConfigProvider configProvider) {
@@ -33,7 +35,7 @@ public static Map<String, String> peerServiceMapping(ConfigProvider configProvid
3335
if (!optServiceMappingList.isPresent()) {
3436
return null;
3537
}
36-
Map<String, String> serviceMapping = new HashMap<>();
38+
Map<String, String> serviceMapping = new LinkedHashMap<>();
3739
optServiceMappingList
3840
.get()
3941
.forEach(
@@ -44,12 +46,14 @@ public static Map<String, String> peerServiceMapping(ConfigProvider configProvid
4446
serviceMapping.put(peer, service);
4547
}
4648
});
47-
return serviceMapping;
49+
return serviceMapping.isEmpty() ? null : serviceMapping;
4850
}
4951

5052
/**
5153
* Return {@code .instrumentation.general.http.client.request_captured_headers}, or null if none
5254
* is configured.
55+
*
56+
* @throws StructuredConfigException if an unexpected type is encountered accessing the property
5357
*/
5458
@Nullable
5559
public static List<String> httpClientRequestCapturedHeaders(ConfigProvider configProvider) {
@@ -58,12 +62,15 @@ public static List<String> httpClientRequestCapturedHeaders(ConfigProvider confi
5862
.map(generalConfig -> generalConfig.getStructured("http"))
5963
.map(httpConfig -> httpConfig.getStructured("client"))
6064
.map(clientConfig -> clientConfig.getScalarList("request_captured_headers", String.class))
65+
.filter(list -> !list.isEmpty())
6166
.orElse(null);
6267
}
6368

6469
/**
6570
* Return {@code .instrumentation.general.http.client.response_captured_headers}, or null if none
6671
* is configured.
72+
*
73+
* @throws StructuredConfigException if an unexpected type is encountered accessing the property
6774
*/
6875
@Nullable
6976
public static List<String> httpClientResponseCapturedHeaders(ConfigProvider configProvider) {
@@ -72,12 +79,15 @@ public static List<String> httpClientResponseCapturedHeaders(ConfigProvider conf
7279
.map(generalConfig -> generalConfig.getStructured("http"))
7380
.map(httpConfig -> httpConfig.getStructured("client"))
7481
.map(clientConfig -> clientConfig.getScalarList("response_captured_headers", String.class))
82+
.filter(list -> !list.isEmpty())
7583
.orElse(null);
7684
}
7785

7886
/**
7987
* Return {@code .instrumentation.general.http.server.request_captured_headers}, or null if none
8088
* is configured.
89+
*
90+
* @throws StructuredConfigException if an unexpected type is encountered accessing the property
8191
*/
8292
@Nullable
8393
public static List<String> httpServerRequestCapturedHeaders(ConfigProvider configProvider) {
@@ -86,12 +96,15 @@ public static List<String> httpServerRequestCapturedHeaders(ConfigProvider confi
8696
.map(generalConfig -> generalConfig.getStructured("http"))
8797
.map(httpConfig -> httpConfig.getStructured("server"))
8898
.map(clientConfig -> clientConfig.getScalarList("request_captured_headers", String.class))
99+
.filter(list -> !list.isEmpty())
89100
.orElse(null);
90101
}
91102

92103
/**
93104
* Return {@code .instrumentation.general.http.server.response_captured_headers}, or null if none
94105
* is configured.
106+
*
107+
* @throws StructuredConfigException if an unexpected type is encountered accessing the property
95108
*/
96109
@Nullable
97110
public static List<String> httpSeverResponseCapturedHeaders(ConfigProvider configProvider) {
@@ -100,10 +113,15 @@ public static List<String> httpSeverResponseCapturedHeaders(ConfigProvider confi
100113
.map(generalConfig -> generalConfig.getStructured("http"))
101114
.map(httpConfig -> httpConfig.getStructured("server"))
102115
.map(clientConfig -> clientConfig.getScalarList("response_captured_headers", String.class))
116+
.filter(list -> !list.isEmpty())
103117
.orElse(null);
104118
}
105119

106-
/** Return {@code .instrumentation.java.<instrumentationName>}, or null if none is configured. */
120+
/**
121+
* Return {@code .instrumentation.java.<instrumentationName>}, or null if none is configured.
122+
*
123+
* @throws StructuredConfigException if an unexpected type is encountered accessing the property
124+
*/
107125
@Nullable
108126
public static StructuredConfigProperties javaInstrumentationConfig(
109127
ConfigProvider configProvider, String instrumentationName) {

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/internal/YamlStructuredConfigProperties.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,10 +287,7 @@ public String toString() {
287287
return joiner.toString();
288288
}
289289

290-
/**
291-
* Returns a map representation of this {@link YamlStructuredConfigProperties}, which is useful
292-
* for testing.
293-
*/
290+
/** Returns a map representation of this, which is useful for testing. */
294291
public Map<String, Object> asMap() {
295292
Map<String, Object> response = new HashMap<>();
296293
response.putAll(simpleEntries);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.api.incubator;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import io.opentelemetry.api.incubator.config.ConfigProvider;
11+
import org.junit.jupiter.api.Test;
12+
13+
class ConfigProviderTest {
14+
15+
@Test
16+
void noopEquality() {
17+
ConfigProvider noop = ConfigProvider.noop();
18+
assertThat(ConfigProvider.noop()).isSameAs(noop);
19+
}
20+
}

api/incubator/src/test/java/io/opentelemetry/api/incubator/config/GlobalConfigProviderTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,10 @@ void setAndGet() {
3737

3838
@Test
3939
void setThenSet() {
40-
GlobalConfigProvider.set(() -> YamlStructuredConfigProperties.create(Collections.emptyMap()));
41-
assertThatThrownBy(
42-
() ->
43-
GlobalConfigProvider.set(
44-
() -> YamlStructuredConfigProperties.create(Collections.emptyMap())))
40+
ConfigProvider configProvider =
41+
() -> YamlStructuredConfigProperties.create(Collections.emptyMap());
42+
GlobalConfigProvider.set(configProvider);
43+
assertThatThrownBy(() -> GlobalConfigProvider.set(configProvider))
4544
.isInstanceOf(IllegalStateException.class)
4645
.hasMessageContaining("GlobalConfigProvider.set has already been called")
4746
.hasStackTraceContaining("setThenSet");

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import java.util.List;
5353
import java.util.Map;
5454
import java.util.Objects;
55+
import java.util.Optional;
5556
import java.util.function.BiFunction;
5657
import java.util.function.Function;
5758
import java.util.function.Supplier;
@@ -435,7 +436,9 @@ public AutoConfiguredOpenTelemetrySdk build() {
435436
if (fromFileConfiguration != null) {
436437
maybeRegisterShutdownHook(fromFileConfiguration.getOpenTelemetrySdk());
437438
maybeSetAsGlobal(
438-
fromFileConfiguration.getOpenTelemetrySdk(), fromFileConfiguration.getConfigProvider());
439+
fromFileConfiguration.getOpenTelemetrySdk(),
440+
Optional.ofNullable(fromFileConfiguration.getConfigProvider())
441+
.orElse(ConfigProvider.noop()));
439442
return fromFileConfiguration;
440443
}
441444

@@ -507,7 +510,7 @@ public AutoConfiguredOpenTelemetrySdk build() {
507510
}
508511

509512
maybeRegisterShutdownHook(openTelemetrySdk);
510-
maybeSetAsGlobal(openTelemetrySdk, null);
513+
maybeSetAsGlobal(openTelemetrySdk, ConfigProvider.noop());
511514
callAutoConfigureListeners(spiHelper, openTelemetrySdk);
512515

513516
return AutoConfiguredOpenTelemetrySdk.create(openTelemetrySdk, resource, config, null);
@@ -593,15 +596,14 @@ private void maybeRegisterShutdownHook(OpenTelemetrySdk openTelemetrySdk) {
593596
Runtime.getRuntime().addShutdownHook(shutdownHook(openTelemetrySdk));
594597
}
595598

596-
private void maybeSetAsGlobal(
597-
OpenTelemetrySdk openTelemetrySdk, @Nullable ConfigProvider configProvider) {
599+
private void maybeSetAsGlobal(OpenTelemetrySdk openTelemetrySdk, ConfigProvider configProvider) {
598600
if (!setResultAsGlobal) {
599601
return;
600602
}
601603
GlobalOpenTelemetry.set(openTelemetrySdk);
602604
GlobalEventLoggerProvider.set(
603605
SdkEventLoggerProvider.create(openTelemetrySdk.getSdkLoggerProvider()));
604-
GlobalConfigProvider.set(configProvider != null ? configProvider : ConfigProvider.noop());
606+
GlobalConfigProvider.set(configProvider);
605607
logger.log(
606608
Level.FINE, "Global OpenTelemetry set to {0} by autoconfiguration", openTelemetrySdk);
607609
}

0 commit comments

Comments
 (0)