From 8e812cdcb68a7a1e90241b30739cba77998b82e5 Mon Sep 17 00:00:00 2001 From: Pil0tXia Date: Sat, 13 Apr 2024 14:38:19 +0800 Subject: [PATCH] Use synchronized latch to keep senderOnComplete called once --- .../client/grpc/consumer/SubStreamHandler.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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."); }