Skip to content

Commit 894b326

Browse files
committed
fix
1 parent eae2f25 commit 894b326

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebHttpAttributesGetter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ enum SpringWebHttpAttributesGetter
6161

6262
// since spring web 7.0
6363
MethodHandle methodHandle =
64-
findGetHeadersMethod(MethodType.methodType(List.class, String.class, List.class));
64+
findGetHeadersMethod(MethodType.methodType(List.class, String.class));
6565
if (methodHandle == null) {
6666
// up to spring web 7.0
6767
methodHandle =
68-
findGetHeadersMethod(MethodType.methodType(Object.class, Object.class, Object.class));
68+
findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
6969
}
7070
GET_HEADERS = methodHandle;
7171

@@ -74,7 +74,7 @@ enum SpringWebHttpAttributesGetter
7474

7575
private static MethodHandle findGetHeadersMethod(MethodType methodType) {
7676
try {
77-
return MethodHandles.lookup().findVirtual(HttpHeaders.class, "getOrDefault", methodType);
77+
return MethodHandles.lookup().findVirtual(HttpHeaders.class, "get", methodType);
7878
} catch (Throwable t) {
7979
return null;
8080
}
@@ -100,7 +100,11 @@ public List<String> getHttpRequestHeader(HttpRequest httpRequest, String name) {
100100
private static List<String> getHeader(HttpHeaders headers, String name) {
101101
if (GET_HEADERS != null) {
102102
try {
103-
return (List<String>) GET_HEADERS.invoke(headers, name, emptyList());
103+
List<String> result = (List<String>) GET_HEADERS.invoke(headers, name);
104+
if (result == null) {
105+
return emptyList();
106+
}
107+
return result;
104108
} catch (Throwable t) {
105109
System.out.println("error getting headers " + t.getMessage());
106110
t.printStackTrace();

instrumentation/spring/spring-web/spring-web-3.1/library/src/main/resources/META-INF/native-image/io.opentelemetry.instrumentation/spring-web-3.1/reflect-config.json

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,20 @@
3131
"methods": [
3232
{
3333
"name": "getOrDefault",
34-
"parameterTypes": ["java.lang.String", "java.util.List"]
34+
"parameterTypes": ["java.lang.Object", "java.lang.Object"]
35+
}
36+
]
37+
},
38+
{
39+
"name": "org.springframework.http.HttpHeaders",
40+
"methods": [
41+
{
42+
"name": "get",
43+
"parameterTypes": ["java.lang.Object"]
3544
},
3645
{
3746
"name": "getOrDefault",
38-
"parameterTypes": ["java.lang.Object", "java.lang.Object"]
47+
"parameterTypes": ["java.lang.String", "java.util.List"]
3948
}
4049
]
4150
}

mise.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tools]
2-
java = "graalvm-community-25.0.0"
2+
java = "graalvm-community-25.0.1"
33
lychee = "0.21.0"
44

55
[settings]

0 commit comments

Comments
 (0)