Skip to content

Commit 1079cdc

Browse files
committed
make sure resource is set when getting it (to help troubleshoot)
1 parent 84e061b commit 1079cdc

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class DeclarativeConfigContext {
2626
private final SpiHelper spiHelper;
2727
private final List<Closeable> closeables = new ArrayList<>();
2828
@Nullable private volatile MeterProvider meterProvider;
29-
private Resource resource = Resource.empty();
29+
@Nullable private Resource resource = null;
3030

3131
// Visible for testing
3232
DeclarativeConfigContext(SpiHelper spiHelper) {
@@ -61,6 +61,9 @@ public void setMeterProvider(MeterProvider meterProvider) {
6161

6262
Resource getResource() {
6363
// called via reflection from io.opentelemetry.sdk.autoconfigure.IncubatingUtil
64+
if (resource == null) {
65+
throw new DeclarativeConfigException("Resource has not been configured yet.");
66+
}
6467
return resource;
6568
}
6669

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.extension.incubator.fileconfig;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
import static org.assertj.core.api.Assertions.assertThatCode;
10+
11+
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
12+
import io.opentelemetry.common.ComponentLoader;
13+
import io.opentelemetry.sdk.resources.Resource;
14+
import org.junit.jupiter.api.Test;
15+
16+
class DeclarativeConfigContextTest {
17+
18+
private final DeclarativeConfigContext context =
19+
DeclarativeConfigContext.create(
20+
ComponentLoader.forClassLoader(DeclarativeConfigContextTest.class.getClassLoader()));
21+
22+
@Test
23+
void resourceMustBeSetBeforeUse() {
24+
assertThatCode(context::getResource).isInstanceOf(DeclarativeConfigException.class);
25+
Resource resource = Resource.empty();
26+
context.setResource(resource);
27+
assertThat(context.getResource()).isSameAs(resource);
28+
}
29+
}

0 commit comments

Comments
 (0)