瀏覽代碼

ZOOKEEPER-134 findbugs cleanup

git-svn-id: https://svn.apache.org/repos/asf/hadoop/zookeeper/trunk@692164 13f79535-47bb-0310-9956-ffa450edef68
Benjamin Reed 17 年之前
父節點
當前提交
4cdb4305ad
共有 39 個文件被更改,包括 137 次插入97 次删除
  1. 1 0
      src/java/jmx/org/apache/zookeeper/jmx/server/ConnectionBean.java
  2. 0 4
      src/java/jmx/org/apache/zookeeper/jmx/server/DataTreeBean.java
  3. 3 5
      src/java/jmx/org/apache/zookeeper/server/ManagedZooKeeperServer.java
  4. 0 1
      src/java/jmx/org/apache/zookeeper/server/ManagedZooKeeperServerMain.java
  5. 2 1
      src/java/jmx/org/apache/zookeeper/server/ObservableZooKeeperServer.java
  6. 7 7
      src/java/jmx/org/apache/zookeeper/server/quorum/ManagedQuorumPeer.java
  7. 7 25
      src/java/jmx/org/apache/zookeeper/server/quorum/ManagedQuorumPeerMain.java
  8. 0 2
      src/java/jmx/org/apache/zookeeper/server/quorum/ObservableQuorumPeer.java
  9. 7 4
      src/java/main/org/apache/zookeeper/ClientCnxn.java
  10. 1 0
      src/java/main/org/apache/zookeeper/ZooKeeper.java
  11. 1 0
      src/java/main/org/apache/zookeeper/server/DataNode.java
  12. 1 0
      src/java/main/org/apache/zookeeper/server/DataTree.java
  13. 2 0
      src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java
  14. 6 2
      src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java
  15. 2 0
      src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java
  16. 5 1
      src/java/main/org/apache/zookeeper/server/Request.java
  17. 4 1
      src/java/main/org/apache/zookeeper/server/ServerStats.java
  18. 3 6
      src/java/main/org/apache/zookeeper/server/SessionTrackerImpl.java
  19. 3 1
      src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java
  20. 23 11
      src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java
  21. 5 7
      src/java/main/org/apache/zookeeper/server/quorum/AuthFastLeaderElection.java
  22. 4 3
      src/java/main/org/apache/zookeeper/server/quorum/CommitProcessor.java
  23. 1 1
      src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java
  24. 1 1
      src/java/main/org/apache/zookeeper/server/quorum/Follower.java
  25. 1 0
      src/java/main/org/apache/zookeeper/server/quorum/FollowerHandler.java
  26. 1 0
      src/java/main/org/apache/zookeeper/server/quorum/FollowerRequestProcessor.java
  27. 3 0
      src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java
  28. 3 1
      src/java/main/org/apache/zookeeper/server/quorum/Leader.java
  29. 1 1
      src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java
  30. 2 0
      src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java
  31. 5 3
      src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
  32. 3 1
      src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
  33. 13 2
      src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
  34. 3 0
      src/java/main/org/apache/zookeeper/server/quorum/QuorumStats.java
  35. 11 2
      src/java/main/org/apache/zookeeper/version/util/VerGen.java
  36. 1 1
      src/java/test/org/apache/zookeeper/test/ClientBase.java
  37. 0 1
      src/java/test/org/apache/zookeeper/test/ClientTest.java
  38. 0 1
      src/java/test/org/apache/zookeeper/test/SessionTest.java
  39. 1 1
      src/java/test/org/apache/zookeeper/test/ZooKeeperTestClient.java

+ 1 - 0
src/java/jmx/org/apache/zookeeper/jmx/server/ConnectionBean.java

@@ -88,6 +88,7 @@ public class ConnectionBean implements ConnectionMXBean, ZKMBeanInfo {
         connection.close();
     }
     
+    @Override
     public String toString() {
         return "ConnectionBean{ClientIP="+getSourceIP()+",SessionId=0x"+getSessionId()+"}";
     }

+ 0 - 4
src/java/jmx/org/apache/zookeeper/jmx/server/DataTreeBean.java

@@ -18,11 +18,7 @@
 
 package org.apache.zookeeper.jmx.server;
 
-import java.io.ByteArrayOutputStream;
-
 import org.apache.log4j.Logger;
