Author: breed Date: Fri Oct 10 16:15:55 2008 New Revision: 703602 URL: http://svn.apache.org/viewvc?rev=703602&view=rev Log: ZOOKEEPER-178 FLE Test
Modified: hadoop/zookeeper/trunk/CHANGES.txt hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java Modified: hadoop/zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=703602&r1=703601&r2=703602&view=diff ============================================================================== --- hadoop/zookeeper/trunk/CHANGES.txt (original) +++ hadoop/zookeeper/trunk/CHANGES.txt Fri Oct 10 16:15:55 2008 @@ -134,3 +134,5 @@ ZOOKEEPER-127. Use of non-standard election ports in config breaks services (Mark Harwood and Flavio Junqueira via breed) + ZOOKEEPER-172. FLE Test (Flavio Junqueira via breed) + Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java?rev=703602&r1=703601&r2=703602&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/FastLeaderElection.java Fri Oct 10 16:15:55 2008 @@ -587,6 +587,19 @@ } break; case LEADING: + /* + * There is at most one leader for each epoch, so if a peer claims to + * be the leader for an epoch, then that peer must be the leader (no + * arbitrary failures assumed). Now, if there is no quorum supporting + * this leader, then processes will naturally move to a new epoch. + */ + if(n.epoch == logicalclock){ + self.setPeerState((n.leader == self.getId()) ? + ServerState.LEADING: ServerState.FOLLOWING); + + leaveInstance(); + return new Vote(n.leader, n.zxid); + } case FOLLOWING: LOG.info("Notification: " + n.leader + ", " + n.zxid + ", " + n.epoch + ", " + self.getId() + ", " + self.getPeerState() + ", " + n.state + ", " + n.sid);