Skip to content

Commit

Permalink
Adjust time comparisons to allow transitions at time 0
Browse files Browse the repository at this point in the history
Events should occur when the scheduled time <= model.time; before they
would only occur when the scheduled time < model.time.
  • Loading branch information
ongardie committed Jun 1, 2014
1 parent 5c9ba47 commit a5c8f57
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions raft.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ var logTerm = function(log, index) {
};

var rules = {};
raft.rules = rules;

var makeElectionAlarm = function(now) {
return now + (Math.random() + 1) * ELECTION_TIMEOUT;
Expand Down Expand Up @@ -72,14 +73,14 @@ var stepDown = function(model, server, term) {
server.term = term;
server.state = 'follower';
server.votedFor = null;
if (server.electionAlarm < model.time || server.electionAlarm == util.Inf) {
if (server.electionAlarm <= model.time || server.electionAlarm == util.Inf) {
server.electionAlarm = makeElectionAlarm(model.time);
}
};

rules.startNewElection = function(model, server) {
if ((server.state == 'follower' || server.state == 'candidate') &&
server.electionAlarm < model.time) {
server.electionAlarm <= model.time) {
server.electionAlarm = makeElectionAlarm(model.time);
server.term += 1;
server.votedFor = server.id;
Expand All @@ -94,7 +95,7 @@ rules.startNewElection = function(model, server) {

rules.sendRequestVote = function(model, server, peer) {
if (server.state == 'candidate' &&
server.rpcDue[peer] < model.time) {
server.rpcDue[peer] <= model.time) {
server.rpcDue[peer] = model.time + RPC_TIMEOUT;
sendRequest(model, {
from: server.id,
Expand All @@ -120,9 +121,9 @@ rules.becomeLeader = function(model, server) {

rules.sendAppendEntries = function(model, server, peer) {
if (server.state == 'leader' &&
(server.heartbeatDue[peer] < model.time ||
(server.heartbeatDue[peer] <= model.time ||
(server.nextIndex[peer] <= server.log.length &&
server.rpcDue[peer] < model.time))) {
server.rpcDue[peer] <= model.time))) {
var prevIndex = server.nextIndex[peer] - 1;
var lastIndex = Math.min(prevIndex + BATCH_SIZE,
server.log.length);
Expand Down

0 comments on commit a5c8f57

Please sign in to comment.