You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ha...@apache.org on 2017/08/03 18:28:26 UTC
zookeeper git commit: ZOOKEEPER-2852: Read snapshotSizeFactor from
system property
Repository: zookeeper
Updated Branches:
refs/heads/master 0cb4011da -> 3f7e4133f
ZOOKEEPER-2852: Read snapshotSizeFactor from system property
Author: Fangmin Lyu <al...@fb.com>
Reviewers: Michael Han <ha...@apache.org>
Closes #321 from lvfangmin/ZOOKEEPER-2852
Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/3f7e4133
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/3f7e4133
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/3f7e4133
Branch: refs/heads/master
Commit: 3f7e4133f3abc17df5eb4f0145d0833417bfdb33
Parents: 0cb4011
Author: Fangmin Lyu <al...@fb.com>
Authored: Thu Aug 3 11:28:20 2017 -0700
Committer: Michael Han <ha...@apache.org>
Committed: Thu Aug 3 11:28:20 2017 -0700
----------------------------------------------------------------------
.../org/apache/zookeeper/server/ZKDatabase.java | 31 ++++++++++++++++++--
.../zookeeper/server/quorum/LearnerHandler.java | 2 +-
2 files changed, 29 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/3f7e4133/src/java/main/org/apache/zookeeper/server/ZKDatabase.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/server/ZKDatabase.java b/src/java/main/org/apache/zookeeper/server/ZKDatabase.java
index 2845d28..16baf46 100644
--- a/src/java/main/org/apache/zookeeper/server/ZKDatabase.java
+++ b/src/java/main/org/apache/zookeeper/server/ZKDatabase.java
@@ -80,7 +80,8 @@ public class ZKDatabase {
* Default value is to use snapshot if txnlog size exceeds 1/3 the size of snapshot
*/
public static final String SNAPSHOT_SIZE_FACTOR = "zookeeper.snapshotSizeFactor";
- private double snapshotSizeFactor = 0.33;
+ public static final double DEFAULT_SNAPSHOT_SIZE_FACTOR = 0.33;
+ private double snapshotSizeFactor;
public static final int commitLogCount = 500;
protected static int commitLogBuffer = 700;
@@ -98,6 +99,23 @@ public class ZKDatabase {
dataTree = new DataTree();
sessionsWithTimeouts = new ConcurrentHashMap<Long, Integer>();
this.snapLog = snapLog;
+
+ try {
+ snapshotSizeFactor = Double.parseDouble(
+ System.getProperty(SNAPSHOT_SIZE_FACTOR,
+ Double.toString(DEFAULT_SNAPSHOT_SIZE_FACTOR)));
+ if (snapshotSizeFactor > 1) {
+ snapshotSizeFactor = DEFAULT_SNAPSHOT_SIZE_FACTOR;
+ LOG.warn("The configured {} is invalid, going to use " +
+ "the default {}", SNAPSHOT_SIZE_FACTOR,
+ DEFAULT_SNAPSHOT_SIZE_FACTOR);
+ }
+ } catch (NumberFormatException e) {
+ LOG.error("Error parsing {}, using default value {}",
+ SNAPSHOT_SIZE_FACTOR, DEFAULT_SNAPSHOT_SIZE_FACTOR);
+ snapshotSizeFactor = DEFAULT_SNAPSHOT_SIZE_FACTOR;
+ }
+ LOG.info("{} = {}", SNAPSHOT_SIZE_FACTOR, snapshotSizeFactor);
}
/**
@@ -269,8 +287,15 @@ public class ZKDatabase {
}
}
- public double getSnapshotSizeFactor() {
- return snapshotSizeFactor;
+ public boolean isTxnLogSyncEnabled() {
+ boolean enabled = snapshotSizeFactor >= 0;
+ if (enabled) {
+ LOG.info("On disk txn sync enabled with snapshotSizeFactor "
+ + snapshotSizeFactor);
+ } else {
+ LOG.info("On disk txn sync disabled");
+ }
+ return enabled;
}
public long calculateTxnLogSizeLimit() {
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/3f7e4133/src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java b/src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java
index 5fc5efc..1fbe708 100644
--- a/src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java
+++ b/src/java/main/org/apache/zookeeper/server/quorum/LearnerHandler.java
@@ -672,7 +672,7 @@ public class LearnerHandler extends ZooKeeperThread {
// Keep track of the latest zxid which already queued
long currentZxid = peerLastZxid;
boolean needSnap = true;
- boolean txnLogSyncEnabled = (db.getSnapshotSizeFactor() >= 0);
+ boolean txnLogSyncEnabled = db.isTxnLogSyncEnabled();
ReentrantReadWriteLock lock = db.getLogLock();
ReadLock rl = lock.readLock();
try {