-
-import org.apache.jute.BinaryOutputArchive;
 import org.apache.zookeeper.jmx.ZKMBeanInfo;
 
 /**

+ 3 - 5
src/java/jmx/org/apache/zookeeper/server/ManagedZooKeeperServer.java

@@ -23,18 +23,16 @@ import java.io.IOException;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.log4j.Logger;
-
 import org.apache.zookeeper.jmx.MBeanRegistry;
 import org.apache.zookeeper.jmx.server.ConnectionBean;
+import org.apache.zookeeper.jmx.server.ConnectionMXBean;
 import org.apache.zookeeper.jmx.server.DataTreeBean;
+import org.apache.zookeeper.jmx.server.DataTreeMXBean;
 import org.apache.zookeeper.jmx.server.ZooKeeperServerBean;
-import org.apache.zookeeper.server.ZooKeeperServer.DataTreeBuilder;
+import org.apache.zookeeper.jmx.server.ZooKeeperServerMXBean;
 import org.apache.zookeeper.server.util.ConnectionObserver;
 import org.apache.zookeeper.server.util.ObserverManager;
 import org.apache.zookeeper.server.util.ServerObserver;
-import org.apache.zookeeper.server.util.ZooKeeperObserverManager;
-
-import static org.apache.zookeeper.server.ServerConfig.getClientPort;
 
 /**
  * This class launches a standalone zookeeper server with JMX support

+ 0 - 1
src/java/jmx/org/apache/zookeeper/server/ManagedZooKeeperServerMain.java

@@ -23,7 +23,6 @@ import static org.apache.zookeeper.server.ServerConfig.getClientPort;
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.log4j.Logger;
 import org.apache.zookeeper.jmx.server.ConnectionMXBean;
 import org.apache.zookeeper.jmx.server.DataTreeMXBean;
 import org.apache.zookeeper.jmx.server.ZooKeeperServerMXBean;

+ 2 - 1
src/java/jmx/org/apache/zookeeper/server/ObservableZooKeeperServer.java

@@ -21,7 +21,8 @@ package org.apache.zookeeper.server;
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.zookeeper.server.ZooKeeperServer.DataTreeBuilder;
+import org.apache.zookeeper.server.util.ObserverManager;
+import org.apache.zookeeper.server.util.ServerObserver;
 /**
  * The observable server broadcast notifications when its state changes. 
  * 

+ 7 - 7
src/java/jmx/org/apache/zookeeper/server/quorum/ManagedQuorumPeer.java

@@ -18,38 +18,38 @@
 
 package org.apache.zookeeper.server.quorum;
 
-import static org.apache.zookeeper.server.ServerConfig.getClientPort;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.log4j.Logger;
-
 import org.apache.zookeeper.jmx.MBeanRegistry;
 import org.apache.zookeeper.jmx.ZKMBeanInfo;
 import org.apache.zookeeper.jmx.server.ConnectionBean;
+import org.apache.zookeeper.jmx.server.ConnectionMXBean;
 import org.apache.zookeeper.jmx.server.DataTreeBean;
+import org.apache.zookeeper.jmx.server.DataTreeMXBean;
+import org.apache.zookeeper.jmx.server.ZooKeeperServerMXBean;
 import org.apache.zookeeper.jmx.server.quorum.FollowerBean;
 import org.apache.zookeeper.jmx.server.quorum.LeaderBean;
 import org.apache.zookeeper.jmx.server.quorum.LeaderElectionBean;
+import org.apache.zookeeper.jmx.server.quorum.LeaderElectionMXBean;
 import org.apache.zookeeper.jmx.server.quorum.LocalPeerBean;
+import org.apache.zookeeper.jmx.server.quorum.LocalPeerMXBean;
 import org.apache.zookeeper.jmx.server.quorum.QuorumBean;
+import org.apache.zookeeper.jmx.server.quorum.QuorumMXBean;
 import org.apache.zookeeper.jmx.server.quorum.RemotePeerBean;
+import org.apache.zookeeper.jmx.server.quorum.RemotePeerMXBean;
 import org.apache.zookeeper.jmx.server.quorum.ServerBean;
-import org.apache.zookeeper.server.ManagedZooKeeperServer;
 import org.apache.zookeeper.server.NIOServerCnxn;
-import org.apache.zookeeper.server.ObservableNIOServerCnxn;
 import org.apache.zookeeper.server.ServerCnxn;
 import org.apache.zookeeper.server.ZooKeeperServer;
 import org.apache.zookeeper.server.ZooTrace;
-import org.apache.zookeeper.server.quorum.QuorumPeer.QuorumServer;
 import org.apache.zookeeper.server.util.ConnectionObserver;
 import org.apache.zookeeper.server.util.ObserverManager;
 import org.apache.zookeeper.server.util.QuorumPeerObserver;
 import org.apache.zookeeper.server.util.ServerObserver;
-import org.apache.zookeeper.server.util.ZooKeeperObserverManager;
 
 /**
  * This class launches a replicated zookeeper server with JMX support

+ 7 - 25
src/java/jmx/org/apache/zookeeper/server/quorum/ManagedQuorumPeerMain.java

@@ -19,40 +19,22 @@
 package org.apache.zookeeper.server.quorum;
 
 import static org.apache.zookeeper.server.ServerConfig.getClientPort;
-import static org.apache.zookeeper.server.quorum.QuorumPeerConfig.getElectionAlg;
-import static org.apache.zookeeper.server.quorum.QuorumPeerConfig.getServerId;
-import static org.apache.zookeeper.server.quorum.QuorumPeerConfig.getServers;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.log4j.Logger;
-
-import org.apache.zookeeper.jmx.MBeanRegistry;
-import org.apache.zookeeper.jmx.ZKMBeanInfo;
-import org.apache.zookeeper.jmx.server.ConnectionBean;
-import org.apache.zookeeper.jmx.server.DataTreeBean;
-import org.apache.zookeeper.jmx.server.quorum.FollowerBean;
-import org.apache.zookeeper.jmx.server.quorum.LeaderBean;
-import org.apache.zookeeper.jmx.server.quorum.LeaderElectionBean;
-import org.apache.zookeeper.jmx.server.quorum.LocalPeerBean;
-import org.apache.zookeeper.jmx.server.quorum.QuorumBean;
-import org.apache.zookeeper.jmx.server.quorum.RemotePeerBean;
-import org.apache.zookeeper.jmx.server.quorum.ServerBean;
+import org.apache.zookeeper.jmx.server.ConnectionMXBean;
+import org.apache.zookeeper.jmx.server.DataTreeMXBean;
+import org.apache.zookeeper.jmx.server.ZooKeeperServerMXBean;
+import org.apache.zookeeper.jmx.server.quorum.LeaderElectionMXBean;
+import org.apache.zookeeper.jmx.server.quorum.LocalPeerMXBean;
+import org.apache.zookeeper.jmx.server.quorum.QuorumMXBean;
+import org.apache.zookeeper.jmx.server.quorum.RemotePeerMXBean;
 import org.apache.zookeeper.server.ManagedZooKeeperServerMain;
-import org.apache.zookeeper.server.ManagedZooKeeperServer;
 import org.apache.zookeeper.server.NIOServerCnxn;
 import org.apache.zookeeper.server.ObservableNIOServerCnxn;
-import org.apache.zookeeper.server.ServerCnxn;
 import org.apache.zookeeper.server.ServerConfig;
-import org.apache.zookeeper.server.ZooKeeperServer;
-import org.apache.zookeeper.server.ZooTrace;
-import org.apache.zookeeper.server.util.ConnectionObserver;
-import org.apache.zookeeper.server.util.ObserverManager;
-import org.apache.zookeeper.server.util.QuorumPeerObserver;
-import org.apache.zookeeper.server.util.ServerObserver;
 import org.apache.zookeeper.server.util.ZooKeeperObserverManager;
 
 /**

+ 0 - 2
src/java/jmx/org/apache/zookeeper/server/quorum/ObservableQuorumPeer.java

@@ -24,8 +24,6 @@ import java.util.ArrayList;
 
 import org.apache.zookeeper.server.NIOServerCnxn;
 import org.apache.zookeeper.server.ZooKeeperServer;
-import org.apache.zookeeper.server.NIOServerCnxn.Factory;
-import org.apache.zookeeper.server.quorum.QuorumPeer.QuorumServer;
 import org.apache.zookeeper.server.util.EventInfo;
 import org.apache.zookeeper.server.util.ObservableComponent;
 import org.apache.zookeeper.server.util.ObserverManager;

+ 7 - 4
src/java/main/org/apache/zookeeper/ClientCnxn.java

@@ -136,6 +136,7 @@ class ClientCnxn {
         return sessionPasswd;
     }
 
+    @Override
     public String toString() {
         StringBuffer sb = new StringBuffer();
         sb.append("sessionId: 0x").append(Long.toHexString(getSessionId())).append("\n");
@@ -263,6 +264,7 @@ class ClientCnxn {
             setDaemon(true);
         }
 
+        @Override
         public void run() {
             try {
                 while (true) {
@@ -359,12 +361,13 @@ class ClientCnxn {
             p.watchRegistration.register(p.replyHeader.getErr());
         }
 
-        p.finished = true;
         if (p.cb == null) {
             synchronized (p) {
+                p.finished = true;
                 p.notifyAll();
             }
         } else {
+            p.finished = true;
             waitingEvents.add(p);
         }
     }
@@ -525,7 +528,7 @@ class ClientCnxn {
             if (sockKey.isWritable()) {
                 synchronized (outgoingQueue) {
                     if (outgoingQueue.size() > 0) {
-                        int rc = sock.write(outgoingQueue.getFirst().bb);
+                        sock.write(outgoingQueue.getFirst().bb);
                         if (outgoingQueue.getFirst().bb.remaining() == 0) {
                             Packet p = outgoingQueue.removeFirst();
                             if (p.header != null
@@ -581,8 +584,7 @@ class ClientCnxn {
         }
 
         private void primeConnection(SelectionKey k) throws IOException {
-            LOG.info("Priming connection to "
-                    + ((SocketChannel) sockKey.channel()));
+            LOG.info("Priming connection to " + sockKey.channel());
             lastConnectIndex = currentConnectIndex;
             ConnectRequest conReq = new ConnectRequest(0, lastZxid,
                     sessionTimeout, sessionId, sessionPasswd);
@@ -833,6 +835,7 @@ class ClientCnxn {
      * method is primarily here to allow the tests to verify disconnection
      * behavior.
      */
