Skip to content

Commit 1599e23

Browse files
committed
fix
1 parent 1f986c1 commit 1599e23

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/HeaderUtil.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ class HeaderUtil {
2020
static {
2121
// since spring web 7.0
2222
MethodHandle methodHandle =
23-
findGetHeadersMethod(MethodType.methodType(List.class, String.class, List.class));
23+
findGetHeadersMethod(MethodType.methodType(List.class, String.class));
2424
if (methodHandle == null) {
2525
// up to spring web 7.0
2626
methodHandle =
27-
findGetHeadersMethod(MethodType.methodType(Object.class, Object.class, Object.class));
27+
findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
2828
}
2929
GET_HEADERS = methodHandle;
3030
}
@@ -41,7 +41,11 @@ private static MethodHandle findGetHeadersMethod(MethodType methodType) {
4141
static List<String> getHeader(HttpHeaders headers, String name) {
4242
if (GET_HEADERS != null) {
4343
try {
44-
return (List<String>) GET_HEADERS.invoke(headers, name, emptyList());
44+
List<String> result = (List<String>) GET_HEADERS.invoke(headers, name);
45+
if (result == null) {
46+
return emptyList();
47+
}
48+
return result;
4549
} catch (Throwable t) {
4650
// ignore
4751
}

instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ public enum WebClientHttpAttributesGetter
3030
static {
3131
// since webflux 7.0
3232
MethodHandle methodHandle =
33-
findGetHeadersMethod(MethodType.methodType(List.class, String.class, List.class));
33+
findGetHeadersMethod(MethodType.methodType(List.class, String.class));
3434
if (methodHandle == null) {
3535
// up to webflux 7.0
3636
methodHandle =
37-
findGetHeadersMethod(MethodType.methodType(Object.class, Object.class, Object.class));
37+
findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
3838
}
3939
GET_HEADERS = methodHandle;
4040
}
4141

4242
private static MethodHandle findGetHeadersMethod(MethodType methodType) {
4343
try {
44-
return MethodHandles.lookup().findVirtual(HttpHeaders.class, "getOrDefault", methodType);
44+
return MethodHandles.lookup().findVirtual(HttpHeaders.class, "get", methodType);
4545
} catch (Throwable t) {
4646
return null;
4747
}
@@ -62,7 +62,11 @@ public String getHttpRequestMethod(ClientRequest request) {
6262
public List<String> getHttpRequestHeader(ClientRequest request, String name) {
6363
if (GET_HEADERS != null) {
6464
try {
65-
return (List<String>) GET_HEADERS.invoke(request.headers(), name, emptyList());
65+
List<String> result = (List<String>) GET_HEADERS.invoke(request, name);
66+
if (result == null) {
67+
return emptyList();
68+
}
69+
return result;
6670
} catch (Throwable t) {
6771
// ignore
6872
}

0 commit comments

Comments
 (0)