Repository: bookkeeper Updated Branches: refs/heads/master 8bf97fb5b -> c29a4f260
BOOKKEEPER-863: Potential resource leak with unclosed LedgerManager in BookieShell (Ted Yu via sijie) Project: http://git-wip-us.apache.org/repos/asf/bookkeeper/repo Commit: http://git-wip-us.apache.org/repos/asf/bookkeeper/commit/c29a4f26 Tree: http://git-wip-us.apache.org/repos/asf/bookkeeper/tree/c29a4f26 Diff: http://git-wip-us.apache.org/repos/asf/bookkeeper/diff/c29a4f26 Branch: refs/heads/master Commit: c29a4f2601f72f8543cc4b1db419c84b01de75ce Parents: 8bf97fb Author: Sijie Guo <si...@apache.org> Authored: Tue Aug 11 19:00:52 2015 -0700 Committer: Sijie Guo <si...@apache.org> Committed: Tue Aug 11 19:00:52 2015 -0700 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ .../apache/bookkeeper/bookie/BookieShell.java | 28 +++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/c29a4f26/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 8590200..8547c26 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -87,6 +87,8 @@ Trunk (unreleased changes) BOOKKEEPER-687: Use static final Logger for hedwig related modules (Ankur Garg via sijie) + BOOKKEEPER-863: Potential resource leak with unclosed LedgerManager in BookieShell (Ted Yu via sijie) + bookkeeper-client: BOOKKEEPER-810: Allow to configure TCP connect timeout (Charles Xie via sijie) http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/c29a4f26/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java ---------------------------------------------------------------------- diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java index c7a65a1..98d311b 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java @@ -457,13 +457,15 @@ public class BookieShell implements Tool { @Override public int runCmd(CommandLine cmdLine) throws Exception { ZooKeeper zk = null; + LedgerManagerFactory mFactory = null; + LedgerManager m = null; try { zk = ZooKeeperClient.newBuilder() .connectString(bkConf.getZkServers()) .sessionTimeoutMs(bkConf.getZkTimeout()) .build(); - LedgerManagerFactory mFactory = LedgerManagerFactory.newLedgerManagerFactory(bkConf, zk); - LedgerManager m = mFactory.newLedgerManager(); + mFactory = LedgerManagerFactory.newLedgerManagerFactory(bkConf, zk); + m = mFactory.newLedgerManager(); LedgerRangeIterator iter = m.getLedgerRanges(); if (cmdLine.hasOption("m")) { List<ReadMetadataCallback> futures @@ -495,6 +497,14 @@ public class BookieShell implements Tool { } } } finally { + if (m != null) { + try { + m.close(); + mFactory.uninitialize(); + } catch (IOException ioe) { + LOG.error("Failed to close ledger manager : ", ioe); + } + } if (zk != null) { zk.close(); } @@ -566,17 +576,27 @@ public class BookieShell implements Tool { } ZooKeeper zk = null; + LedgerManagerFactory mFactory = null; + LedgerManager m = null; try { zk = ZooKeeperClient.newBuilder() .connectString(bkConf.getZkServers()) .sessionTimeoutMs(bkConf.getZkTimeout()) .build(); - LedgerManagerFactory mFactory = LedgerManagerFactory.newLedgerManagerFactory(bkConf, zk); - LedgerManager m = mFactory.newLedgerManager(); + mFactory = LedgerManagerFactory.newLedgerManagerFactory(bkConf, zk); + m = mFactory.newLedgerManager(); ReadMetadataCallback cb = new ReadMetadataCallback(lid); m.readLedgerMetadata(lid, cb); printLedgerMetadata(cb); } finally { + if (m != null) { + try { + m.close(); + mFactory.uninitialize(); + } catch (IOException ioe) { + LOG.error("Failed to close ledger manager : ", ioe); + } + } if (zk != null) { zk.close(); }