----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/8935/#review18307 -----------------------------------------------------------
/src/java/test/org/apache/zookeeper/test/QuorumUtil.java <https://reviews.apache.org/r/8935/#comment38514> Lines 273-279 can be rewritten as: List<QuorumPeer> peerList = new ArrayList<QuorumPeer>(ALL - 1); for (Set<PeerStruct> ps: peers.values()) { if (ps.peer.leader == null) { peerList.add(ps.peer); } } return Collections.unmodifiableList(peerList); - Edward Ribeiro On March 6, 2013, 11:42 p.m., Thawan Kooburat wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/8935/ > ----------------------------------------------------------- > > (Updated March 6, 2013, 11:42 p.m.) > > > Review request for zookeeper, Patrick Hunt and Mahadev Konar. > > > Description > ------- > > See ZOOKEEPER-1147 for high level description > > Implementation notes: > > - Local sessions don’t get persisted on disk. Existing SessionTrackerImpl is > used by the leader to track global sessions. Each participant (including the > leader) also has a local session tracker (which is another instance of > SessionTrackerImpl) to track its local session in memory. > > - Each participant intercepts a request before it enters the pipeline. In > order to do 2 things > o Update local session to global session when it saw create ephemeral node > request. Update is done by issuing a create session rquest before issuing the > create request > o Add local session flag to a request. So that the pipeline know that this > type of request don’t need to send to the leader and wait for commit > > - PrepRequestProcessor (on the leader) now explicitly validate global session > on create ephemeral node request. For other type of request, there is no > need for session validation because the leader doesn’t know about local > sessions on other machine, so the request has to go through. The correctness > is preserve as long a no ephemeral node is created after session is already > expired > > - Observer/FollowerRequestProcessor has logic to validate session. However, I > believe this logic is in correct since the request is already send downstream > to the CommitProcessor. The observer and the follower have no other option > but to send the request to leader. > > > This addresses bug ZOOKEEPER-1147. > https://issues.apache.org/jira/browse/ZOOKEEPER-1147 > > > Diffs > ----- > > /src/java/main/org/apache/zookeeper/KeeperException.java 1448007 > /src/java/main/org/apache/zookeeper/cli/CreateCommand.java 1448007 > /src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java > 1448007 > /src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java > 1448007 > /src/java/main/org/apache/zookeeper/server/Request.java 1448007 > /src/java/main/org/apache/zookeeper/server/SessionTracker.java 1448007 > /src/java/main/org/apache/zookeeper/server/SessionTrackerImpl.java 1448007 > /src/java/main/org/apache/zookeeper/server/TraceFormatter.java 1448007 > /src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/CommitProcessor.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/FollowerRequestProcessor.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/LeaderRequestProcessor.java > PRE-CREATION > /src/java/main/org/apache/zookeeper/server/quorum/LeaderSessionTracker.java > PRE-CREATION > > /src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java > 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/Learner.java 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/LearnerSessionTracker.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java > 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/LocalSessionTracker.java > PRE-CREATION > > /src/java/main/org/apache/zookeeper/server/quorum/ObserverRequestProcessor.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/ProposalRequestProcessor.java > 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java > 1448007 > /src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerMain.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/QuorumZooKeeperServer.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/ReadOnlyZooKeeperServer.java > 1448007 > > /src/java/main/org/apache/zookeeper/server/quorum/UpgradeableSessionTracker.java > PRE-CREATION > /src/java/test/org/apache/zookeeper/server/PrepRequestProcessorTest.java > 1448007 > /src/java/test/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java > 1448007 > > /src/java/test/org/apache/zookeeper/test/DuplicateLocalSessionUpgradeTest.java > PRE-CREATION > /src/java/test/org/apache/zookeeper/test/LeaderSessionTrackerTest.java > PRE-CREATION > /src/java/test/org/apache/zookeeper/test/LocalSessionRequestTest.java > PRE-CREATION > /src/java/test/org/apache/zookeeper/test/LocalSessionsOnlyTest.java > PRE-CREATION > /src/java/test/org/apache/zookeeper/test/QuorumBase.java 1448007 > /src/java/test/org/apache/zookeeper/test/QuorumTest.java 1448007 > /src/java/test/org/apache/zookeeper/test/QuorumUtil.java 1448007 > /src/java/test/org/apache/zookeeper/test/ReadOnlyModeTest.java 1448007 > /src/java/test/org/apache/zookeeper/test/SessionTrackerCheckTest.java > PRE-CREATION > /src/java/test/org/apache/zookeeper/test/SessionUpgradeTest.java > PRE-CREATION > > Diff: https://reviews.apache.org/r/8935/diff/ > > > Testing > ------- > > unit tests. For our internal branch, we haven't run into bugs related to > local session for quite a while so it is quite stable. We enabled local > session by default in all our deployment. > > > Thanks, > > Thawan Kooburat > >
