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);
        


Reply via email to