You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by fp...@apache.org on 2012/10/26 16:25:48 UTC

svn commit: r1402526 - in /zookeeper/bookkeeper/trunk: ./ bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ bookkeepe...

Author: fpj
Date: Fri Oct 26 14:25:47 2012
New Revision: 1402526

URL: http://svn.apache.org/viewvc?rev=1402526&view=rev
Log:
BOOKKEEPER-425: Cleanup Bookie id generation (ivank via fpj)


Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Cookie.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServerBean.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/BookieLedgerIndexer.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/StringUtils.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorBookieTest.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorLedgerCheckerTest.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Fri Oct 26 14:25:47 2012
@@ -100,6 +100,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-416: LedgerChecker returns underreplicated fragments for an closed ledger with no entries (ivank)
 
+	BOOKKEEPER-425: Cleanup Bookie id generation (ivank via fpj)
+
       hedwig-protocol:
 
         BOOKKEEPER-394: CompositeException message is not useful (Stu Hood via sijie)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java Fri Oct 26 14:25:47 2012
@@ -51,6 +51,7 @@ import org.apache.bookkeeper.proto.Bookk
 import org.apache.bookkeeper.util.IOUtils;
 import org.apache.bookkeeper.util.MathUtils;
 import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.util.StringUtils;
 import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
 import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
@@ -359,6 +360,15 @@ public class Bookie extends Thread {
         }
     }
 
