Browse Source

Fix undertow instrumentation with http pipelining (#8400)

Lauri Tulmin 1 year ago
parent
commit
4bec515b15

+ 23 - 0
instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowIgnoredTypesConfigurer.java

@@ -0,0 +1,23 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.javaagent.instrumentation.undertow;
+
+import com.google.auto.service.AutoService;
+import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
+import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
+import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
+
+@AutoService(IgnoredTypesConfigurer.class)
+public class UndertowIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
+
+  @Override
+  public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
+    // When http pipelining is used HttpReadListener is passed to another worker thread to start
+    // processing next request when the context from the old request is still active. Prevent
+    // propagating context from the old request to the new one.
+    builder.ignoreTaskClass("io.undertow.server.protocol.http.HttpReadListener");
+  }
+}