From 241393410adaf02c3b4d5bb45795bd33f89e7f1f Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 6 Aug 2012 03:57:01 -0700 Subject: [PATCH] More json information about consensus process. Fix a bug where swithing ledgers during the consensus window caused us to use the wrong close resolution. --- src/LedgerConsensus.cpp | 15 +++++++++++++-- src/LedgerProposal.cpp | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index e07bd8a817..72cb43ebc9 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -201,7 +201,7 @@ LedgerConsensus::LedgerConsensus(const uint256& prevLCLHash, Ledger::pointer pre assert(mPreviousMSeconds); mCloseResolution = ContinuousLedgerTiming::getNextLedgerTimeResolution( - previousLedger->getCloseResolution(), previousLedger->getCloseAgree(), previousLedger->getLedgerSeq() + 1); + mPreviousLedger->getCloseResolution(), mPreviousLedger->getCloseAgree(), previousLedger->getLedgerSeq() + 1); mHaveCorrectLCL = previousLedger->getHash() == prevLCLHash; @@ -464,6 +464,9 @@ void LedgerConsensus::timerEntry() theApp->getOPs().switchLastClosedLedger(consensus, true); mPreviousLedger = consensus; mHaveCorrectLCL = true; + mCloseResolution = ContinuousLedgerTiming::getNextLedgerTimeResolution( + mPreviousLedger->getCloseResolution(), mPreviousLedger->getCloseAgree(), + mPreviousLedger->getLedgerSeq() + 1); } else Log(lsINFO) << "We still don't have it"; } @@ -962,9 +965,17 @@ Json::Value LedgerConsensus::getJson() Json::Value ret(Json::objectValue); ret["proposing"] = mProposing ? "yes" : "no"; ret["validating"] = mValidating ? "yes" : "no"; - ret["synched"] = mHaveCorrectLCL ? "yes" : "no"; ret["proposers"] = static_cast(mPeerPositions.size()); + if (mHaveCorrectLCL) + { + ret["synched"] = "yes"; + ret["ledger_seq"] = mPreviousLedger->getLedgerSeq() + 1; + ret["close_granularity"] = mCloseResolution; + } + else + ret["synched"] = "no"; + switch (mState) { case lcsPRE_CLOSE: ret["state"] = "open"; break; diff --git a/src/LedgerProposal.cpp b/src/LedgerProposal.cpp index 55c7f0afc6..70d9458f6c 100644 --- a/src/LedgerProposal.cpp +++ b/src/LedgerProposal.cpp @@ -72,4 +72,18 @@ std::vector LedgerProposal::sign(void) return ret; } +Json::Value LedgerProposal::getJson() const +{ + Json::Value ret = Json::objectValue; + ret["previous_ledger"] = mPreviousLedger.GetHex(); + ret["transaction_hash"] = mCurrentHash.GetHex(); + ret["close_time"] = mCloseTime; + ret["propose_seq"] = mProposeSeq; + + if (mPublicKey.isValid()) + ret["peer_id"] = mPublicKey.humanNodePublic(); + + return ret; +} + // vim:ts=4