+    /**
+     * Return the configured address of the bookie.
+     */
+    public static InetSocketAddress getBookieAddress(ServerConfiguration conf)
+            throws UnknownHostException {
+        return new InetSocketAddress(InetAddress.getLocalHost()
+                .getHostAddress(), conf.getBookiePort());
+    }
+
     private String getInstanceId(ZooKeeper zk) throws KeeperException,
             InterruptedException {
         String instanceId = null;
@@ -489,7 +499,7 @@ public class Bookie extends Thread {
         // if setting it in bookie thread, the watcher might run before bookie thread.
         running = true;
         try {
-            registerBookie(conf.getBookiePort());
+            registerBookie(conf);
         } catch (IOException e) {
             LOG.error("Couldn't register bookie with zookeeper, shutting down", e);
             shutdown(ExitCode.ZK_REG_FAIL);
@@ -590,11 +600,15 @@ public class Bookie extends Thread {
     /**
      * Register as an available bookie
      */
-    protected void registerBookie(int port) throws IOException {
+    protected void registerBookie(ServerConfiguration conf) throws IOException {
         if (null == zk) {
             // zookeeper instance is null, means not register itself to zk
             return;
         }
+
+        // ZK ephemeral node for this Bookie.
+        String zkBookieRegPath = this.bookieRegistrationPath
+            + StringUtils.addrToString(getBookieAddress(conf));
         final CountDownLatch prevNodeLatch = new CountDownLatch(1);
         try{
             Watcher zkPrevRegNodewatcher = new Watcher() {

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Cookie.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Cookie.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Cookie.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Cookie.java Fri Oct 26 14:25:47 2012
@@ -39,6 +39,7 @@ import org.apache.zookeeper.KeeperExcept
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.ZooDefs.Ids;
 
+import org.apache.bookkeeper.util.StringUtils;
 import org.apache.bookkeeper.conf.ServerConfiguration;
 import org.apache.bookkeeper.proto.DataFormats.CookieFormat;
 
@@ -206,7 +207,7 @@ class Cookie {
             throws UnknownHostException {
         Cookie c = new Cookie();
         c.layoutVersion = CURRENT_COOKIE_LAYOUT_VERSION;
-        c.bookieHost = InetAddress.getLocalHost().getHostAddress() + ":" + conf.getBookiePort();
+        c.bookieHost = StringUtils.addrToString(Bookie.getBookieAddress(conf));
         c.journalDir = conf.getJournalDirName();
         StringBuilder b = new StringBuilder();
         String[] dirs = conf.getLedgerDirNames();
@@ -252,6 +253,6 @@ class Cookie {
     private static String getZkPath(ServerConfiguration conf)
             throws UnknownHostException {
         String bookieCookiePath = conf.getZkLedgersRootPath() + "/" + COOKIE_NODE;
-        return bookieCookiePath + "/" + InetAddress.getLocalHost().getHostAddress() + ":" + conf.getBookiePort();
+        return bookieCookiePath + "/" + StringUtils.addrToString(Bookie.getBookieAddress(conf));
     }
 }

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java Fri Oct 26 14:25:47 2012
@@ -256,7 +256,7 @@ public class LedgerMetadata {
             s.append(lSplitter).append(entry.getKey());
             for (InetSocketAddress addr : entry.getValue()) {
                 s.append(tSplitter);
-                StringUtils.addrToString(s, addr);
+                s.append(StringUtils.addrToString(addr));
             }
         }
 

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java Fri Oct 26 14:25:47 2012
@@ -98,7 +98,7 @@ public class BookieServer implements NIO
 
     public InetSocketAddress getLocalAddress() {
         try {
-            return new InetSocketAddress(InetAddress.getLocalHost().getHostAddress(), conf.getBookiePort());
+            return Bookie.getBookieAddress(conf);
         } catch (UnknownHostException uhe) {
             return nioServerFactory.getLocalAddress();
         }

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServerBean.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServerBean.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServerBean.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServerBean.java Fri Oct 26 14:25:47 2012
@@ -21,6 +21,8 @@ package org.apache.bookkeeper.proto;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
+import org.apache.bookkeeper.util.StringUtils;
+import org.apache.bookkeeper.bookie.Bookie;
 import org.apache.bookkeeper.conf.ServerConfiguration;
 import org.apache.bookkeeper.jmx.BKMBeanInfo;
 import org.apache.bookkeeper.proto.BKStats;
@@ -80,8 +82,7 @@ public class BookieServerBean implements
     @Override
     public String getServerPort() {
         try {
-            return InetAddress.getLocalHost().getHostAddress() + ":"
-                    + conf.getBookiePort();
+            return StringUtils.addrToString(Bookie.getBookieAddress(conf));
         } catch (UnknownHostException e) {
             return "localhost:" + conf.getBookiePort();
         }

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java Fri Oct 26 14:25:47 2012
@@ -25,13 +25,14 @@ import java.io.IOException;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.MalformedURLException;
-import java.net.UnknownHostException;
 
+import org.apache.bookkeeper.bookie.Bookie;
 import org.apache.bookkeeper.bookie.ExitCode;
 import org.apache.bookkeeper.conf.ServerConfiguration;
 import org.apache.bookkeeper.replication.ReplicationException.CompatibilityException;
 import org.apache.bookkeeper.replication.ReplicationException.UnavailableException;
 import org.apache.bookkeeper.util.ZkUtils;
+import org.apache.bookkeeper.util.StringUtils;
 import org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase;
 import org.apache.commons.cli.BasicParser;
 import org.apache.commons.cli.CommandLine;
@@ -80,18 +81,12 @@ public class AutoRecoveryMain {
         };
         zk = ZkUtils.createConnectedZookeeperClient(conf.getZkServers(), w);
         auditorElector = new AuditorElector(
-                getMyBookieAddress(conf).toString(), conf, zk);
+                StringUtils.addrToString(Bookie.getBookieAddress(conf)), conf, zk);
         replicationWorker = new ReplicationWorker(zk, conf,
-                getMyBookieAddress(conf));
+                Bookie.getBookieAddress(conf));
         deathWatcher = new AutoRecoveryDeathWatcher(this);
     }
 
-    private static InetSocketAddress getMyBookieAddress(ServerConfiguration conf)
-            throws UnknownHostException {
-        return new InetSocketAddress(InetAddress.getLocalHost()
-                .getHostAddress(), conf.getBookiePort());
-    }
-
     /*
      * Start daemons
      */

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/BookieLedgerIndexer.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/BookieLedgerIndexer.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/BookieLedgerIndexer.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/BookieLedgerIndexer.java Fri Oct 26 14:25:47 2012
@@ -80,11 +80,9 @@ public class BookieLedgerIndexer {
                                     .getEnsembles().entrySet()) {
                                 for (InetSocketAddress bookie : ensemble
                                         .getValue()) {
-                                    bookieAddr = new StringBuilder();
-                                    StringUtils
-                                            .addrToString(bookieAddr, bookie);
-                                    putLedger(bookie2ledgersMap, bookieAddr
-                                            .toString(), ledgerId);
+                                    putLedger(bookie2ledgersMap,
+                                              StringUtils.addrToString(bookie),
+                                              ledgerId);
                                 }
                             }
                         } else {

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/StringUtils.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/StringUtils.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/StringUtils.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/StringUtils.java Fri Oct 26 14:25:47 2012
@@ -20,6 +20,8 @@ package org.apache.bookkeeper.util;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import org.apache.bookkeeper.conf.ServerConfiguration;
 
 /**
  * Provided utilites for parsing network addresses, ledger-id from node paths
@@ -52,8 +54,8 @@ public class StringUtils {
         return addr;
     }
 
-    public static StringBuilder addrToString(StringBuilder sb, InetSocketAddress addr) {
-        return sb.append(addr.getAddress().getHostAddress()).append(":").append(addr.getPort());
+    public static String addrToString(InetSocketAddress addr) {
+        return addr.getAddress().getHostAddress() + ":" + addr.getPort();
     }
 
     /**

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java Fri Oct 26 14:25:47 2012
@@ -79,8 +79,8 @@ public class BookieInitializationTest {
             super(conf);
         }
 
-        void testRegisterBookie(int port) throws IOException {
-            super.registerBookie(port);
+        void testRegisterBookie(ServerConfiguration conf) throws IOException {
+            super.registerBookie(conf);
         }
     }
 
@@ -105,7 +105,7 @@ public class BookieInitializationTest {
 
         MockBookie b = new MockBookie(conf);
         b.zk = zkc;
-        b.testRegisterBookie(conf.getBookiePort());
+        b.testRegisterBookie(conf);
         Stat bkRegNode1 = zkc.exists(bkRegPath, false);
         Assert.assertNotNull("Bookie registration node doesn't exists!",
                 bkRegNode1);
@@ -130,7 +130,7 @@ public class BookieInitializationTest {
             }
         }.start();
         try {
-            b.testRegisterBookie(conf.getBookiePort());
+            b.testRegisterBookie(conf);
         } catch (IOException e) {
             Throwable t = e.getCause();
             if (t instanceof KeeperException) {
@@ -171,7 +171,7 @@ public class BookieInitializationTest {
 
         MockBookie b = new MockBookie(conf);
         b.zk = zkc;
-        b.testRegisterBookie(conf.getBookiePort());
+        b.testRegisterBookie(conf);
         Stat bkRegNode1 = zkc.exists(bkRegPath, false);
         Assert.assertNotNull("Bookie registration node doesn't exists!",
                 bkRegNode1);
@@ -181,7 +181,7 @@ public class BookieInitializationTest {
         createNewZKClient();
         b.zk = newzk;
         try {
-            b.testRegisterBookie(conf.getBookiePort());
+            b.testRegisterBookie(conf);
             fail("Should throw NodeExistsException as the znode is not getting expired");
         } catch (IOException e) {
             Throwable t = e.getCause();

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorBookieTest.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorBookieTest.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorBookieTest.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorBookieTest.java Fri Oct 26 14:25:47 2012
@@ -158,8 +158,7 @@ public class AuditorBookieTest extends B
         for (String child : children) {
             byte[] data = zkc.getData(electionPath + '/' + child, false, null);
             String bookieIP = new String(data);
-            StringBuilder addr = new StringBuilder();
-            StringUtils.addrToString(addr, auditor.getLocalAddress());
+            String addr = StringUtils.addrToString(auditor.getLocalAddress());
             Assert.assertFalse("AuditorElection cleanup fails", bookieIP
                     .contains(addr));
         }
@@ -184,10 +183,9 @@ public class AuditorBookieTest extends B
         tmpDirs.remove(indexOfDownBookie);
         startBookie(serverConfiguration);
         // starting corresponding auditor elector
-        StringBuilder sb = new StringBuilder();
-        StringUtils.addrToString(sb, auditor.getLocalAddress());
-        LOG.debug("Performing Auditor Election:" + sb.toString());
-        auditorElectors.get(sb.toString()).doElection();
+        String addr = StringUtils.addrToString(auditor.getLocalAddress());
+        LOG.debug("Performing Auditor Election:" + addr);
+        auditorElectors.get(addr).doElection();
 
         // waiting for new auditor to come
         BookieServer newAuditor = waitForNewAuditor(auditor);
@@ -201,12 +199,10 @@ public class AuditorBookieTest extends B
 
     private void startAuditorElectors() throws UnavailableException {
         for (BookieServer bserver : bs) {
-            StringBuilder sb = new StringBuilder();
-            StringBuilder addr = StringUtils.addrToString(sb, bserver
-                    .getLocalAddress());
-            AuditorElector auditorElector = new AuditorElector(addr.toString(),
+            String addr = StringUtils.addrToString(bserver.getLocalAddress());
+            AuditorElector auditorElector = new AuditorElector(addr,
                     baseClientConf, zkc);
-            auditorElectors.put(addr.toString(), auditorElector);
+            auditorElectors.put(addr, auditorElector);
             auditorElector.doElection();
             LOG.debug("Starting Auditor Elector");
         }
@@ -242,14 +238,13 @@ public class AuditorBookieTest extends B
     }
 
     private void shudownBookie(BookieServer bkServer) {
-        StringBuilder sb = new StringBuilder();
-        StringUtils.addrToString(sb, bkServer.getLocalAddress());
-        LOG.debug("Shutting down bookie:" + sb.toString());
+        String addr = StringUtils.addrToString(bkServer.getLocalAddress());
+        LOG.debug("Shutting down bookie:" + addr);
 
         // shutdown bookie which is an auditor
         bkServer.shutdown();
         // stopping corresponding auditor elector
-        auditorElectors.get(sb.toString()).shutdown();
+        auditorElectors.get(addr).shutdown();
     }
 
     private BookieServer waitForNewAuditor(BookieServer auditor)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorLedgerCheckerTest.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorLedgerCheckerTest.java?rev=1402526&r1=1402525&r2=1402526&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorLedgerCheckerTest.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorLedgerCheckerTest.java Fri Oct 26 14:25:47 2012
@@ -109,12 +109,10 @@ public class AuditorLedgerCheckerTest ex
 
     private void startAuditorElectors() throws UnavailableException {
         for (BookieServer bserver : bs) {
-            StringBuilder sb = new StringBuilder();
-            StringBuilder addr = StringUtils.addrToString(sb, bserver
-                    .getLocalAddress());
-            AuditorElector auditorElector = new AuditorElector(addr.toString(),
+            String addr = StringUtils.addrToString(bserver.getLocalAddress());
+            AuditorElector auditorElector = new AuditorElector(addr,
                     baseClientConf, zkc);
-            auditorElectors.put(addr.toString(), auditorElector);
+            auditorElectors.put(addr, auditorElector);
             auditorElector.doElection();
             LOG.debug("Starting Auditor Elector");
         }
@@ -303,14 +301,13 @@ public class AuditorLedgerCheckerTest ex
 
     private String shutdownBookie(int bkShutdownIndex) throws IOException,
             InterruptedException {
-        StringBuilder bookieAddr = new StringBuilder();
         BookieServer bkServer = bs.get(bkShutdownIndex);
-        StringUtils.addrToString(bookieAddr, bkServer.getLocalAddress());
-        LOG.debug("Shutting down bookie:" + bookieAddr.toString());
+        String bookieAddr = StringUtils.addrToString(bkServer.getLocalAddress());
+        LOG.debug("Shutting down bookie:" + bookieAddr);
         killBookie(bkShutdownIndex);
-        auditorElectors.get(bookieAddr.toString()).shutdown();
-        auditorElectors.remove(bookieAddr.toString());
-        return bookieAddr.toString();
+        auditorElectors.get(bookieAddr).shutdown();
+        auditorElectors.remove(bookieAddr);
+        return bookieAddr;
     }
 
     private LedgerHandle createAndAddEntriesToLedger() throws BKException,