You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by wd...@apache.org on 2017/05/30 23:20:59 UTC
[2/2] kudu git commit: consensus: Acquire lock before snoozing FD
consensus: Acquire lock before snoozing FD
We should only call SnoozeFailureDetectorUnlocked() while holding the
state lock. This was caught in an unrelated change after adding a DCHECK
to SnoozeFailureDetectorUnlocked().
Change-Id: Ia6f2a27847db7efe34409f2fe9c915318d755732
Reviewed-on: http://gerrit.cloudera.org:8080/7010
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <as...@cloudera.com>
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/85465837
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/85465837
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/85465837
Branch: refs/heads/master
Commit: 85465837732e608f1873958b7e8f97b95a9ff0f3
Parents: 0954397
Author: Mike Percy <mp...@apache.org>
Authored: Sat May 27 17:10:06 2017 -0700
Committer: Mike Percy <mp...@apache.org>
Committed: Tue May 30 23:18:42 2017 +0000
----------------------------------------------------------------------
src/kudu/consensus/raft_consensus.cc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/85465837/src/kudu/consensus/raft_consensus.cc
----------------------------------------------------------------------
diff --git a/src/kudu/consensus/raft_consensus.cc b/src/kudu/consensus/raft_consensus.cc
index 062acb5..363478b 100644
--- a/src/kudu/consensus/raft_consensus.cc
+++ b/src/kudu/consensus/raft_consensus.cc
@@ -1319,10 +1319,12 @@ Status RaftConsensus::UpdateReplica(const ConsensusRequestPB* request,
Status s;
do {
s = log_synchronizer.WaitFor(
- MonoDelta::FromMilliseconds(FLAGS_raft_heartbeat_interval_ms));
+ MonoDelta::FromMilliseconds(FLAGS_raft_heartbeat_interval_ms));
// If just waiting for our log append to finish lets snooze the timer.
// We don't want to fire leader election because we're waiting on our own log.
if (s.IsTimedOut()) {
+ ReplicaState::UniqueLock lock;
+ RETURN_NOT_OK(state_->LockForRead(&lock));
SnoozeFailureDetectorUnlocked();
}
} while (s.IsTimedOut());