mirror of https://gitee.com/bigwinds/arangodb
raft bug. leader ship cannot be rendered to higher term and lower index.
This commit is contained in:
parent
be51564141
commit
c7f8046e48
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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}]]);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue