diff --git a/CHANGES.md b/CHANGES.md index c172f6fa0..2febc11b5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -41,6 +41,7 @@ Release Notes. * 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 bb88bc153..a32272fb3 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 reactor.core.publisher.Mono; import java.lang.reflect.Method; import java.net.URI; -import java.util.function.BiConsumer; public class WebFluxWebClientInterceptor implements InstanceMethodsAroundInterceptorV2 { @@ -79,15 +78,12 @@ public class WebFluxWebClientInterceptor implements InstanceMethodsAroundInterce } Mono ret1 = (Mono) ret; AbstractSpan span = (AbstractSpan) context.getContext(); - return ret1.doAfterSuccessOrError(new BiConsumer() { - @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 -> {