diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-01 12:45:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 12:45:53 +0100 |
commit | 787f4d194bfedebba5c63fdd0127979e1bb8a203 (patch) | |
tree | 1e09fd1ed177c4ec9cce9f7de00303f89ce9142b /zookeeper-server | |
parent | 248bc7e05f481835f4a6f7f372df4f6e7a26fe1b (diff) | |
parent | bdfac560268dd144f36087557693a5e048ce55ab (diff) |
Merge pull request #16717 from vespa-engine/balder/close-after-use
Ensure theat we close the ZooKeeperAdmin. Unfortunately The ZooKeeper…
Diffstat (limited to 'zookeeper-server')
-rw-r--r-- | zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java index 57ae62c0ebc..8ae30942d55 100644 --- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java +++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java @@ -19,10 +19,9 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin { @Override public void reconfigure(String connectionSpec, String joiningServers, String leavingServers) throws ReconfigException { + ZooKeeperAdmin zooKeeperAdmin = null; try { - ZooKeeperAdmin zooKeeperAdmin = new ZooKeeperAdmin(connectionSpec, - (int) sessionTimeout().toMillis(), - (event) -> log.log(Level.INFO, event.toString())); + zooKeeperAdmin = createAdmin(connectionSpec); long fromConfig = -1; // Using string parameters because the List variant of reconfigure fails to join empty lists (observed on 3.5.6, fixed in 3.7.0) byte[] appliedConfig = zooKeeperAdmin.reconfigure(joiningServers, leavingServers, null, fromConfig, null); @@ -34,9 +33,21 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin { throw new RuntimeException(e); } catch (IOException | InterruptedException e) { throw new RuntimeException(e); + } finally { + if (zooKeeperAdmin != null) { + try { + zooKeeperAdmin.close(); + } catch (InterruptedException e) { + } + } } } + private ZooKeeperAdmin createAdmin(String connectionSpec) throws IOException { + return new ZooKeeperAdmin(connectionSpec, (int) sessionTimeout().toMillis(), + (event) -> log.log(Level.INFO, event.toString())); + } + private static boolean retryOn(KeeperException e) { return e instanceof KeeperException.ReconfigInProgress || e instanceof KeeperException.ConnectionLossException || |