Forráskód Böngészése

Upgrade OpenTelemetry API and remove workaround (#89438)

Closes #89414. Remove the workaround from #89135 that addressed #89107,
and instead upgrade the OpenTelemetry API, which contains a fix for the
underlying issue.
Rory Hunter 3 éve
szülő
commit
c541610fb5

+ 9 - 9
gradle/verification-metadata.xml

@@ -1254,19 +1254,19 @@
             <sha256 value="5432d2e9a1bdc8a0e835c6bce52b9d767fbf688cc8892432cff97c3389894b46" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="io.opentelemetry" name="opentelemetry-api" version="1.15.0">
-         <artifact name="opentelemetry-api-1.15.0.jar">
-            <sha256 value="765999a64656f71c5ae22ba5942993f117af0ee277ef3f08d6e90dc765a3ed57" origin="Generated by Gradle"/>
+      <component group="io.opentelemetry" name="opentelemetry-api" version="1.17.0">
+         <artifact name="opentelemetry-api-1.17.0.jar">
+            <sha256 value="dce58a21caef0c6be082ce5ec86ad75f3017744a029a454e068871c110ae029c" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="io.opentelemetry" name="opentelemetry-context" version="1.15.0">
-         <artifact name="opentelemetry-context-1.15.0.jar">
-            <sha256 value="fa47bc74477de40b6654454f33819fc619389d1b9bdb914bf78eea36d13998c9" origin="Generated by Gradle"/>
+      <component group="io.opentelemetry" name="opentelemetry-context" version="1.17.0">
+         <artifact name="opentelemetry-context-1.17.0.jar">
+            <sha256 value="ac5b7a7bda673b08d62d4dafe23a105ec4a7d0b7a967cda5597dcca994988227" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="io.opentelemetry" name="opentelemetry-semconv" version="1.15.0-alpha">
-         <artifact name="opentelemetry-semconv-1.15.0-alpha.jar">
-            <sha256 value="a9c5d6178299f82325da14334e08b7926e9525ed9aaca6323ce83786913ba369" origin="Generated by Gradle"/>
+      <component group="io.opentelemetry" name="opentelemetry-semconv" version="1.17.0-alpha">
+         <artifact name="opentelemetry-semconv-1.17.0-alpha.jar">
+            <sha256 value="272f310e8c3e9adad07a2b8910a520ce5c58d1e209661d57b5bd30e8b1614402" origin="Generated by Gradle"/>
          </artifact>
       </component>
       <component group="io.ous" name="jtoml" version="2.0.0">

+ 5 - 3
modules/apm/build.gradle

@@ -12,10 +12,12 @@ esplugin {
   classname 'org.elasticsearch.tracing.apm.APM'
 }
 
+def otelVersion = '1.17.0'
+
 dependencies {
-  implementation "io.opentelemetry:opentelemetry-api:1.15.0"
-  implementation "io.opentelemetry:opentelemetry-context:1.15.0"
-  implementation "io.opentelemetry:opentelemetry-semconv:1.15.0-alpha"
+  implementation "io.opentelemetry:opentelemetry-api:${otelVersion}"
+  implementation "io.opentelemetry:opentelemetry-context:${otelVersion}"
+  implementation "io.opentelemetry:opentelemetry-semconv:${otelVersion}-alpha"
   runtimeOnly    "co.elastic.apm:elastic-apm-agent:1.33.0"
 }
 

+ 7 - 13
modules/apm/src/main/java/org/elasticsearch/tracing/apm/APMTracer.java

@@ -286,7 +286,7 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void addError(String spanId, Throwable throwable) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.get(spanId));
+        final var span = Span.fromContextOrNull(spans.get(spanId));
         if (span != null) {
             span.recordException(throwable);
         }
@@ -294,7 +294,7 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void setAttribute(String spanId, String key, boolean value) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.get(spanId));
+        final var span = Span.fromContextOrNull(spans.get(spanId));
         if (span != null) {
             span.setAttribute(key, value);
         }
@@ -302,7 +302,7 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void setAttribute(String spanId, String key, double value) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.get(spanId));
+        final var span = Span.fromContextOrNull(spans.get(spanId));
         if (span != null) {
             span.setAttribute(key, value);
         }
@@ -310,7 +310,7 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void setAttribute(String spanId, String key, long value) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.get(spanId));
+        final var span = Span.fromContextOrNull(spans.get(spanId));
         if (span != null) {
             span.setAttribute(key, value);
         }
@@ -318,7 +318,7 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void setAttribute(String spanId, String key, String value) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.get(spanId));
+        final var span = Span.fromContextOrNull(spans.get(spanId));
         if (span != null) {
             span.setAttribute(key, value);
         }
@@ -326,7 +326,7 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void stopTrace(String spanId) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.remove(spanId));
+        final var span = Span.fromContextOrNull(spans.remove(spanId));
         if (span != null) {
             logger.trace("Finishing trace [{}]", spanId);
             span.end();
@@ -335,18 +335,12 @@ public class APMTracer extends AbstractLifecycleComponent implements org.elastic
 
     @Override
     public void addEvent(String spanId, String eventName) {
-        final var span = spanFromContextOrNullWithoutLogging(spans.get(spanId));
+        final var span = Span.fromContextOrNull(spans.get(spanId));
         if (span != null) {
             span.addEvent(eventName);
         }
     }
 
-    private static Span spanFromContextOrNullWithoutLogging(Context context) {
-        // Span.fromContextOrNull(null) is super-expensive today, see https://github.com/elastic/elasticsearch/issues/89107
-        // and https://github.com/open-telemetry/opentelemetry-java/pull/4663
-        return context == null ? null : Span.fromContextOrNull(context);
-    }
-
     private static class MapKeyGetter implements TextMapGetter<Map<String, String>> {
 
         @Override