Repository: zookeeper Updated Branches: refs/heads/master 91460546a -> 1507f67a0
ZOOKEEPER-3177: Revert globalOutstandingLimit refactoring changes Hopefully this will fix the findBugs issue on master in the right way. lvfangmin hanm Please validate. Author: Andor Molnar <[email protected]> Reviewers: Michael Han <[email protected]>, Enrico Olivelli <[email protected]> Closes #711 from anmolnar/ZOOKEEPER-3177 Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/1507f67a Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/1507f67a Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/1507f67a Branch: refs/heads/master Commit: 1507f67a06175155003722297daeb60bc912af1d Parents: 9146054 Author: Andor Molnar <[email protected]> Authored: Wed Nov 21 08:56:08 2018 -0800 Committer: Michael Han <[email protected]> Committed: Wed Nov 21 08:56:08 2018 -0800 ---------------------------------------------------------------------- .../apache/zookeeper/server/ZooKeeperServer.java | 17 ++++++++++++----- .../server/quorum/FollowerZooKeeperServer.java | 12 ++++++++---- .../server/quorum/LeaderZooKeeperServer.java | 12 ++++++++---- 3 files changed, 28 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zookeeper/blob/1507f67a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java ---------------------------------------------------------------------- diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java index 3ab81e7..b417a8f 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java @@ -87,15 +87,11 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider { protected static final Logger LOG; public static final String GLOBAL_OUTSTANDING_LIMIT = "zookeeper.globalOutstandingLimit"; - protected static int globalOutstandingLimit = 1000; static { LOG = LoggerFactory.getLogger(ZooKeeperServer.class); Environment.logEnv("Server environment:", LOG); - - globalOutstandingLimit = Integer.getInteger(GLOBAL_OUTSTANDING_LIMIT, 1000); - LOG.info("{} = {}", GLOBAL_OUTSTANDING_LIMIT, globalOutstandingLimit); } protected ZooKeeperServerBean jmxServerBean; @@ -864,6 +860,17 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider { } } + public int getGlobalOutstandingLimit() { + String sc = System.getProperty(GLOBAL_OUTSTANDING_LIMIT); + int limit; + try { + limit = Integer.parseInt(sc); + } catch (Exception e) { + limit = 1000; + } + return limit; + } + public void setServerCnxnFactory(ServerCnxnFactory factory) { serverCnxnFactory = factory; } @@ -1090,7 +1097,7 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider { } public boolean shouldThrottle(long outStandingCount) { - if (globalOutstandingLimit < getInProcess()) { + if (getGlobalOutstandingLimit() < getInProcess()) { return outStandingCount > 0; } return false; http://git-wip-us.apache.org/repos/asf/zookeeper/blob/1507f67a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java ---------------------------------------------------------------------- diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java index ec529de..78c12db 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java @@ -60,10 +60,6 @@ public class FollowerZooKeeperServer extends LearnerZooKeeperServer { super(logFactory, self.tickTime, self.minSessionTimeout, self.maxSessionTimeout, zkDb, self); this.pendingSyncs = new ConcurrentLinkedQueue<Request>(); - - int divisor = self.getQuorumSize() > 2 ? self.getQuorumSize() - 1 : 1; - globalOutstandingLimit = Integer.getInteger(GLOBAL_OUTSTANDING_LIMIT, 1000) / divisor; - LOG.info("Override {} to {}", GLOBAL_OUTSTANDING_LIMIT, globalOutstandingLimit); } public Follower getFollower(){ @@ -127,6 +123,14 @@ public class FollowerZooKeeperServer extends LearnerZooKeeperServer { } @Override + public int getGlobalOutstandingLimit() { + int divisor = self.getQuorumSize() > 2 ? self.getQuorumSize() - 1 : 1; + int globalOutstandingLimit = super.getGlobalOutstandingLimit() / divisor; + LOG.info("Override {} to {}", GLOBAL_OUTSTANDING_LIMIT, globalOutstandingLimit); + return globalOutstandingLimit; + } + + @Override public String getState() { return "follower"; } http://git-wip-us.apache.org/repos/asf/zookeeper/blob/1507f67a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java ---------------------------------------------------------------------- diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java index c6f60e1..e1d1bb6 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java @@ -55,10 +55,6 @@ public class LeaderZooKeeperServer extends QuorumZooKeeperServer { */ LeaderZooKeeperServer(FileTxnSnapLog logFactory, QuorumPeer self, ZKDatabase zkDb) throws IOException { super(logFactory, self.tickTime, self.minSessionTimeout, self.maxSessionTimeout, zkDb, self); - - int divisor = self.getQuorumSize() > 2 ? self.getQuorumSize() - 1 : 1; - globalOutstandingLimit = Integer.getInteger(GLOBAL_OUTSTANDING_LIMIT, 1000) / divisor; - LOG.info("Override {} to {}", GLOBAL_OUTSTANDING_LIMIT, globalOutstandingLimit); } public Leader getLeader(){ @@ -107,6 +103,14 @@ public class LeaderZooKeeperServer extends QuorumZooKeeperServer { } @Override + public int getGlobalOutstandingLimit() { + int divisor = self.getQuorumSize() > 2 ? self.getQuorumSize() - 1 : 1; + int globalOutstandingLimit = super.getGlobalOutstandingLimit() / divisor; + LOG.info("Override {} to {}", GLOBAL_OUTSTANDING_LIMIT, globalOutstandingLimit); + return globalOutstandingLimit; + } + + @Override public void createSessionTracker() { sessionTracker = new LeaderSessionTracker( this, getZKDatabase().getSessionWithTimeOuts(),
