Timing change to avoid allowing a server to race ahead of the

majority of validators. Enforce minimum ledger open time which
is extended if there are too few validations.
This commit is contained in:
JoelKatz
2013-04-15 09:50:23 -07:00
parent b7eccd1dce
commit 0bc9c0b737
3 changed files with 24 additions and 6 deletions

View File

@@ -17,8 +17,10 @@ bool ContinuousLedgerTiming::shouldClose(
bool anyTransactions,
int previousProposers, // proposers in the last closing
int proposersClosed, // proposers who have currently closed this ledgers
int previousMSeconds, // seconds the previous ledger took to reach consensus
int currentMSeconds, // seconds since the previous ledger closed
int proposersValidated, // proposers who have validated the last closed ledger
int previousMSeconds, // milliseconds the previous ledger took to reach consensus
int currentMSeconds, // milliseconds since the previous ledger closed
int openMSeconds, // milliseconds since the previous LCL was computed
int idleInterval) // network's desired idle interval
{
if ((previousMSeconds < -1000) || (previousMSeconds > 600000) ||
@@ -51,6 +53,18 @@ bool ContinuousLedgerTiming::shouldClose(
return currentMSeconds >= (idleInterval * 1000); // normal idle
}
if (openMSeconds < LEDGER_MIN_CLOSE)
{
cLog(lsDEBUG) << "Must wait minimum time before closing";
return false;
}
if ((currentMSeconds < previousMSeconds) && ((proposersClosed + proposersValidated) < previousProposers))
{
cLog(lsDEBUG) << "We are waiting for more closes/validations";
return false;
}
return true; // this ledger should close now
}