Author: mahadev
Date: Wed Apr 8 21:09:42 2009
New Revision: 763395
URL: http://svn.apache.org/viewvc?rev=763395&view=rev
Log:
ZOOKEEPER-370. Fix critical problems reported by findbugs. (flavio via mahadev)
Modified:
hadoop/zookeeper/trunk/CHANGES.txt
hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java
hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
Modified: hadoop/zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=763395&r1=763394&r2=763395&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/CHANGES.txt (original)
+++ hadoop/zookeeper/trunk/CHANGES.txt Wed Apr 8 21:09:42 2009
@@ -41,6 +41,8 @@
ZOOKEEPER-363. NPE when recovering ledger with no hint. (flavio via mahadev)
+ ZOOKEEPER-370. Fix critical problems reported by findbugs. (flavio via mahadev)
+
IMPROVEMENTS:
ZOOKEEPER-308. improve the atomic broadcast performance 3x.
(breed via mahadev)
Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java?rev=763395&r1=763394&r2=763395&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java
(original)
+++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/LeaderElection.java
Wed Apr 8 21:09:42 2009
@@ -39,7 +39,8 @@
public class LeaderElection implements Election {
private static final Logger LOG = Logger.getLogger(LeaderElection.class);
-
+ private static Random epochGen = new Random();
+
QuorumPeer self;
public LeaderElection(QuorumPeer self) {
@@ -130,7 +131,7 @@
responseBytes.length);
HashMap<InetSocketAddress, Vote> votes = new HashMap<InetSocketAddress,
Vote>(
self.quorumPeers.size());
- int xid = new Random().nextInt();
+ int xid = epochGen.nextInt();
while (self.running) {
votes.clear();
requestBuffer.clear();
Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java?rev=763395&r1=763394&r2=763395&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
(original)
+++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
Wed Apr 8 21:09:42 2009
@@ -72,12 +72,7 @@
* Packet size
*/
int packetSize;
-
- /*
- * Port to listen on
- */
- int port;
-
+
/*
* Challenge to initiate connections
*/
@@ -126,27 +121,11 @@
this.senderWorkerMap = new ConcurrentHashMap<Long, SendWorker>();
this.self = self;
- // Generates a challenge to guarantee one connection between pairs of
- // servers
- //genChallenge();
-
// Starts listener thread that waits for connection requests
listener = new Listener();
listener.start();
}
- void genChallenge() {
- try{
- Random rand = new Random(System.currentTimeMillis()
- + InetAddress.getLocalHost().hashCode());
- long newValue = rand.nextLong();
- challenge = newValue;
- } catch(UnknownHostException e){
- LOG.error("Cannot resolve local address");
- challenge = 0;
- }
- }
-
/**
* If this server has initiated the connection, then it gives up on the
* connection if it loses challenge. Otherwise, it keeps the connection.
@@ -177,30 +156,25 @@
}
// Otherwise proceed with the connection
} else {
- if (s != null) {
- SendWorker sw = new SendWorker(s, sid);
- RecvWorker rw = new RecvWorker(s, sid);
- sw.setRecv(rw);
-
- if (senderWorkerMap
- .containsKey(sid)) {
- senderWorkerMap.get(sid).finish();
- }
-
- if (!queueSendMap.containsKey(sid)) {
- queueSendMap.put(sid, new ArrayBlockingQueue<ByteBuffer>(
- CAPACITY));
- }
+ SendWorker sw = new SendWorker(s, sid);
+ RecvWorker rw = new RecvWorker(s, sid);
+ sw.setRecv(rw);
+
+ if (senderWorkerMap
+ .containsKey(sid)) {
+ senderWorkerMap.get(sid).finish();
+ }
+
+ if (!queueSendMap.containsKey(sid)) {
+ queueSendMap.put(sid, new ArrayBlockingQueue<ByteBuffer>(
+ CAPACITY));
+ }
- senderWorkerMap.put(sid, sw);
- sw.start();
- rw.start();
+ senderWorkerMap.put(sid, sw);
+ sw.start();
+ rw.start();
- return true;
- } else {
- LOG.warn("Channel null");
- return false;
- }
+ return true;
}
return false;
@@ -247,30 +221,24 @@
}
//Otherwise start worker threads to receive data.
} else {
-
- if (s != null) {
- SendWorker sw = new SendWorker(s, sid);
- RecvWorker rw = new RecvWorker(s, sid);
- sw.setRecv(rw);
-
- if (senderWorkerMap.containsKey(sid)) {
- senderWorkerMap.get(sid).finish();
- }
+ SendWorker sw = new SendWorker(s, sid);
+ RecvWorker rw = new RecvWorker(s, sid);
+ sw.setRecv(rw);
+
+ if (senderWorkerMap.containsKey(sid)) {
+ senderWorkerMap.get(sid).finish();
+ }
- senderWorkerMap.put(sid, sw);
+ senderWorkerMap.put(sid, sw);
- if (!queueSendMap.containsKey(sid)) {
- queueSendMap.put(sid, new ArrayBlockingQueue<ByteBuffer>(
- CAPACITY));
- }
- sw.start();
- rw.start();
+ if (!queueSendMap.containsKey(sid)) {
+ queueSendMap.put(sid, new ArrayBlockingQueue<ByteBuffer>(
+ CAPACITY));
+ }
+ sw.start();
+ rw.start();
- return true;
- } else {
- LOG.warn("Channel null");
- return false;
- }
+ return true;
}
return false;
}
|