From 3d5ff2b4cd05f1c35ff70f24f4851aff361c0228 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Tue, 3 Nov 2015 13:45:27 -0800 Subject: [PATCH] Prevent some missed proposals, faster consensus catch up --- src/ripple/app/ledger/impl/LedgerConsensusImp.cpp | 9 +++++++-- src/ripple/app/misc/NetworkOPs.cpp | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp b/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp index 40c1dd3b0..5129d893b 100644 --- a/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp +++ b/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp @@ -298,6 +298,13 @@ LedgerConsensusImp::LedgerConsensusImp ( // update the network status table as to whether we're // proposing/validating consensus_.setProposing (mProposing, mValidating); + + playbackProposals (); + if (mPeerPositions.size () > (mPreviousProposers / 2)) + { + // We may be falling behind, don't wait for the timer + timerEntry (); + } } Json::Value LedgerConsensusImp::getJson (bool full) @@ -976,8 +983,6 @@ void LedgerConsensusImp::accept (std::shared_ptr set) consensus_.takePosition (mPreviousLedger->info().seq, set); assert (set->getHash () == mOurPosition->getCurrentHash ()); - // these are now obsolete - consensus_.peekStoredProposals ().clear (); } auto closeTime = mOurPosition->getCloseTime(); diff --git a/src/ripple/app/misc/NetworkOPs.cpp b/src/ripple/app/misc/NetworkOPs.cpp index 93e132c9f..dc18ee32c 100644 --- a/src/ripple/app/misc/NetworkOPs.cpp +++ b/src/ripple/app/misc/NetworkOPs.cpp @@ -1384,6 +1384,9 @@ void NetworkOPsImp::processTrustedProposal ( bool relay = true; + if (mConsensus) + mConsensus->storeProposal (proposal, nodePublic); + if (!haveConsensusObject ()) { m_journal.info << "Received proposal outside consensus window"; @@ -1393,8 +1396,6 @@ void NetworkOPsImp::processTrustedProposal ( } else { - mConsensus->storeProposal (proposal, nodePublic); - if (mLedgerConsensus->getLCL () == proposal->getPrevLedger ()) { relay = mLedgerConsensus->peerPosition (proposal);