This is an automated email from the ASF dual-hosted git repository. amichair pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/aries-rsa.git
commit dd72c2818baeb17eb6205ba67090335759a200f5 Author: Amichai Rothman <[email protected]> AuthorDate: Wed Apr 1 12:23:41 2026 +0300 ARIES-2200 Fix ZooKeeper concurrency issue that may close the wrong client --- .../rsa/discovery/zookeeper/client/ClientManager.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/discovery/zookeeper/src/main/java/org/apache/aries/rsa/discovery/zookeeper/client/ClientManager.java b/discovery/zookeeper/src/main/java/org/apache/aries/rsa/discovery/zookeeper/client/ClientManager.java index 388e7633..90d839e4 100644 --- a/discovery/zookeeper/src/main/java/org/apache/aries/rsa/discovery/zookeeper/client/ClientManager.java +++ b/discovery/zookeeper/src/main/java/org/apache/aries/rsa/discovery/zookeeper/client/ClientManager.java @@ -92,15 +92,15 @@ public class ClientManager implements Watcher { if (reg != null) { reg.unregister(); } - runAsync(this::closeClient); - } - - private void closeClient() { - try { - zkClient.close(); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + // keep current client reference to avoid race condition when re-starting a new one + ZooKeeper client = zkClient; + runAsync(() -> { + try { + client.close(); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } + }); } /* Callback for ZooKeeper */
