From b6472217c4193fce6ffef96478443cf596ea4336 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sun, 7 Feb 2016 16:08:40 -0800 Subject: [PATCH] Clear accepted/bestPromise .winner when disconnected. --- examples/entityScripts/{tribble.x.38.js => tribble.x.39.js} | 2 +- .../libraries/{virtualBaton.40.js => virtualBaton.41.js} | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) rename examples/entityScripts/{tribble.x.38.js => tribble.x.39.js} (98%) rename examples/libraries/{virtualBaton.40.js => virtualBaton.41.js} (98%) diff --git a/examples/entityScripts/tribble.x.38.js b/examples/entityScripts/tribble.x.39.js similarity index 98% rename from examples/entityScripts/tribble.x.38.js rename to examples/entityScripts/tribble.x.39.js index 3031ec6cd6..804666d344 100644 --- a/examples/entityScripts/tribble.x.38.js +++ b/examples/entityScripts/tribble.x.39.js @@ -1,6 +1,6 @@ (function () { // See tests/performance/tribbles.js - Script.include("../libraries/virtualBaton.40.js"); + Script.include("../libraries/virtualBaton.41.js"); var dimensions, oldColor, entityID, editRate = 60, moveRate = 1, diff --git a/examples/libraries/virtualBaton.40.js b/examples/libraries/virtualBaton.41.js similarity index 98% rename from examples/libraries/virtualBaton.40.js rename to examples/libraries/virtualBaton.41.js index 8453365c9d..a472a9fdda 100644 --- a/examples/libraries/virtualBaton.40.js +++ b/examples/libraries/virtualBaton.41.js @@ -219,10 +219,7 @@ function virtualBatonf(options) { var response = {proposalNumber: data.number, proposerId: data.proposerId}; if (betterNumber(data, bestProposal)) { bestProposal = data; - // For stability, we don't let any one proposer rule out a disconnnected winner. - // If someone notices that a winner has disconnected (in their recheckWatchdog), - // they call for a new election. To remain chosen, a quorum need to confirm here. - if (accepted.winner && connectionTest(accepted.winner)) { + if (accepted.winner) { response.number = accepted.number; response.winner = accepted.winner; } @@ -333,6 +330,7 @@ function virtualBatonf(options) { exports.recheckWatchdog = timers.setInterval(function recheck() { var holder = acceptedId(); // If we're waiting and we notice the holder is gone, ... if (holder && claimCallback && !electionWatchdog && !connectionTest(holder)) { + accepted.winner = bestPromise.winner = null; propose(); // ... propose an election. } }, recheckInterval);