diff --git a/dubbo-plugin/dubbo-reactive/src/main/java/org/apache/dubbo/reactive/calls/ReactorServerCalls.java b/dubbo-plugin/dubbo-reactive/src/main/java/org/apache/dubbo/reactive/calls/ReactorServerCalls.java index 24218a1b08..8cf1ef3ed8 100644 --- a/dubbo-plugin/dubbo-reactive/src/main/java/org/apache/dubbo/reactive/calls/ReactorServerCalls.java +++ b/dubbo-plugin/dubbo-reactive/src/main/java/org/apache/dubbo/reactive/calls/ReactorServerCalls.java @@ -48,13 +48,11 @@ public final class ReactorServerCalls { public static void oneToOne(T request, StreamObserver responseObserver, Function, Mono> func) { try { func.apply(Mono.just(request)) + .switchIfEmpty(Mono.error(TriRpcStatus.NOT_FOUND.asException())) .subscribe( - res -> { - responseObserver.onNext(res); - responseObserver.onCompleted(); - }, + responseObserver::onNext, throwable -> doOnResponseHasException(throwable, responseObserver), - () -> doOnResponseHasException(TriRpcStatus.NOT_FOUND.asException(), responseObserver)); + responseObserver::onCompleted); } catch (Throwable throwable) { doOnResponseHasException(throwable, responseObserver); }