Skip to content

Commit 651cc0f

Browse files
authored
Pass attribute keys to filter not raw headers names (#202)
Signed-off-by: Pavol Loffay <[email protected]>
1 parent 67bec33 commit 651cc0f

File tree

7 files changed

+30
-27
lines changed

7 files changed

+30
-27
lines changed

filter-api/src/main/java/org/hypertrace/agent/filter/mock/MockFilter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ class MockFilter implements Filter {
2828
@Override
2929
public boolean evaluateRequestHeaders(Span span, Map<String, String> headers) {
3030
if (headers.containsKey("http.request.header.mockblock")
31-
|| headers.containsKey("rpc.request.header.mockblock")
32-
|| headers.containsKey("mockblock")) {
31+
|| headers.containsKey("rpc.request.metadata.mockblock")) {
3332
span.setAttribute("hypertrace.mock.filter.result", "true");
3433
return true;
3534
}

instrumentation/grpc-1.5/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/grpc/v1_5/GrpcSpanDecorator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.LinkedHashMap;
2727
import java.util.Map;
2828
import java.util.function.Function;
29+
import org.hypertrace.agent.core.HypertraceSemanticAttributes;
2930
import org.slf4j.Logger;
3031
import org.slf4j.LoggerFactory;
3132

@@ -64,10 +65,9 @@ public static void addMetadataAttributes(
6465
}
6566
}
6667

67-
public static void addMetadataAttributes(
68-
Map<String, String> metadata, Span span, Function<String, AttributeKey<String>> keySupplier) {
68+
public static void addMetadataAttributes(Map<String, String> metadata, Span span) {
6969
for (Map.Entry<String, String> entry : metadata.entrySet()) {
70-
span.setAttribute(keySupplier.apply(entry.getKey()), entry.getValue());
70+
span.setAttribute(entry.getKey(), entry.getValue());
7171
}
7272
}
7373

@@ -81,7 +81,7 @@ public static Map<String, String> metadataToMap(Metadata metadata) {
8181
Iterable<String> stringValues = metadata.getAll(stringKey);
8282
for (String stringValue : stringValues) {
8383
key = GrpcSemanticAttributes.removeHypertracePrefixAndAddColon(key);
84-
mapHeaders.put(key, stringValue);
84+
mapHeaders.put(HypertraceSemanticAttributes.rpcRequestMetadata(key).getKey(), stringValue);
8585
}
8686
}
8787
return mapHeaders;

instrumentation/grpc-1.5/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/grpc/v1_5/server/GrpcServerInterceptor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
4747
Map<String, String> mapHeaders = GrpcSpanDecorator.metadataToMap(headers);
4848

4949
if (HypertraceConfig.get().getDataCapture().getRpcMetadata().getRequest().getValue()) {
50-
GrpcSpanDecorator.addMetadataAttributes(
51-
mapHeaders, currentSpan, HypertraceSemanticAttributes::rpcRequestMetadata);
50+
GrpcSpanDecorator.addMetadataAttributes(mapHeaders, currentSpan);
5251
}
5352

5453
boolean block = FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, mapHeaders);

instrumentation/servlet/servlet-2.3/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v2_3/Servlet2BodyInstrumentationModule.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
2727

2828
import com.google.auto.service.AutoService;
29+
import io.opentelemetry.api.common.AttributeKey;
2930
import io.opentelemetry.api.trace.Span;
3031
import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
3132
import io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.common.ServletSpanDecorator;
@@ -146,18 +147,18 @@ public static boolean start(
146147
@SuppressWarnings("unchecked")
147148
Enumeration<String> headerNames = httpRequest.getHeaderNames();
148149
Map<String, String> headers = new HashMap<>();
149-
150150
while (headerNames.hasMoreElements()) {
151151
String headerName = headerNames.nextElement();
152152
String headerValue = httpRequest.getHeader(headerName);
153+
AttributeKey<String> attributeKey =
154+
HypertraceSemanticAttributes.httpRequestHeader(headerName);
155+
153156
if (HypertraceConfig.get().getDataCapture().getHttpHeaders().getRequest().getValue()) {
154-
currentSpan.setAttribute(
155-
HypertraceSemanticAttributes.httpRequestHeader(headerName), headerValue);
157+
currentSpan.setAttribute(attributeKey, headerValue);
156158
}
157-
headers.put(headerName, headerValue);
159+
headers.put(attributeKey.getKey(), headerValue);
158160
}
159-
boolean block = FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, headers);
160-
if (block) {
161+
if (FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, headers)) {
161162
httpResponse.setStatus(403);
162163
return true;
163164
}

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
2727

2828
import com.google.auto.service.AutoService;
29+
import io.opentelemetry.api.common.AttributeKey;
2930
import io.opentelemetry.api.trace.Span;
3031
import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
3132
import io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.common.ServletSpanDecorator;
@@ -142,14 +143,15 @@ public static boolean start(
142143
while (headerNames.hasMoreElements()) {
143144
String headerName = headerNames.nextElement();
144145
String headerValue = httpRequest.getHeader(headerName);
146+
AttributeKey<String> attributeKey =
147+
HypertraceSemanticAttributes.httpRequestHeader(headerName);
148+
145149
if (HypertraceConfig.get().getDataCapture().getHttpHeaders().getRequest().getValue()) {
146-
currentSpan.setAttribute(
147-
HypertraceSemanticAttributes.httpRequestHeader(headerName), headerValue);
150+
currentSpan.setAttribute(attributeKey, headerValue);
148151
}
149-
headers.put(headerName, headerValue);
152+
headers.put(attributeKey.getKey(), headerValue);
150153
}
151-
boolean block = FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, headers);
152-
if (block) {
154+
if (FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, headers)) {
153155
httpResponse.setStatus(403);
154156
return true;
155157
}

instrumentation/servlet/servlet-3.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_1/Servlet31Advice.java

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

1717
package io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_1;
1818

19+
import io.opentelemetry.api.common.AttributeKey;
1920
import io.opentelemetry.api.trace.Span;
2021
import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
2122
import io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.common.ServletSpanDecorator;
@@ -79,15 +80,15 @@ public static boolean start(
7980
while (headerNames.hasMoreElements()) {
8081
String headerName = headerNames.nextElement();
8182
String headerValue = httpRequest.getHeader(headerName);
83+
AttributeKey<String> attributeKey =
84+
HypertraceSemanticAttributes.httpRequestHeader(headerName);
8285

8386
if (HypertraceConfig.get().getDataCapture().getHttpHeaders().getRequest().getValue()) {
84-
currentSpan.setAttribute(
85-
HypertraceSemanticAttributes.httpRequestHeader(headerName), headerValue);
87+
currentSpan.setAttribute(attributeKey, headerValue);
8688
}
87-
headers.put(headerName, headerValue);
89+
headers.put(attributeKey.getKey(), headerValue);
8890
}
89-
boolean block = FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, headers);
90-
if (block) {
91+
if (FilterRegistry.getFilter().evaluateRequestHeaders(currentSpan, headers)) {
9192
httpResponse.setStatus(403);
9293
return true;
9394
}

smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,12 @@ public abstract class AbstractSmokeTest {
6363
private static OpenTelemetryStorage openTelemetryStorage;
6464

6565
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
66+
private static final int DEFAULT_TIMEOUT_SECONDS = 30;
6667
protected OkHttpClient client =
6768
new OkHttpClient.Builder()
68-
.connectTimeout(30, TimeUnit.SECONDS)
69-
.readTimeout(30, TimeUnit.SECONDS)
70-
.writeTimeout(30, TimeUnit.SECONDS)
69+
.connectTimeout(DEFAULT_TIMEOUT_SECONDS, TimeUnit.SECONDS)
70+
.readTimeout(DEFAULT_TIMEOUT_SECONDS, TimeUnit.SECONDS)
71+
.writeTimeout(DEFAULT_TIMEOUT_SECONDS, TimeUnit.SECONDS)
7172
.followRedirects(true)
7273
.build();
7374

0 commit comments

Comments
 (0)