From 8b27b90566734ed56952b6d5dc2430fc088ce6ac Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sun, 7 Feb 2016 14:57:29 -0800 Subject: [PATCH] Verify validId before reporting a winning reponse to a proposal. --- examples/entityScripts/{tribble.x.37.js => tribble.x.38.js} | 2 +- .../libraries/{virtualBaton.39.js => virtualBaton.40.js} | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) rename examples/entityScripts/{tribble.x.37.js => tribble.x.38.js} (98%) rename examples/libraries/{virtualBaton.39.js => virtualBaton.40.js} (98%) diff --git a/examples/entityScripts/tribble.x.37.js b/examples/entityScripts/tribble.x.38.js similarity index 98% rename from examples/entityScripts/tribble.x.37.js rename to examples/entityScripts/tribble.x.38.js index 05f7154fd1..3031ec6cd6 100644 --- a/examples/entityScripts/tribble.x.37.js +++ b/examples/entityScripts/tribble.x.38.js @@ -1,6 +1,6 @@ (function () { // See tests/performance/tribbles.js - Script.include("../libraries/virtualBaton.39.js"); + Script.include("../libraries/virtualBaton.40.js"); var dimensions, oldColor, entityID, editRate = 60, moveRate = 1, diff --git a/examples/libraries/virtualBaton.39.js b/examples/libraries/virtualBaton.40.js similarity index 98% rename from examples/libraries/virtualBaton.39.js rename to examples/libraries/virtualBaton.40.js index 726a5b2c49..8453365c9d 100644 --- a/examples/libraries/virtualBaton.39.js +++ b/examples/libraries/virtualBaton.40.js @@ -219,7 +219,10 @@ function virtualBatonf(options) { var response = {proposalNumber: data.number, proposerId: data.proposerId}; if (betterNumber(data, bestProposal)) { bestProposal = data; - if (accepted.winner) { + // 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)) { response.number = accepted.number; response.winner = accepted.winner; }