Bläddra i källkod

ZOOKEEPER-178 FLE Test

git-svn-id: https://svn.apache.org/repos/asf/hadoop/zookeeper/trunk@703602 13f79535-47bb-0310-9956-ffa450edef68
Benjamin Reed 17 år sedan
förälder
incheckning
d768ace716

+ 2 - 0
CHANGES.txt

@@ -134,3 +134,5 @@ Backward compatibile changes:
  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)
+

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

@@ -587,6 +587,19 @@ public class FastLeaderElection implements Election {
                 }
                 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);