Skip to content

Commit 74c0683

Browse files
authored
add Nullaway to instrumentation API incubator (#14459)
1 parent 3ae2eee commit 74c0683

14 files changed

+39
-28
lines changed

instrumentation-api-incubator/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66
id("otel.jacoco-conventions")
77
id("otel.japicmp-conventions")
88
id("otel.publish-conventions")
9+
id("otel.nullaway-conventions")
910
}
1011

1112
group = "io.opentelemetry.instrumentation"

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpClientInstrumenterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private DefaultHttpClientInstrumenterBuilder(
7171
String instrumentationName,
7272
OpenTelemetry openTelemetry,
7373
HttpClientAttributesGetter<REQUEST, RESPONSE> attributesGetter,
74-
TextMapSetter<REQUEST> headerSetter) {
74+
@Nullable TextMapSetter<REQUEST> headerSetter) {
7575
this.instrumentationName = Objects.requireNonNull(instrumentationName, "instrumentationName");
7676
this.openTelemetry = Objects.requireNonNull(openTelemetry, "openTelemetry");
7777
this.attributesGetter = Objects.requireNonNull(attributesGetter, "attributesGetter");

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpServerInstrumenterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private DefaultHttpServerInstrumenterBuilder(
6464
String instrumentationName,
6565
OpenTelemetry openTelemetry,
6666
HttpServerAttributesGetter<REQUEST, RESPONSE> attributesGetter,
67-
TextMapGetter<REQUEST> headerGetter) {
67+
@Nullable TextMapGetter<REQUEST> headerGetter) {
6868
this.instrumentationName = Objects.requireNonNull(instrumentationName, "instrumentationName");
6969
this.openTelemetry = Objects.requireNonNull(openTelemetry, "openTelemetry");
7070
this.attributesGetter = Objects.requireNonNull(attributesGetter, "attributesGetter");

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/config/internal/CommonConfig.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import java.util.HashSet;
1818
import java.util.List;
1919
import java.util.Set;
20-
import java.util.function.Function;
2120
import java.util.function.Supplier;
21+
import javax.annotation.Nullable;
2222

2323
/**
2424
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
@@ -41,6 +41,11 @@ public final class CommonConfig {
4141
private final String loggingSpanIdKey;
4242
private final String loggingTraceFlagsKey;
4343

44+
interface ValueProvider<T> {
45+
@Nullable
46+
T get(ConfigProvider configProvider);
47+
}
48+
4449
public CommonConfig(InstrumentationConfig config) {
4550
peerServiceResolver =
4651
PeerServiceResolver.create(
@@ -159,12 +164,12 @@ public String getTraceFlagsKey() {
159164

160165
private static <T> T getFromConfigProviderOrFallback(
161166
InstrumentationConfig config,
162-
Function<ConfigProvider, T> getFromConfigProvider,
167+
ValueProvider<T> getFromConfigProvider,
163168
T defaultValue,
164169
Supplier<T> fallback) {
165170
ConfigProvider configProvider = config.getConfigProvider();
166171
if (configProvider != null) {
167-
T value = getFromConfigProvider.apply(configProvider);
172+
T value = getFromConfigProvider.get(configProvider);
168173
return value != null ? value : defaultValue;
169174
}
170175
// fallback doesn't return null, so we can safely call it

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientSpanNameExtractor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
99
import io.opentelemetry.instrumentation.api.internal.SemconvStability;
1010
import java.util.Collection;
11+
import javax.annotation.Nullable;
1112

1213
public abstract class DbClientSpanNameExtractor<REQUEST> implements SpanNameExtractor<REQUEST> {
1314

@@ -42,7 +43,8 @@ public static <REQUEST> SpanNameExtractor<REQUEST> create(
4243

4344
private DbClientSpanNameExtractor() {}
4445

45-
protected String computeSpanName(String dbName, String operation, String mainIdentifier) {
46+
protected String computeSpanName(
47+
@Nullable String dbName, @Nullable String operation, @Nullable String mainIdentifier) {
4648
if (operation == null) {
4749
return dbName == null ? DEFAULT_SPAN_NAME : dbName;
4850
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/MultiQuery.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
import java.util.Collection;
99
import java.util.LinkedHashSet;
1010
import java.util.Set;
11+
import javax.annotation.Nullable;
1112

1213
class MultiQuery {
1314

14-
private final String mainIdentifier;
15-
private final String operation;
15+
@Nullable private final String mainIdentifier;
16+
@Nullable private final String operation;
1617
private final Set<String> statements;
1718

18-
private MultiQuery(String mainIdentifier, String operation, Set<String> statements) {
19+
private MultiQuery(
20+
@Nullable String mainIdentifier, @Nullable String operation, Set<String> statements) {
1921
this.mainIdentifier = mainIdentifier;
2022
this.operation = operation;
2123
this.statements = statements;
@@ -40,10 +42,12 @@ static MultiQuery analyze(
4042
uniqueMainIdentifier.getValue(), uniqueOperation.getValue(), uniqueStatements);
4143
}
4244

45+
@Nullable
4346
public String getMainIdentifier() {
4447
return mainIdentifier;
4548
}
4649

50+
@Nullable
4751
public String getOperation() {
4852
return operation;
4953
}
@@ -53,10 +57,10 @@ public Set<String> getStatements() {
5357
}
5458

5559
private static class UniqueValue {
56-
private String value;
60+
@Nullable private String value;
5761
private boolean valid = true;
5862

59-
void set(String value) {
63+
void set(@Nullable String value) {
6064
if (!valid) {
6165
return;
6266
}
@@ -67,6 +71,7 @@ void set(String value) {
6771
}
6872
}
6973

74+
@Nullable
7075
String getValue() {
7176
return valid ? value : null;
7277
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesGetter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Collection;
99
import java.util.Collections;
1010
import java.util.Map;
11+
import javax.annotation.Nullable;
1112

1213
/**
1314
* An interface for getting SQL database client attributes.
@@ -33,6 +34,7 @@ public interface SqlClientAttributesGetter<REQUEST, RESPONSE>
3334
Collection<String> getRawQueryTexts(REQUEST request);
3435

3536
// TODO: make this required to implement
37+
@Nullable
3638
default Long getBatchSize(REQUEST request) {
3739
return null;
3840
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlStatementSanitizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public SqlStatementInfo sanitize(@Nullable String statement, SqlDialect dialect)
5151
CacheKey.create(statement, dialect), k -> sanitizeImpl(statement, dialect));
5252
}
5353

54-
private static SqlStatementInfo sanitizeImpl(@Nullable String statement, SqlDialect dialect) {
54+
private static SqlStatementInfo sanitizeImpl(String statement, SqlDialect dialect) {
5555
supportability.incrementCounter(SQL_STATEMENT_SANITIZER_CACHE_MISS);
5656
return AutoSqlSanitizer.sanitize(statement, dialect);
5757
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiAttributesGetter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@ public interface GenAiAttributesGetter<REQUEST, RESPONSE> {
5050
@Nullable
5151
Double getRequestTopP(REQUEST request);
5252

53-
List<String> getResponseFinishReasons(REQUEST request, RESPONSE response);
53+
List<String> getResponseFinishReasons(REQUEST request, @Nullable RESPONSE response);
5454

5555
@Nullable
56-
String getResponseId(REQUEST request, RESPONSE response);
56+
String getResponseId(REQUEST request, @Nullable RESPONSE response);
5757

5858
@Nullable
59-
String getResponseModel(REQUEST request, RESPONSE response);
59+
String getResponseModel(REQUEST request, @Nullable RESPONSE response);
6060

6161
@Nullable
62-
Long getUsageInputTokens(REQUEST request, RESPONSE response);
62+
Long getUsageInputTokens(REQUEST request, @Nullable RESPONSE response);
6363

6464
@Nullable
65-
Long getUsageOutputTokens(REQUEST request, RESPONSE response);
65+
Long getUsageOutputTokens(REQUEST request, @Nullable RESPONSE response);
6666
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpClientPeerServiceAttributesExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void onEnd(
7676

7777
@Nullable
7878
private String mapToPeerService(
79-
@Nullable String host, @Nullable Integer port, @Nullable Supplier<String> pathSupplier) {
79+
@Nullable String host, @Nullable Integer port, Supplier<String> pathSupplier) {
8080
if (host == null) {
8181
return null;
8282
}

0 commit comments

Comments
 (0)