diff --git a/instrumentation-api-incubator/build.gradle.kts b/instrumentation-api-incubator/build.gradle.kts index 45924c2b1882..2a0d8dc8bd50 100644 --- a/instrumentation-api-incubator/build.gradle.kts +++ b/instrumentation-api-incubator/build.gradle.kts @@ -91,14 +91,14 @@ tasks { val testStableSemconv by registering(Test::class) { testClassesDirs = sourceSets.test.get().output.classesDirs classpath = sourceSets.test.get().runtimeClasspath - jvmArgs("-Dotel.semconv-stability.opt-in=database,code,service.peer") + jvmArgs("-Dotel.semconv-stability.opt-in=database,code,service.peer,rpc") inputs.dir(jflexOutputDir) } val testBothSemconv by registering(Test::class) { testClassesDirs = sourceSets.test.get().output.classesDirs classpath = sourceSets.test.get().runtimeClasspath - jvmArgs("-Dotel.semconv-stability.opt-in=database/dup,code/dup,service.peer/dup") + jvmArgs("-Dotel.semconv-stability.opt-in=database/dup,code/dup,service.peer/dup,rpc/dup") inputs.dir(jflexOutputDir) } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SemconvStability.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SemconvStability.java index 94963ef35190..6547efca8950 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SemconvStability.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SemconvStability.java @@ -27,6 +27,9 @@ public final class SemconvStability { private static final boolean emitOldServicePeerSemconv; private static final boolean emitStableServicePeerSemconv; + private static final boolean emitOldRpcSemconv; + private static final boolean emitStableRpcSemconv; + static { boolean oldDatabase = true; boolean stableDatabase = false; @@ -37,6 +40,9 @@ public final class SemconvStability { boolean oldServicePeer = true; boolean stableServicePeer = false; + boolean oldRpc = true; + boolean stableRpc = false; + String value = System.getProperty("otel.semconv-stability.opt-in"); if (value == null) { value = System.getenv("OTEL_SEMCONV_STABILITY_OPT_IN"); @@ -73,6 +79,15 @@ public final class SemconvStability { oldServicePeer = true; stableServicePeer = true; } + + if (values.contains("rpc")) { + oldRpc = false; + stableRpc = true; + } + if (values.contains("rpc/dup")) { + oldRpc = true; + stableRpc = true; + } } emitOldDatabaseSemconv = oldDatabase; @@ -83,6 +98,9 @@ public final class SemconvStability { emitOldServicePeerSemconv = oldServicePeer; emitStableServicePeerSemconv = stableServicePeer; + + emitOldRpcSemconv = oldRpc; + emitStableRpcSemconv = stableRpc; } public static boolean emitOldDatabaseSemconv() { @@ -134,5 +152,25 @@ public static boolean isEmitStableCodeSemconv() { return emitStableCodeSemconv; } + public static boolean emitOldRpcSemconv() { + return emitOldRpcSemconv; + } + + public static boolean emitStableRpcSemconv() { + return emitStableRpcSemconv; + } + + private static final Map rpcSystemNameMap = new HashMap<>(); + + static { + rpcSystemNameMap.put("apache_dubbo", "dubbo"); + rpcSystemNameMap.put("connect_rpc", "connectrpc"); + } + + public static String stableRpcSystemName(String oldRpcSystem) { + String rpcSystemName = rpcSystemNameMap.get(oldRpcSystem); + return rpcSystemName != null ? rpcSystemName : oldRpcSystem; + } + private SemconvStability() {} }