+    @SuppressWarnings("unchecked")
     public void disconnect() {
         LOG.info("Disconnecting ClientCnxn for session: 0x" 
                 + Long.toHexString(getSessionId()));

+ 1 - 0
src/java/main/org/apache/zookeeper/ZooKeeper.java

@@ -241,6 +241,7 @@ public class ZooKeeper {
         {
             super(watches, watcher, path);
         }
+        @Override
         protected boolean shouldAddWatch(int rc) {
             return rc == 0 || rc == KeeperException.Code.NoNode;
         }

+ 1 - 0
src/java/main/org/apache/zookeeper/server/DataNode.java

@@ -39,6 +39,7 @@ import org.apache.zookeeper.data.Stat;
  */
 public class DataNode implements Record {
     DataNode() {
+        // default rather than public constructor
     }
 
     DataNode(DataNode parent, byte data[], List<ACL> acl, Stat stat) {

+ 1 - 0
src/java/main/org/apache/zookeeper/server/DataTree.java

@@ -74,6 +74,7 @@ public class DataTree {
     /** A debug string * */
     private String debug = "debug";
 
+    @SuppressWarnings("unchecked")
     public HashSet<String> getEphemerals(long sessionId) {
         HashSet<String> retv = ephemerals.get(sessionId);
         if (retv == null) {

+ 2 - 0
src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java

@@ -242,6 +242,8 @@ public class FinalRequestProcessor implements RequestProcessor {
     }
 
     public void shutdown() {
+        // we are the final link in the chain
+        LOG.info("shutdown of request processor complete");
     }
 
 }

+ 6 - 2
src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java

@@ -646,6 +646,7 @@ public class NIOServerCnxn implements Watcher, ServerCnxn {
         sk.interestOps(SelectionKey.OP_READ);
     }
 
+    @Override
     public String toString() {
         return "NIOServerCnxn object with sock = " + sock + " and sk = " + sk;
     }
@@ -685,11 +686,12 @@ public class NIOServerCnxn implements Watcher, ServerCnxn {
         try {
             sock.socket().shutdownInput();
         } catch (IOException e) {
+            LOG.warn("ignoring exception during input shutdown", e);
         }
         try {
             sock.socket().close();
         } catch (IOException e) {
-            LOG.error("FIXMSG",e);
+            LOG.warn("ignoring exception during socket close", e);
         }
         try {
             sock.close();
@@ -698,7 +700,7 @@ public class NIOServerCnxn implements Watcher, ServerCnxn {
             // this section arise.
             // factory.selector.wakeup();
         } catch (IOException e) {
-            LOG.error("FIXMSG",e);
+            LOG.warn("ignoring exception during socketchannel close", e);
         }
         sock = null;
         if (sk != null) {
@@ -706,6 +708,7 @@ public class NIOServerCnxn implements Watcher, ServerCnxn {
                 // need to cancel this selection key from the selector
                 sk.cancel();
             } catch (Exception e) {
+                LOG.warn("ignoring exception during selectionkey cancel", e);
             }
         }
     }
@@ -833,6 +836,7 @@ public class NIOServerCnxn implements Watcher, ServerCnxn {
         public long getPacketsSent() {
             return packetsSent;
         }
+        @Override
         public String toString(){
             StringBuilder sb=new StringBuilder();
             Channel channel = sk.channel();

+ 2 - 0
src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java

@@ -83,6 +83,7 @@ public class PrepRequestProcessor extends Thread implements RequestProcessor {
         start();
     }
 
+    @Override
     public void run() {
         try {
             while (true) {
@@ -404,6 +405,7 @@ public class PrepRequestProcessor extends Thread implements RequestProcessor {
             ACL a = it.next();
             Id id = a.getId();
             if (id.getScheme().equals("world") && id.getId().equals("anyone")) {
+                // wide open
             } else if (id.getScheme().equals("auth")) {
                 // This is the "auth" id, so we have to expand it to the
                 // authenticated ids of the requestor

+ 5 - 1
src/java/main/org/apache/zookeeper/server/Request.java

@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import java.util.List;
 
 import org.apache.jute.Record;
+import org.apache.log4j.Logger;
 import org.apache.zookeeper.ZooDefs.OpCode;
 import org.apache.zookeeper.data.Id;
 import org.apache.zookeeper.txn.TxnHeader;
@@ -32,6 +33,8 @@ import org.apache.zookeeper.txn.TxnHeader;
  * onto the request as it is processed.
  */
 public class Request {
+    private static final Logger LOG = Logger.getLogger(Request.class);
+
     public final static Request requestOfDeath = new Request(null, 0, 0, 0,
             null, null);
 
@@ -157,6 +160,7 @@ public class Request {
         }
     }
 
+    @Override
     public String toString() {
         StringBuffer sb = new StringBuffer();
         sb.append("session 0x").append(Long.toHexString(sessionId));
@@ -180,7 +184,7 @@ public class Request {
                 path = new String(b);
                 request.clear();
             } catch (Exception e) {
-
+                LOG.warn("Ignoring exception during toString", e);
             }
         }
         sb.append(path).append(" ");

+ 4 - 1
src/java/main/org/apache/zookeeper/server/ServerStats.java

@@ -48,7 +48,9 @@ public class ServerStats {
         assert instance==null;
         instance = newInstance;
     }
-    protected ServerStats(){}
+    protected ServerStats() {
+        // protected constructor
+    }
     
     // getters
     synchronized public long getMinLatency() {
@@ -87,6 +89,7 @@ public class ServerStats {
         return "standalone";
     }
     
+    @Override
     public String toString(){
         StringBuilder sb = new StringBuilder();
         sb.append("Latency min/avg/max: " + getMinLatency() + "/"

+ 3 - 6
src/java/main/org/apache/zookeeper/server/SessionTrackerImpl.java

@@ -95,15 +95,11 @@ public class SessionTrackerImpl extends Thread implements SessionTracker {
         start();
     }
 
-    boolean running = true;
-
-    synchronized public void finish() {
-        running = false;
-        this.notifyAll();
-    }
+    volatile boolean running = true;
 
     volatile long currentTime;
 
+    @Override
     synchronized public String toString() {
         StringBuffer sb = new StringBuffer("Session Sets ("
                 + sessionSets.size() + "):\n");
@@ -119,6 +115,7 @@ public class SessionTrackerImpl extends Thread implements SessionTracker {
         return sb.toString();
     }
 
+    @Override
     synchronized public void run() {
         try {
             while (running) {

+ 3 - 1
src/java/main/org/apache/zookeeper/server/SyncRequestProcessor.java

@@ -135,6 +135,7 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
         return fileSize;
     }
 
+    @Override
     public void run() {
         try {
             long fileSize = 0;
@@ -238,6 +239,7 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
                                      "SyncRequestProcessor exiyed!");
     }
 
+    @SuppressWarnings("unchecked")
     private void flush(LinkedList<Request> toFlush) throws IOException {
         if (toFlush.size() == 0) {
             return;
@@ -251,7 +253,7 @@ public class SyncRequestProcessor extends Thread implements RequestProcessor {
         for (FileOutputStream fos : streamsToFlushNow) {
             fos.flush();
             if (forceSync) {
-                ((FileChannel) fos.getChannel()).force(false);
+                fos.getChannel().force(false);
             }
         }
         while (streamsToFlushNow.size() > 1) {

+ 23 - 11
src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java

@@ -121,7 +121,7 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider {
     final public static Exception ok = new Exception("No prob");
     protected RequestProcessor firstProcessor;
     LinkedBlockingQueue<Long> sessionsToDie = new LinkedBlockingQueue<Long>();
-    protected boolean running;
+    protected volatile boolean running;
     /**
      * This is the secret that we use to generate passwords, for the moment it
      * is more of a sanity check.
@@ -195,6 +195,8 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider {
             try {
                 zxid = Long.parseLong(nameParts[1], 16);
             } catch (NumberFormatException e) {
+                LOG.warn("unable to parse zxid string into long: "
+                        + nameParts[1]);
             }
         }
         return zxid;
@@ -317,10 +319,17 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider {
 
             LOG.warn("Processing snapshot: " + f);
 
-            InputStream snapIS =
-                new BufferedInputStream(new FileInputStream(f));
-            loadData(BinaryInputArchive.getArchive(snapIS));
-            snapIS.close();
+            FileInputStream snapFIS = new FileInputStream(f);
+            try {
+                InputStream snapIS = new BufferedInputStream(snapFIS);
+                try {
+                    loadData(BinaryInputArchive.getArchive(snapIS));
+                } finally {
+                    snapIS.close();
+                }
+            } finally {
+                snapFIS.close();
+            }
 
             dataTree.lastProcessedZxid = zxid;
 
@@ -601,12 +610,15 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider {
         ZooTrace.logTraceMessage(LOG, ZooTrace.getTextTraceLevel(),
                 "Snapshotting: zxid 0x" + Long.toHexString(lastZxid));
         try {
-            File f =new File(dataDir, "snapshot." + Long.toHexString(lastZxid));
+            File f = new File(dataDir, "snapshot." + Long.toHexString(lastZxid));
             OutputStream sessOS = new BufferedOutputStream(new FileOutputStream(f));
-            BinaryOutputArchive oa = BinaryOutputArchive.getArchive(sessOS);
-            snapshot(oa);
-            sessOS.flush();
-            sessOS.close();
+            try {
+                BinaryOutputArchive oa = BinaryOutputArchive.getArchive(sessOS);
+                snapshot(oa);
+                sessOS.flush();
+            } finally {
+                sessOS.close();
+            }
             ZooTrace.logTraceMessage(LOG, ZooTrace.getTextTraceLevel(),
                     "Snapshotting finished: zxid 0x" + Long.toHexString(lastZxid));
         } catch (IOException e) {
@@ -692,8 +704,8 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider {
         }
         createSessionTracker();
         setupRequestProcessors();
-        running = true;
         synchronized (this) {
+            running = true;
             notifyAll();
         }
     }

+ 5 - 7
src/java/main/org/apache/zookeeper/server/quorum/AuthFastLeaderElection.java

@@ -95,7 +95,7 @@ public class AuthFastLeaderElection implements Election {
     static public class ToSend {
         static enum mType {
             crequest, challenge, notification, ack
-        };
+        }
 
         ToSend(mType type, long tag, long leader, long zxid, long epoch,
                 ServerState state, InetSocketAddress addr) {
@@ -238,7 +238,7 @@ public class AuthFastLeaderElection implements Election {
                     }
                     // Receive new message
                     if (responsePacket.getLength() != responseBytes.length) {
-                        LOG.error("Got a short response: "
+                        LOG.warn("Got a short response: "
                                 + responsePacket.getLength() + " "
                                 + responsePacket.toString());
                         continue;
@@ -246,7 +246,7 @@ public class AuthFastLeaderElection implements Election {
                     responseBuffer.clear();
                     int type = responseBuffer.getInt();
                     if ((type > 3) || (type < 0)) {
-                        LOG.error("Got bad Msg type: " + type);
+                        LOG.warn("Got bad Msg type: " + type);
                         continue;
                     }
                     long tag = responseBuffer.getLong();
@@ -314,7 +314,7 @@ public class AuthFastLeaderElection implements Election {
                                             tag, current.id,
                                             current.zxid,
                                             logicalclock, self.getPeerState(),
-                                            (InetSocketAddress) addr);
+                                            addr);
 
                                     sendqueue.offer(a);
                                 } else {
@@ -351,8 +351,7 @@ public class AuthFastLeaderElection implements Election {
                         acksqueue.offer(tag);
 
                         if (authEnabled) {
-                            addrChallengeMap.get(
-                                    (InetSocketAddress) responsePacket
+                            addrChallengeMap.get(responsePacket
                                             .getSocketAddress()).remove(tag);
                         }
 
@@ -381,7 +380,6 @@ public class AuthFastLeaderElection implements Election {
         class WorkerSender implements Runnable {
 
             Random rand;
-            boolean processing;
             int maxAttempts;
             int ackWait = finalizeWait;
 

+ 4 - 3
src/java/main/org/apache/zookeeper/server/quorum/CommitProcessor.java

@@ -54,8 +54,9 @@ public class CommitProcessor extends Thread implements RequestProcessor {
         start();
     }
 
-    boolean finished = false;
+    volatile boolean finished = false;
 
+    @Override
     public void run() {
         try {
             Request nextPending = null;
@@ -162,9 +163,9 @@ public class CommitProcessor extends Thread implements RequestProcessor {
     }
 
     public void shutdown() {
-        finished = true;
-        queuedRequests.clear();
         synchronized (this) {
+            finished = true;
+            queuedRequests.clear();
             notifyAll();
         }
         nextProcessor.shutdown();

+ 1 - 1
src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java

@@ -112,7 +112,7 @@ public class FastLeaderElection implements Election {
      * of reception of notification.
      */
     static public class ToSend {
-    	static enum mType {crequest, challenge, notification, ack};
+    	static enum mType {crequest, challenge, notification, ack}
         
         ToSend(mType type, 
         		long leader, 

+ 1 - 1
src/java/main/org/apache/zookeeper/server/quorum/Follower.java

@@ -205,7 +205,7 @@ public class Follower {
                     // Send back the ping with our session data
                     ByteArrayOutputStream bos = new ByteArrayOutputStream();
                     DataOutputStream dos = new DataOutputStream(bos);
-                    HashMap<Long, Integer> touchTable = ((FollowerZooKeeperServer) zk)
+                    HashMap<Long, Integer> touchTable = zk
                             .getTouchSnapshot();
                     for (Entry<Long, Integer> entry : touchTable.entrySet()) {
                         dos.writeLong(entry.getKey());

+ 1 - 0
src/java/main/org/apache/zookeeper/server/quorum/FollowerHandler.java

@@ -176,6 +176,7 @@ public class FollowerHandler extends Thread {
      * This thread will receive packets from the follower and process them and
      * also listen to new connections from new followers.
      */
+    @Override
     public void run() {
         try {
 

+ 1 - 0
src/java/main/org/apache/zookeeper/server/quorum/FollowerRequestProcessor.java

@@ -50,6 +50,7 @@ public class FollowerRequestProcessor extends Thread implements
         start();
     }
 
+    @Override
     public void run() {
         try {
             while (!finished) {

+ 3 - 0
src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java

@@ -72,11 +72,13 @@ public class FollowerZooKeeperServer extends ZooKeeperServer {
         return self.follower;
     }
     
+    @Override
     protected void createSessionTracker() {
         sessionTracker = new FollowerSessionTracker(this, sessionsWithTimeouts,
                 self.getId());
     }
 
+    @Override
     protected void setupRequestProcessors() {
         RequestProcessor finalProcessor = new FinalRequestProcessor(this);
         commitProcessor = new CommitProcessor(finalProcessor);
@@ -160,6 +162,7 @@ public class FollowerZooKeeperServer extends ZooKeeperServer {
         //do nothing
     }
     
+    @Override
     public void shutdown() {
         try {
             super.shutdown();

+ 3 - 1
src/java/main/org/apache/zookeeper/server/quorum/Leader.java

@@ -49,6 +49,7 @@ public class Leader {
 
         public Request request;
 
+        @Override
         public String toString() {
             return packet.getType() + ", " + packet.getZxid() + ", " + request;
         }
@@ -217,6 +218,7 @@ public class Leader {
         }
         outstandingProposals.add(newLeaderProposal);
         new Thread() {
+            @Override
             public void run() {
                 try {
                     while (true) {
@@ -226,7 +228,7 @@ public class Leader {
                         new FollowerHandler(s, Leader.this);
                     }
                 } catch (Exception e) {
-                    // 
+                    LOG.warn("Exception while accepting follower", e);
                 }
             }
         }.start();

+ 1 - 1
src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java

@@ -76,7 +76,7 @@ public class LeaderElection implements Election  {
         for (Vote v : votesCast) {
             Integer count = countTable.get(v);
             if (count == null) {
-                count = new Integer(0);
+                count = Integer.valueOf(0);
             }
             countTable.put(v, count + 1);
             if (v.id == result.vote.id) {

+ 2 - 0
src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java

@@ -54,6 +54,7 @@ public class LeaderZooKeeperServer extends ZooKeeperServer {
         return self.leader;
     }
     
+    @Override
     protected void setupRequestProcessors() {
         RequestProcessor finalProcessor = new FinalRequestProcessor(this);
         RequestProcessor toBeAppliedProcessor = new Leader.ToBeAppliedRequestProcessor(
@@ -69,6 +70,7 @@ public class LeaderZooKeeperServer extends ZooKeeperServer {
         return super.getGlobalOutstandingLimit() / (self.getQuorumSize() - 1);
     }
     
+    @Override
     protected void createSessionTracker() {
         sessionTracker = new SessionTrackerImpl(this, sessionsWithTimeouts,
                 tickTime, self.getId());

+ 5 - 3
src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java

@@ -51,7 +51,7 @@ import org.apache.log4j.Logger;
  * 
  */
 
-class QuorumCnxManager extends Thread {
+class QuorumCnxManager {
     private static final Logger LOG = Logger.getLogger(QuorumCnxManager.class);
 
     /*
@@ -108,7 +108,7 @@ class QuorumCnxManager extends Thread {
      */
     Listener listener;
 
-    class Message {
+    static class Message {
         Message(ByteBuffer buffer, InetAddress addr) {
             this.buffer = buffer;
             this.addr = addr;
@@ -441,6 +441,7 @@ class QuorumCnxManager extends Thread {
         /**
          * Sleeps on accept().
          */
+        @Override
         public void run() {
             ServerSocketChannel ss = null;
             try {
@@ -511,6 +512,7 @@ class QuorumCnxManager extends Thread {
             return running;
         }
 
+        @Override
         public void run() {
 
             while (running && !shutdown) {
@@ -563,7 +565,6 @@ class QuorumCnxManager extends Thread {
      * Thread to receive messages. Instance waits on a socket read. If the
      * channel breaks, then removes itself from the pool of receivers.
      */
-
     class RecvWorker extends Thread {
         InetAddress addr;
         SocketChannel channel;
@@ -580,6 +581,7 @@ class QuorumCnxManager extends Thread {
             return running;
         }
 
+        @Override
         public void run() {
             try {
                 byte[] size = new byte[4];

+ 3 - 1
src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java

@@ -161,6 +161,7 @@ public class QuorumPeer extends Thread implements QuorumStats.Provider {
             super("ResponderThread");
         }
 
+        @Override
         public void run() {
             try {
                 byte b[] = new byte[36];
@@ -289,7 +290,7 @@ public class QuorumPeer extends Thread implements QuorumStats.Provider {
                 udpSocket = new DatagramSocket(myQuorumAddr.getPort());
                 new ResponderThread().start();
             } catch (SocketException e) {
-                new RuntimeException(e);
+                throw new RuntimeException(e);
             }
         }
         this.electionAlg = createElectionAlgorithm(electionType);
@@ -368,6 +369,7 @@ public class QuorumPeer extends Thread implements QuorumStats.Provider {
         return null;
     }
 
+    @Override
     public void run() {
         /*
          * Main loop

+ 13 - 2
src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java

@@ -62,7 +62,12 @@ public class QuorumPeerConfig extends ServerConfig {
                 System.exit(2);
             }
             Properties cfg = new Properties();
-            cfg.load(new FileInputStream(zooCfgFile));
+            FileInputStream zooCfgStream = new FileInputStream(zooCfgFile);
+            try {
+                cfg.load(zooCfgStream);
+            } finally {
+                zooCfgStream.close();
+            }
             ArrayList<QuorumServer> servers = new ArrayList<QuorumServer>();
             String dataDir = null;
             String dataLogDir = null;
@@ -149,7 +154,12 @@ public class QuorumPeerConfig extends ServerConfig {
                     System.exit(2);
                 }
                 BufferedReader br = new BufferedReader(new FileReader(myIdFile));
-                String myIdString = br.readLine();
+                String myIdString;
+                try {
+                    myIdString = br.readLine();
+                } finally {
+                    br.close();
+                }
                 try {
                     conf.serverId = Long.parseLong(myIdString);
                 } catch (NumberFormatException e) {
@@ -164,6 +174,7 @@ public class QuorumPeerConfig extends ServerConfig {
         }
     }
 
+    @Override
     protected boolean isStandaloneServer(){
         return QuorumPeerConfig.getServers().size() <= 1;
     }

+ 3 - 0
src/java/main/org/apache/zookeeper/server/quorum/QuorumStats.java

@@ -48,6 +48,7 @@ public class QuorumStats extends ServerStats {
         qprovider=newProvider;
     }
     
+    @Override
     public String getServerState(){
         return (qprovider!=null)?qprovider.getServerState():Provider.UNKNOWN_STATE;
     }
@@ -55,6 +56,8 @@ public class QuorumStats extends ServerStats {
     public String[] getQuorumPeers(){
         return (qprovider!=null)?qprovider.getQuorumPeers():new String[0];
     }
+
+    @Override
     public String toString(){
         StringBuilder sb=new StringBuilder(super.toString());
         String state=getServerState();

+ 11 - 2
src/java/main/org/apache/zookeeper/version/util/VerGen.java

@@ -49,8 +49,9 @@ public class VerGen {
             System.exit(1);
         }
         File file = new File(pkgdir, TYPE_NAME + ".java");
+        FileWriter w = null;
         try {
-            FileWriter w = new FileWriter(file);
+            w = new FileWriter(file);
             w.write("// Do not edit!\n// File generated by org.apache.zookeeper"
                     + ".version.util.VerGen.\n");
             w.write("package " + PACKAGE_NAME + ";\n\n");
@@ -62,11 +63,19 @@ public class VerGen {
             w.write("    public static final String BUILD_DATE=\"" + buildDate
                     + "\";\n");
             w.write("}\n");
-            w.close();
         } catch (IOException e) {
             System.out.println("Unable to generate version.Info file: "
                     + e.getMessage());
             System.exit(1);
+        } finally {
+            if (w != null) {
+                try {
+                    w.close();
+                } catch (IOException e) {
+                    System.out.println("Unable to close file writer"
+                            + e.getMessage());
+                }
+            }
         }
     }
 

+ 1 - 1
src/java/test/org/apache/zookeeper/test/ClientBase.java

@@ -333,4 +333,4 @@ public abstract class ClientBase extends TestCase {
             assertEquals("node count not consistent", counts[i-1], counts[i]);
         }
     }
-}
+}

+ 0 - 1
src/java/test/org/apache/zookeeper/test/ClientTest.java

@@ -40,7 +40,6 @@ import org.apache.zookeeper.data.Id;
 import org.apache.zookeeper.data.Stat;
 import org.apache.zookeeper.proto.WatcherEvent;
 import org.junit.Test;
-
 public class ClientTest extends ClientBase {
     protected static final Logger LOG = Logger.getLogger(ClientTest.class);
 

+ 0 - 1
src/java/test/org/apache/zookeeper/test/SessionTest.java

@@ -44,7 +44,6 @@ public class SessionTest extends TestCase implements Watcher {
     protected static final Logger LOG = Logger.getLogger(SessionTest.class);
 
     private static final String HOSTPORT = "127.0.0.1:33299";
-
     private NIOServerCnxn.Factory serverFactory;
     
     private CountDownLatch startSignal;

+ 1 - 1
src/java/test/org/apache/zookeeper/test/ZooKeeperTestClient.java

@@ -40,7 +40,7 @@ import org.apache.zookeeper.proto.WatcherEvent;
 public class ZooKeeperTestClient extends TestCase implements Watcher {
   protected String hostPort = "127.0.0.1:22801";
 
-  protected static String dirOnZK = "/test_dir";
+  protected static final String dirOnZK = "/test_dir";
 
   protected String testDirOnZK = dirOnZK + "/" + System.currentTimeMillis();