fix: fix spring gateway plugin npe (#7389)
diff --git a/CHANGES.md b/CHANGES.md
index c172f6f..2febc11 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -41,6 +41,7 @@
* Remove the logic of generating instance name in `KafkaServiceManagementServiceClient` class.
* Improve `okhttp` plugin performance by optimizing Class.getDeclaredField().
* Fix `GRPCLogClientAppender` no context warning.
+* Fix `spring-webflux-5.x-webclient-plugin` NPE.
#### OAP-Backend
diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/webclient/WebFluxWebClientInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/webclient/WebFluxWebClientInterceptor.java
index bb88bc1..a32272f 100644
--- a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/webclient/WebFluxWebClientInterceptor.java
+++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/webclient/WebFluxWebClientInterceptor.java
@@ -34,7 +34,6 @@
import java.lang.reflect.Method;
import java.net.URI;
-import java.util.function.BiConsumer;
public class WebFluxWebClientInterceptor implements InstanceMethodsAroundInterceptorV2 {
@@ -79,15 +78,12 @@
}
Mono<ClientResponse> ret1 = (Mono<ClientResponse>) ret;
AbstractSpan span = (AbstractSpan) context.getContext();
- return ret1.doAfterSuccessOrError(new BiConsumer<ClientResponse, Throwable>() {
- @Override
- public void accept(ClientResponse clientResponse, Throwable throwable) {
- HttpStatus httpStatus = clientResponse.statusCode();
- if (httpStatus != null) {
- Tags.STATUS_CODE.set(span, Integer.toString(httpStatus.value()));
- if (httpStatus.isError()) {
- span.errorOccurred();
- }
+ return ret1.doOnSuccess(clientResponse -> {
+ HttpStatus httpStatus = clientResponse.statusCode();
+ if (httpStatus != null) {
+ Tags.STATUS_CODE.set(span, Integer.toString(httpStatus.value()));
+ if (httpStatus.isError()) {
+ span.errorOccurred();
}
}
}).doOnError(error -> {