Skip to content

Commit dd40fbe

Browse files
authored
Remove validations for noop instrument names and units (#5146)
* remove validations for noop implementation * remove unwanted tests * remove unused * remove instrument unit checks from ValidationUtil and move temporarily to AbstractInstrumentBuilder. * move tests * rename ValidationUtil to ApiUsageLogger * fix tests by removing logs check (not important here)
1 parent 018a766 commit dd40fbe

File tree

18 files changed

+306
-361
lines changed

18 files changed

+306
-361
lines changed

api/all/src/main/java/io/opentelemetry/api/baggage/ImmutableEntryMetadata.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
package io.opentelemetry.api.baggage;
77

88
import com.google.auto.value.AutoValue;
9-
import io.opentelemetry.api.internal.ValidationUtil;
9+
import io.opentelemetry.api.internal.ApiUsageLogger;
1010
import javax.annotation.concurrent.Immutable;
1111

1212
@Immutable
@@ -25,7 +25,7 @@ abstract class ImmutableEntryMetadata implements BaggageEntryMetadata {
2525
*/
2626
static ImmutableEntryMetadata create(String metadata) {
2727
if (metadata == null) {
28-
ValidationUtil.log("metadata is null");
28+
ApiUsageLogger.log("metadata is null");
2929
return EMPTY;
3030
}
3131
return new AutoValue_ImmutableEntryMetadata(metadata);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.api.internal;
7+
8+
import java.util.logging.Level;
9+
import java.util.logging.Logger;
10+
11+
/**
12+
* Helper for API misuse logging.
13+
*
14+
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
15+
* at any time.
16+
*/
17+
public final class ApiUsageLogger {
18+
19+
public static final String LOGGER_NAME = "io.opentelemetry.ApiUsageLogger";
20+
21+
private static final Logger API_USAGE_LOGGER = Logger.getLogger(LOGGER_NAME);
22+
23+
/**
24+
* Log the {@code message} to the {@link #LOGGER_NAME API Usage Logger}.
25+
*
26+
* <p>Log at {@link Level#FINEST} and include a stack trace.
27+
*/
28+
public static void log(String message) {
29+
log(message, Level.FINEST);
30+
}
31+
32+
/**
33+
* Log the {@code message} to the {@link #LOGGER_NAME API Usage Logger}.
34+
*
35+
* <p>Log includes a stack trace.
36+
*/
37+
public static void log(String message, Level level) {
38+
if (API_USAGE_LOGGER.isLoggable(level)) {
39+
API_USAGE_LOGGER.log(level, message, new AssertionError());
40+
}
41+
}
42+
43+
private ApiUsageLogger() {}
44+
}

api/all/src/main/java/io/opentelemetry/api/internal/ValidationUtil.java

-107
This file was deleted.

api/all/src/main/java/io/opentelemetry/api/metrics/DefaultMeter.java

-13
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package io.opentelemetry.api.metrics;
77

88
import io.opentelemetry.api.common.Attributes;
9-
import io.opentelemetry.api.internal.ValidationUtil;
109
import io.opentelemetry.context.Context;
1110
import java.util.function.Consumer;
1211
import javax.annotation.concurrent.ThreadSafe;
@@ -39,25 +38,21 @@ static Meter getInstance() {
3938

4039
@Override
4140
public LongCounterBuilder counterBuilder(String name) {
42-
ValidationUtil.checkValidInstrumentName(name);
4341
return NOOP_LONG_COUNTER_BUILDER;
4442
}
4543

4644
@Override
4745
public LongUpDownCounterBuilder upDownCounterBuilder(String name) {
48-
ValidationUtil.checkValidInstrumentName(name);
4946
return NOOP_LONG_UP_DOWN_COUNTER_BUILDER;
5047
}
5148

5249
@Override
5350
public DoubleHistogramBuilder histogramBuilder(String name) {
54-
ValidationUtil.checkValidInstrumentName(name);
5551
return NOOP_DOUBLE_HISTOGRAM_BUILDER;
5652
}
5753

5854
@Override
5955
public DoubleGaugeBuilder gaugeBuilder(String name) {
60-
ValidationUtil.checkValidInstrumentName(name);
6156
return NOOP_DOUBLE_GAUGE_BUILDER;
6257
}
6358

@@ -107,7 +102,6 @@ public LongCounterBuilder setDescription(String description) {
107102

108103
@Override
109104
public LongCounterBuilder setUnit(String unit) {
110-
ValidationUtil.checkValidInstrumentUnit(unit);
111105
return this;
112106
}
113107

@@ -144,7 +138,6 @@ public DoubleCounterBuilder setDescription(String description) {
144138

145139
@Override
146140
public DoubleCounterBuilder setUnit(String unit) {
147-
ValidationUtil.checkValidInstrumentUnit(unit);
148141
return this;
149142
}
150143

@@ -201,7 +194,6 @@ public LongUpDownCounterBuilder setDescription(String description) {
201194

202195
@Override
203196
public LongUpDownCounterBuilder setUnit(String unit) {
204-
ValidationUtil.checkValidInstrumentUnit(unit);
205197
return this;
206198
}
207199

@@ -240,7 +232,6 @@ public DoubleUpDownCounterBuilder setDescription(String description) {
240232

241233
@Override
242234
public DoubleUpDownCounterBuilder setUnit(String unit) {
243-
ValidationUtil.checkValidInstrumentUnit(unit);
244235
return this;
245236
}
246237

@@ -295,7 +286,6 @@ public DoubleHistogramBuilder setDescription(String description) {
295286

296287
@Override
297288
public DoubleHistogramBuilder setUnit(String unit) {
298-
ValidationUtil.checkValidInstrumentUnit(unit);
299289
return this;
300290
}
301291

@@ -320,7 +310,6 @@ public LongHistogramBuilder setDescription(String description) {
320310

321311
@Override
322312
public LongHistogramBuilder setUnit(String unit) {
323-
ValidationUtil.checkValidInstrumentUnit(unit);
324313
return this;
325314
}
326315

@@ -341,7 +330,6 @@ public DoubleGaugeBuilder setDescription(String description) {
341330

342331
@Override
343332
public DoubleGaugeBuilder setUnit(String unit) {
344-
ValidationUtil.checkValidInstrumentUnit(unit);
345333
return this;
346334
}
347335

@@ -371,7 +359,6 @@ public LongGaugeBuilder setDescription(String description) {
371359

372360
@Override
373361
public LongGaugeBuilder setUnit(String unit) {
374-
ValidationUtil.checkValidInstrumentUnit(unit);
375362
return this;
376363
}
377364

api/all/src/main/java/io/opentelemetry/api/trace/DefaultTracer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import io.opentelemetry.api.common.AttributeKey;
99
import io.opentelemetry.api.common.Attributes;
10-
import io.opentelemetry.api.internal.ValidationUtil;
10+
import io.opentelemetry.api.internal.ApiUsageLogger;
1111
import io.opentelemetry.context.Context;
1212
import java.util.concurrent.TimeUnit;
1313
import javax.annotation.Nullable;
@@ -50,7 +50,7 @@ public Span startSpan() {
5050
@Override
5151
public NoopSpanBuilder setParent(Context context) {
5252
if (context == null) {
53-
ValidationUtil.log("context is null");
53+
ApiUsageLogger.log("context is null");
5454
return this;
5555
}
5656
spanContext = Span.fromContext(context).getSpanContext();

api/all/src/main/java/io/opentelemetry/api/trace/Span.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import io.opentelemetry.api.common.AttributeKey;
1212
import io.opentelemetry.api.common.Attributes;
13-
import io.opentelemetry.api.internal.ValidationUtil;
13+
import io.opentelemetry.api.internal.ApiUsageLogger;
1414
import io.opentelemetry.context.Context;
1515
import io.opentelemetry.context.ImplicitContextKeyed;
1616
import java.time.Instant;
@@ -43,7 +43,7 @@ static Span current() {
4343
*/
4444
static Span fromContext(Context context) {
4545
if (context == null) {
46-
ValidationUtil.log("context is null");
46+
ApiUsageLogger.log("context is null");
4747
return Span.getInvalid();
4848
}
4949
Span span = context.get(SpanContextKey.KEY);
@@ -57,7 +57,7 @@ static Span fromContext(Context context) {
5757
@Nullable
5858
static Span fromContextOrNull(Context context) {
5959
if (context == null) {
60-
ValidationUtil.log("context is null");
60+
ApiUsageLogger.log("context is null");
6161
return null;
6262
}
6363
return context.get(SpanContextKey.KEY);
@@ -78,7 +78,7 @@ static Span getInvalid() {
7878
*/
7979
static Span wrap(SpanContext spanContext) {
8080
if (spanContext == null) {
81-
ValidationUtil.log("context is null");
81+
ApiUsageLogger.log("context is null");
8282
return getInvalid();
8383
}
8484
if (!spanContext.isValid()) {

api/all/src/main/java/io/opentelemetry/api/trace/SpanId.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
package io.opentelemetry.api.trace;
77

8+
import io.opentelemetry.api.internal.ApiUsageLogger;
89
import io.opentelemetry.api.internal.OtelEncodingUtils;
910
import io.opentelemetry.api.internal.TemporaryBuffers;
10-
import io.opentelemetry.api.internal.ValidationUtil;
1111
import javax.annotation.concurrent.Immutable;
1212

1313
/**
@@ -73,7 +73,7 @@ public static boolean isValid(CharSequence spanId) {
7373
*/
7474
public static String fromBytes(byte[] spanIdBytes) {
7575
if (spanIdBytes == null || spanIdBytes.length < BYTES_LENGTH) {
76-
ValidationUtil.log("spanIdBytes is null or too short");
76+
ApiUsageLogger.log("spanIdBytes is null or too short");
7777
return INVALID;
7878
}
7979
char[] result = TemporaryBuffers.chars(HEX_LENGTH);

api/all/src/main/java/io/opentelemetry/api/trace/TraceId.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
package io.opentelemetry.api.trace;
77

8+
import io.opentelemetry.api.internal.ApiUsageLogger;
89
import io.opentelemetry.api.internal.OtelEncodingUtils;
910
import io.opentelemetry.api.internal.TemporaryBuffers;
10-
import io.opentelemetry.api.internal.ValidationUtil;
1111
import javax.annotation.concurrent.Immutable;
1212

1313
/**
@@ -77,7 +77,7 @@ public static boolean isValid(CharSequence traceId) {
7777
*/
7878
public static String fromBytes(byte[] traceIdBytes) {
7979
if (traceIdBytes == null || traceIdBytes.length < BYTES_LENGTH) {
80-
ValidationUtil.log("traceIdBytes is null or too short");
80+
ApiUsageLogger.log("traceIdBytes is null or too short");
8181
return INVALID;
8282
}
8383
char[] result = TemporaryBuffers.chars(HEX_LENGTH);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.api.internal;
7+
8+
import static java.util.logging.Level.WARNING;
9+
10+
import io.github.netmikey.logunit.api.LogCapturer;
11+
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.extension.RegisterExtension;
13+
14+
class ApiUsageLoggerTest {
15+
16+
@RegisterExtension
17+
LogCapturer apiUsageLogs = LogCapturer.create().captureForLogger(ApiUsageLogger.LOGGER_NAME);
18+
19+
@Test
20+
void log() {
21+
ApiUsageLogger.log("thing", WARNING);
22+
apiUsageLogs.assertContains("thing");
23+
}
24+
}

0 commit comments

Comments
 (0)