1
0
Fork 0

raft bug. leader ship cannot be rendered to higher term and lower index.

This commit is contained in:
root 2016-08-24 09:26:34 +00:00
parent be51564141
commit c7f8046e48
2 changed files with 14 additions and 2 deletions

View File

@ -254,11 +254,16 @@ bool Agent::recvAppendEntriesRPC(
MUTEX_LOCKER(mutexLocker, _ioLock);
if (this->term() > term) {
LOG_TOPIC(WARN, Logger::AGENCY) << "I have a higher term than RPC caller.";
return false;
if (leaderCommitIndex >= _lastCommitIndex) {
_constituent.follow(term);
} else {
LOG_TOPIC(WARN, Logger::AGENCY) << "I have a higher term than RPC caller.";
return false;
}
}
if (!_constituent.vote(term, leaderId, prevIndex, prevTerm, true)) {
LOG_TOPIC(WARN, Logger::AGENCY) << "Not voting for " << leaderId;
return false;
}

View File

@ -529,6 +529,13 @@ function agencyTestSuite () {
var res = writeAgency([[{"/bumms":{"op":"set","new":"fallera"}, "/bummsfallera": {"op":"set","new":"lalalala"}}]]);
assertEqual(res.statusCode, 200);
assertEqual(readAndCheck([["/bumms", "/bummsfallera"]]), [{bumms:"fallera", bummsfallera: "lalalala"}]);
},
testThousand: function() {
var i;
for (i = 0; i < 1000; i++) {
writeAndCheck([[{x:12}]]);
}
}
};
}