Skip to content

Commit dbf7149

Browse files
authored
Fix snippet injection test (#8390)
1 parent 90e21aa commit dbf7149

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3Advice.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.javaagent.instrumentation.servlet.v3_0;
77

8+
import static io.opentelemetry.javaagent.instrumentation.servlet.v3_0.Servlet3Singletons.getSnippetInjectionHelper;
89
import static io.opentelemetry.javaagent.instrumentation.servlet.v3_0.Servlet3Singletons.helper;
910

1011
import io.opentelemetry.context.Context;
@@ -13,7 +14,6 @@
1314
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
1415
import io.opentelemetry.javaagent.bootstrap.http.HttpServerResponseCustomizerHolder;
1516
import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
16-
import io.opentelemetry.javaagent.bootstrap.servlet.ExperimentalSnippetHolder;
1717
import io.opentelemetry.javaagent.bootstrap.servlet.MappingResolver;
1818
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
1919
import io.opentelemetry.javaagent.instrumentation.servlet.v3_0.snippet.SnippetInjectingResponseWrapper;
@@ -43,7 +43,7 @@ public static void onEnter(
4343
}
4444
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
4545

46-
String snippet = ExperimentalSnippetHolder.getSnippet();
46+
String snippet = getSnippetInjectionHelper().getSnippet();
4747
if (!snippet.isEmpty()
4848
&& !((HttpServletResponse) response)
4949
.containsHeader(SnippetInjectingResponseWrapper.FAKE_SNIPPET_HEADER)) {

instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3Singletons.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public final class Servlet3Singletons {
4242
ResponseInstrumenterFactory.createInstrumenter(INSTRUMENTATION_NAME);
4343

4444
private static final OutputStreamSnippetInjectionHelper SNIPPET_INJECTION_HELPER =
45-
new OutputStreamSnippetInjectionHelper(ExperimentalSnippetHolder.getSnippet());
45+
new OutputStreamSnippetInjectionHelper(() -> ExperimentalSnippetHolder.getSnippet());
4646

4747
public static ServletHelper<HttpServletRequest, HttpServletResponse> helper() {
4848
return HELPER;

instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/snippet/OutputStreamSnippetInjectionHelper.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,26 @@
1010
import java.io.IOException;
1111
import java.io.OutputStream;
1212
import java.io.UnsupportedEncodingException;
13+
import java.util.function.Supplier;
1314
import java.util.logging.Logger;
1415

1516
public class OutputStreamSnippetInjectionHelper {
1617

1718
private static final Logger logger =
1819
Logger.getLogger(OutputStreamSnippetInjectionHelper.class.getName());
1920

20-
private final String snippet;
21+
private final Supplier<String> snippetSupplier;
2122

2223
public OutputStreamSnippetInjectionHelper(String snippet) {
23-
this.snippet = snippet;
24+
this(() -> snippet);
25+
}
26+
27+
public OutputStreamSnippetInjectionHelper(Supplier<String> snippetSupplier) {
28+
this.snippetSupplier = snippetSupplier;
29+
}
30+
31+
public String getSnippet() {
32+
return snippetSupplier.get();
2433
}
2534

2635
/**
@@ -53,7 +62,7 @@ public boolean handleWrite(
5362
}
5463
byte[] snippetBytes;
5564
try {
56-
snippetBytes = snippet.getBytes(state.getCharacterEncoding());
65+
snippetBytes = snippetSupplier.get().getBytes(state.getCharacterEncoding());
5766
} catch (UnsupportedEncodingException e) {
5867
logger.log(FINE, "UnsupportedEncodingException", e);
5968
return false;
@@ -79,7 +88,7 @@ public boolean handleWrite(InjectionState state, OutputStream out, int b) throws
7988
}
8089
byte[] snippetBytes;
8190
try {
82-
snippetBytes = snippet.getBytes(state.getCharacterEncoding());
91+
snippetBytes = snippetSupplier.get().getBytes(state.getCharacterEncoding());
8392
} catch (UnsupportedEncodingException e) {
8493
logger.log(FINE, "UnsupportedEncodingException", e);
8594
return false;

instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/snippet/SnippetInjectingResponseWrapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ private static MethodHandle findSetContentLengthLongMethod() {
129129
MethodType.methodType(void.class),
130130
SnippetInjectingResponseWrapper.class);
131131
} catch (NoSuchMethodException | IllegalAccessException e) {
132-
logger.log(FINE, "SnippetInjectingResponseWrapper setContentLengthLong", e);
133132
return null;
134133
}
135134
}

0 commit comments

Comments
 (0)