diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java index 3f187ddce4..421ab3363b 100644 --- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java +++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java @@ -130,12 +130,15 @@ public void run() { } public void close() { - if (this.sender != null) { - senderOnComplete(); + synchronized (sender) { + if (latch.getCount() == 0) { + return; + } + if (this.sender != null) { + senderOnComplete(); + } + latch.countDown(); } - - latch.countDown(); - log.info("SubStreamHandler closed."); }