Skip to content

Commit 293df5f

Browse files
committed
Add debug logging to flaky apache async client tests
1 parent dfe392e commit 293df5f

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ dependencies {
1717
tasks {
1818
withType<Test>().configureEach {
1919
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
20+
systemProperty("otel.instrumentation.pache-httpclient-5.debug", "true")
2021
}
2122
}

instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientInstrumentationModule.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0;
77

88
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
910
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1011
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1112
import java.util.Arrays;
@@ -20,6 +21,15 @@ public ApacheHttpClientInstrumentationModule() {
2021

2122
@Override
2223
public List<TypeInstrumentation> typeInstrumentations() {
24+
boolean debug =
25+
AgentInstrumentationConfig.get()
26+
.getBoolean("otel.instrumentation.pache-httpclient-5.debug", false);
27+
if (debug) {
28+
return Arrays.asList(
29+
new ApacheHttpClientInstrumentation(),
30+
new ApacheHttpAsyncClientInstrumentation(),
31+
new IoReactorInstrumentation());
32+
}
2333
return Arrays.asList(
2434
new ApacheHttpClientInstrumentation(), new ApacheHttpAsyncClientInstrumentation());
2535
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0;
7+
8+
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
9+
import static net.bytebuddy.matcher.ElementMatchers.named;
10+
import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
11+
12+
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
14+
import net.bytebuddy.asm.Advice;
15+
import net.bytebuddy.description.type.TypeDescription;
16+
import net.bytebuddy.matcher.ElementMatcher;
17+
18+
public class IoReactorInstrumentation implements TypeInstrumentation {
19+
20+
@Override
21+
public ElementMatcher<TypeDescription> typeMatcher() {
22+
return implementsInterface(named("org.apache.hc.core5.reactor.IOReactor"));
23+
}
24+
25+
@Override
26+
public void transform(TypeTransformer transformer) {
27+
transformer.applyAdviceToMethod(
28+
namedOneOf("close", "initiateShutdown"), this.getClass().getName() + "$CloseAdvice");
29+
}
30+
31+
@SuppressWarnings("unused")
32+
public static class CloseAdvice {
33+
34+
@SuppressWarnings("SystemOut")
35+
@Advice.OnMethodEnter(suppress = Throwable.class)
36+
public static void methodEnter(@Advice.This Object instance) {
37+
System.err.println("closing i/o reactor " + instance);
38+
new Exception().printStackTrace();
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)