Ignore classpath error when otlp is set as metrics exporter but is no… (#2960)

* Ignore classpath error when otlp is set as metrics exporter but is not on the classpath since the default value is otlp but metrics is alpha.

* Update sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MetricExporterConfiguration.java

Co-authored-by: Nikita Salnikov-Tarnovski <gnikem@gmail.com>

Co-authored-by: Bogdan Drutu <lazy@splunk.com>
Co-authored-by: Nikita Salnikov-Tarnovski <gnikem@gmail.com>
This commit is contained in:
Anuraag Agrawal 2021-03-03 08:57:22 +09:00 committed by GitHub
parent 4e342fdea9
commit c670b859d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 11 deletions

View File

@ -17,6 +17,7 @@ import io.prometheus.client.exporter.HTTPServer;
import java.io.IOException;
import java.time.Duration;
import java.util.Collections;
import javax.annotation.Nullable;
final class MetricExporterConfiguration {
@ -48,12 +49,19 @@ final class MetricExporterConfiguration {
}
// Visible for testing
@Nullable
static OtlpGrpcMetricExporter configureOtlpMetrics(
ConfigProperties config, SdkMeterProvider meterProvider) {
ClasspathUtil.checkClassExists(
"io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter",
"OTLP Metrics Exporter",
"opentelemetry-exporter-otlp-metrics");
try {
ClasspathUtil.checkClassExists(
"io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter",
"OTLP Metrics Exporter",
"opentelemetry-exporter-otlp-metrics");
} catch (ConfigurationException e) {
// Squash this for now, until metrics are stable and included in the `exporter-otlp` artifact
// by default,
return null;
}
OtlpGrpcMetricExporterBuilder builder = OtlpGrpcMetricExporter.builder();
String endpoint = config.getString("otel.exporter.otlp.endpoint");

View File

@ -67,7 +67,7 @@ final class SpanExporterConfiguration {
ClasspathUtil.checkClassExists(
"io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter",
"OTLP Trace Exporter",
"opentelemetry-exporter-otlp-trace");
"opentelemetry-exporter-otlp");
OtlpGrpcSpanExporterBuilder builder = OtlpGrpcSpanExporter.builder();
String endpoint = config.getString("otel.exporter.otlp.endpoint");

View File

@ -5,6 +5,7 @@
package io.opentelemetry.sdk.autoconfigure;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
@ -21,7 +22,7 @@ class NotOnClasspathTest {
assertThatThrownBy(() -> SpanExporterConfiguration.configureExporter("otlp", EMPTY))
.isInstanceOf(ConfigurationException.class)
.hasMessageContaining(
"OTLP Trace Exporter enabled but opentelemetry-exporter-otlp-trace not found on "
"OTLP Trace Exporter enabled but opentelemetry-exporter-otlp not found on "
+ "classpath");
}
@ -65,14 +66,11 @@ class NotOnClasspathTest {
@Test
void otlpMetrics() {
assertThatThrownBy(
assertThatCode(
() ->
MetricExporterConfiguration.configureExporter(
"otlp", EMPTY, SdkMeterProvider.builder().build()))
.isInstanceOf(ConfigurationException.class)
.hasMessageContaining(
"OTLP Metrics Exporter enabled but opentelemetry-exporter-otlp-metrics not found on "
+ "classpath");
.doesNotThrowAnyException();
}
@Test