mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Move fields from Ledger to LedgerInfo.
This commit is contained in:
committed by
Vinnie Falco
parent
1b6c707abb
commit
c7ebe7205c
@@ -155,7 +155,7 @@ public:
|
||||
|
||||
LedgerIndex getCurrentLedgerIndex ()
|
||||
{
|
||||
return mCurrentLedger.get ()->getLedgerSeq ();
|
||||
return mCurrentLedger.get ()->info().seq;
|
||||
}
|
||||
|
||||
LedgerIndex getValidLedgerIndex ()
|
||||
@@ -172,7 +172,7 @@ public:
|
||||
return 999999;
|
||||
}
|
||||
|
||||
std::int64_t ret = getApp().getOPs ().getCloseTimeNC ();
|
||||
std::int64_t ret = getApp().getOPs().getCloseTimeNC();
|
||||
ret -= static_cast<std::int64_t> (pubClose);
|
||||
ret = (ret > 0) ? ret : 0;
|
||||
|
||||
@@ -189,7 +189,7 @@ public:
|
||||
return 999999;
|
||||
}
|
||||
|
||||
std::int64_t ret = getApp().getOPs ().getCloseTimeNC ();
|
||||
std::int64_t ret = getApp().getOPs().getCloseTimeNC();
|
||||
ret -= static_cast<std::int64_t> (valClose);
|
||||
ret = (ret > 0) ? ret : 0;
|
||||
|
||||
@@ -235,28 +235,28 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
signTime = l->getCloseTimeNC();
|
||||
signTime = l->info().closeTime;
|
||||
}
|
||||
|
||||
mValidLedger.set (l);
|
||||
mValidLedgerSign = signTime;
|
||||
mValidLedgerSeq = l->getLedgerSeq();
|
||||
mValidLedgerSeq = l->info().seq;
|
||||
getApp().getOPs().updateLocalTx (l);
|
||||
getApp().getSHAMapStore().onLedgerClosed (getValidatedLedger());
|
||||
mLedgerHistory.validatedLedger (l);
|
||||
getApp().getAmendmentTable().doValidatedLedger (l);
|
||||
|
||||
#if RIPPLE_HOOK_VALIDATORS
|
||||
getApp().getValidators().onLedgerClosed (l->getLedgerSeq(),
|
||||
l->getHash(), l->getParentHash());
|
||||
getApp().getValidators().onLedgerClosed (l->info().seq,
|
||||
l->getHash(), l->info().parentHash);
|
||||
#endif
|
||||
}
|
||||
|
||||
void setPubLedger(Ledger::ref l)
|
||||
{
|
||||
mPubLedger = l;
|
||||
mPubLedgerClose = l->getCloseTimeNC();
|
||||
mPubLedgerSeq = l->getLedgerSeq();
|
||||
mPubLedgerClose = l->info().closeTime;
|
||||
mPubLedgerSeq = l->info().seq;
|
||||
}
|
||||
|
||||
void addHeldTransaction (Transaction::ref transaction)
|
||||
@@ -297,9 +297,8 @@ public:
|
||||
|
||||
void pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL)
|
||||
{
|
||||
assert (newLCL->isClosed () && newLCL->isAccepted ());
|
||||
assert (!newOL->isClosed () && !newOL->isAccepted ());
|
||||
|
||||
assert (! newLCL->info().open && newLCL->info().accepted);
|
||||
assert (newOL->info().open && !newOL->info().accepted);
|
||||
|
||||
{
|
||||
ScopedLockType ml (m_mutex);
|
||||
@@ -331,7 +330,7 @@ public:
|
||||
mCurrentLedger.set (current);
|
||||
mClosedLedger.set (lastClosed);
|
||||
|
||||
assert (!current->isClosed ());
|
||||
assert (current->info().open);
|
||||
}
|
||||
checkAccept (lastClosed);
|
||||
}
|
||||
@@ -518,7 +517,7 @@ public:
|
||||
{
|
||||
// The earliest ledger we will let people fetch is ledger zero,
|
||||
// unless that creates a larger range than allowed
|
||||
std::uint32_t e = getClosedLedger()->getLedgerSeq();
|
||||
std::uint32_t e = getClosedLedger()->info().seq;
|
||||
|
||||
if (e > fetch_depth_)
|
||||
e -= fetch_depth_;
|
||||
@@ -529,13 +528,13 @@ public:
|
||||
|
||||
void tryFill (Job& job, Ledger::pointer ledger)
|
||||
{
|
||||
std::uint32_t seq = ledger->getLedgerSeq ();
|
||||
uint256 prevHash = ledger->getParentHash ();
|
||||
std::uint32_t seq = ledger->info().seq;
|
||||
uint256 prevHash = ledger->info().parentHash;
|
||||
|
||||
std::map< std::uint32_t, std::pair<uint256, uint256> > ledgerHashes;
|
||||
|
||||
std::uint32_t minHas = ledger->getLedgerSeq ();
|
||||
std::uint32_t maxHas = ledger->getLedgerSeq ();
|
||||
std::uint32_t minHas = ledger->info().seq;
|
||||
std::uint32_t maxHas = ledger->info().seq;
|
||||
|
||||
while (! job.shouldCancel() && seq > 0)
|
||||
{
|
||||
@@ -638,7 +637,7 @@ public:
|
||||
int invalidate = 0;
|
||||
boost::optional<uint256> hash;
|
||||
|
||||
for (std::uint32_t lSeq = ledger->getLedgerSeq () - 1; lSeq > 0; --lSeq)
|
||||
for (std::uint32_t lSeq = ledger->info().seq - 1; lSeq > 0; --lSeq)
|
||||
{
|
||||
if (haveLedger (lSeq))
|
||||
{
|
||||
@@ -682,7 +681,7 @@ public:
|
||||
void setFullLedger (Ledger::pointer ledger, bool isSynchronous, bool isCurrent)
|
||||
{
|
||||
// A new ledger has been accepted as part of the trusted chain
|
||||
WriteLog (lsDEBUG, LedgerMaster) << "Ledger " << ledger->getLedgerSeq () << " accepted :" << ledger->getHash ();
|
||||
WriteLog (lsDEBUG, LedgerMaster) << "Ledger " << ledger->info().seq << " accepted :" << ledger->getHash ();
|
||||
assert (ledger->stateMap().getHash ().isNonZero ());
|
||||
|
||||
ledger->setValidated();
|
||||
@@ -697,12 +696,12 @@ public:
|
||||
|
||||
{
|
||||
ScopedLockType ml (mCompleteLock);
|
||||
mCompleteLedgers.setValue (ledger->getLedgerSeq ());
|
||||
mCompleteLedgers.setValue (ledger->info().seq);
|
||||
}
|
||||
|
||||
ScopedLockType ml (m_mutex);
|
||||
|
||||
if (ledger->getLedgerSeq() > mValidLedgerSeq)
|
||||
if (ledger->info().seq > mValidLedgerSeq)
|
||||
setValidLedger(ledger);
|
||||
if (!mPubLedger)
|
||||
{
|
||||
@@ -710,12 +709,12 @@ public:
|
||||
getApp().getOrderBookDB().setup(ledger);
|
||||
}
|
||||
|
||||
if ((ledger->getLedgerSeq () != 0) && haveLedger (ledger->getLedgerSeq () - 1))
|
||||
if ((ledger->info().seq != 0) && haveLedger (ledger->info().seq - 1))
|
||||
{
|
||||
// we think we have the previous ledger, double check
|
||||
Ledger::pointer prevLedger = getLedgerBySeq (ledger->getLedgerSeq () - 1);
|
||||
Ledger::pointer prevLedger = getLedgerBySeq (ledger->info().seq - 1);
|
||||
|
||||
if (!prevLedger || (prevLedger->getHash () != ledger->getParentHash ()))
|
||||
if (!prevLedger || (prevLedger->getHash () != ledger->info().parentHash))
|
||||
{
|
||||
WriteLog (lsWARNING, LedgerMaster) << "Acquired ledger invalidates previous ledger: " <<
|
||||
(prevLedger ? "hashMismatch" : "missingLedger");
|
||||
@@ -797,13 +796,13 @@ public:
|
||||
|
||||
void checkAccept (Ledger::ref ledger)
|
||||
{
|
||||
if (ledger->getLedgerSeq() <= mValidLedgerSeq)
|
||||
if (ledger->info().seq <= mValidLedgerSeq)
|
||||
return;
|
||||
|
||||
// Can we advance the last fully-validated ledger? If so, can we publish?
|
||||
ScopedLockType ml (m_mutex);
|
||||
|
||||
if (ledger->getLedgerSeq() <= mValidLedgerSeq)
|
||||
if (ledger->info().seq <= mValidLedgerSeq)
|
||||
return;
|
||||
|
||||
int minVal = getNeededValidations();
|
||||
@@ -814,10 +813,10 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
WriteLog (lsINFO, LedgerMaster) << "Advancing accepted ledger to " << ledger->getLedgerSeq() << " with >= " << minVal << " validations";
|
||||
WriteLog (lsINFO, LedgerMaster) << "Advancing accepted ledger to " << ledger->info().seq << " with >= " << minVal << " validations";
|
||||
|
||||
mLastValidateHash = ledger->getHash();
|
||||
mLastValidateSeq = ledger->getLedgerSeq();
|
||||
mLastValidateSeq = ledger->info().seq;
|
||||
|
||||
ledger->setValidated();
|
||||
ledger->setFull();
|
||||
@@ -832,7 +831,7 @@ public:
|
||||
std::uint64_t const base = getApp().getFeeTrack().getLoadBase();
|
||||
auto fees = getApp().getValidations().fees (ledger->getHash(), base);
|
||||
{
|
||||
auto fees2 = getApp().getValidations().fees (ledger->getParentHash(), base);
|
||||
auto fees2 = getApp().getValidations().fees (ledger->info().parentHash, base);
|
||||
fees.reserve (fees.size() + fees2.size());
|
||||
std::copy (fees2.begin(), fees2.end(), std::back_inserter(fees));
|
||||
}
|
||||
@@ -863,18 +862,18 @@ public:
|
||||
if (standalone_)
|
||||
return;
|
||||
|
||||
if (ledger->getLedgerSeq() <= mValidLedgerSeq)
|
||||
if (ledger->info().seq <= mValidLedgerSeq)
|
||||
{
|
||||
WriteLog (lsINFO, LedgerConsensus)
|
||||
<< "Consensus built old ledger: "
|
||||
<< ledger->getLedgerSeq() << " <= " << mValidLedgerSeq;
|
||||
<< ledger->info().seq << " <= " << mValidLedgerSeq;
|
||||
return;
|
||||
}
|
||||
|
||||
// See if this ledger can be the new fully-validated ledger
|
||||
checkAccept (ledger);
|
||||
|
||||
if (ledger->getLedgerSeq() <= mValidLedgerSeq)
|
||||
if (ledger->info().seq <= mValidLedgerSeq)
|
||||
{
|
||||
WriteLog (lsDEBUG, LedgerConsensus)
|
||||
<< "Consensus ledger fully validated";
|
||||
@@ -928,7 +927,7 @@ public:
|
||||
{
|
||||
Ledger::pointer ledger = getLedgerByHash (v.first);
|
||||
if (ledger)
|
||||
v.second.ledgerSeq_ = ledger->getLedgerSeq();
|
||||
v.second.ledgerSeq_ = ledger->info().seq;
|
||||
}
|
||||
|
||||
if (v.second.ledgerSeq_ > maxSeq)
|
||||
@@ -972,7 +971,7 @@ public:
|
||||
// Try to get the hash of a ledger we need to fetch for history
|
||||
boost::optional<LedgerHash> ret;
|
||||
|
||||
if (mHistLedger && (mHistLedger->getLedgerSeq() >= index))
|
||||
if (mHistLedger && (mHistLedger->info().seq >= index))
|
||||
{
|
||||
ret = hashOfSeq(*mHistLedger, index, m_journal);
|
||||
if (! ret)
|
||||
@@ -1028,7 +1027,7 @@ public:
|
||||
|
||||
std::uint32_t pubSeq = mPubLedgerSeq + 1; // Next sequence to publish
|
||||
Ledger::pointer valLedger = mValidLedger.get ();
|
||||
std::uint32_t valSeq = valLedger->getLedgerSeq ();
|
||||
std::uint32_t valSeq = valLedger->info().seq;
|
||||
|
||||
ScopedUnlockType sul(m_mutex);
|
||||
try
|
||||
@@ -1064,7 +1063,7 @@ public:
|
||||
*hash, seq, InboundLedger::fcGENERIC);
|
||||
|
||||
// Did we acquire the next ledger we need to publish?
|
||||
if (ledger && (ledger->getLedgerSeq() == pubSeq))
|
||||
if (ledger && (ledger->info().seq == pubSeq))
|
||||
{
|
||||
ledger->setValidated();
|
||||
ret.push_back (ledger);
|
||||
@@ -1101,7 +1100,7 @@ public:
|
||||
// VFALCO NOTE This should return boost::optional<uint256>
|
||||
uint256 getLedgerHash(std::uint32_t desiredSeq, Ledger::ref knownGoodLedger)
|
||||
{
|
||||
assert(desiredSeq < knownGoodLedger->getLedgerSeq());
|
||||
assert(desiredSeq < knownGoodLedger->info().seq);
|
||||
|
||||
auto hash = hashOfSeq(*knownGoodLedger, desiredSeq, m_journal);
|
||||
|
||||
@@ -1151,7 +1150,7 @@ public:
|
||||
ScopedLockType ml (m_mutex);
|
||||
|
||||
if (!mValidLedger.empty() &&
|
||||
(!mPathLedger || (mPathLedger->getLedgerSeq() != mValidLedgerSeq)))
|
||||
(!mPathLedger || (mPathLedger->info().seq != mValidLedgerSeq)))
|
||||
{ // We have a new valid ledger since the last full pathfinding
|
||||
mPathLedger = mValidLedger.get ();
|
||||
lastLedger = mPathLedger;
|
||||
@@ -1170,7 +1169,7 @@ public:
|
||||
if (!standalone_)
|
||||
{ // don't pathfind with a ledger that's more than 60 seconds old
|
||||
std::int64_t age = getApp().getOPs().getCloseTimeNC();
|
||||
age -= static_cast<std::int64_t> (lastLedger->getCloseTimeNC());
|
||||
age -= static_cast<std::int64_t> (lastLedger->info().closeTime);
|
||||
if (age > 60)
|
||||
{
|
||||
WriteLog (lsDEBUG, LedgerMaster) << "Published ledger too old for updating paths";
|
||||
@@ -1186,7 +1185,7 @@ public:
|
||||
catch (SHAMapMissingNode&)
|
||||
{
|
||||
WriteLog (lsINFO, LedgerMaster) << "Missing node detected during pathfinding";
|
||||
getApp().getInboundLedgers().acquire(lastLedger->getHash (), lastLedger->getLedgerSeq (),
|
||||
getApp().getInboundLedgers().acquire(lastLedger->getHash (), lastLedger->info().seq,
|
||||
InboundLedger::fcGENERIC);
|
||||
}
|
||||
}
|
||||
@@ -1314,7 +1313,7 @@ public:
|
||||
// VFALCO NOTE This should return boost::optional<uint256>
|
||||
uint256 walkHashBySeq (std::uint32_t index, Ledger::ref referenceLedger)
|
||||
{
|
||||
if (!referenceLedger || (referenceLedger->getLedgerSeq() < index))
|
||||
if (!referenceLedger || (referenceLedger->info().seq < index))
|
||||
{
|
||||
// Nothing we can do. No validated ledger.
|
||||
return zero;
|
||||
@@ -1370,7 +1369,7 @@ public:
|
||||
auto valid = mValidLedger.get ();
|
||||
if (valid)
|
||||
{
|
||||
if (valid->getLedgerSeq() == index)
|
||||
if (valid->info().seq == index)
|
||||
return valid;
|
||||
|
||||
try
|
||||
@@ -1391,11 +1390,11 @@ public:
|
||||
return ret;
|
||||
|
||||
ret = mCurrentLedger.get ();
|
||||
if (ret && (ret->getLedgerSeq () == index))
|
||||
if (ret && (ret->info().seq == index))
|
||||
return ret;
|
||||
|
||||
ret = mClosedLedger.get ();
|
||||
if (ret && (ret->getLedgerSeq () == index))
|
||||
if (ret && (ret->info().seq == index))
|
||||
return ret;
|
||||
|
||||
clearLedger (index);
|
||||
@@ -1529,7 +1528,8 @@ void LedgerMasterImp::doAdvance ()
|
||||
std::uint32_t missing;
|
||||
{
|
||||
ScopedLockType sl (mCompleteLock);
|
||||
missing = mCompleteLedgers.prevMissing(mPubLedger->getLedgerSeq());
|
||||
missing = mCompleteLedgers.prevMissing(
|
||||
mPubLedger->info().seq);
|
||||
}
|
||||
WriteLog (lsTRACE, LedgerMaster) << "tryAdvance discovered missing " << missing;
|
||||
if ((missing != RangeSet::absent) && (missing > 0) &&
|
||||
@@ -1566,15 +1566,20 @@ void LedgerMasterImp::doAdvance ()
|
||||
}
|
||||
if (ledger)
|
||||
{
|
||||
assert(ledger->getLedgerSeq() == missing);
|
||||
WriteLog (lsTRACE, LedgerMaster) << "tryAdvance acquired " << ledger->getLedgerSeq();
|
||||
auto seq = ledger->info().seq;
|
||||
assert(seq == missing);
|
||||
WriteLog (lsTRACE, LedgerMaster)
|
||||
<< "tryAdvance acquired "
|
||||
<< ledger->info().seq;
|
||||
setFullLedger(ledger, false, false);
|
||||
mHistLedger = ledger;
|
||||
if ((mFillInProgress == 0) && (Ledger::getHashByIndex(ledger->getLedgerSeq() - 1) == ledger->getParentHash()))
|
||||
auto& parent = ledger->info().parentHash;
|
||||
if (mFillInProgress == 0 &&
|
||||
Ledger::getHashByIndex(seq - 1) == parent)
|
||||
{
|
||||
// Previous ledger is in DB
|
||||
ScopedLockType lock (m_mutex);
|
||||
mFillInProgress = ledger->getLedgerSeq();
|
||||
mFillInProgress = ledger->info().seq;
|
||||
getApp().getJobQueue().addJob(jtADVANCE, "tryFill", std::bind (
|
||||
&LedgerMasterImp::tryFill, this,
|
||||
std::placeholders::_1, ledger));
|
||||
@@ -1632,7 +1637,7 @@ void LedgerMasterImp::doAdvance ()
|
||||
{
|
||||
ScopedUnlockType sul (m_mutex);
|
||||
WriteLog(lsDEBUG, LedgerMaster) <<
|
||||
"tryAdvance publishing seq " << ledger->getLedgerSeq();
|
||||
"tryAdvance publishing seq " << ledger->info().seq;
|
||||
|
||||
setFullLedger(ledger, true, true);
|
||||
getApp().getOPs().pubLedger(ledger);
|
||||
@@ -1718,7 +1723,7 @@ void LedgerMasterImp::makeFetchPack (
|
||||
return;
|
||||
}
|
||||
|
||||
if (!haveLedger->isClosed ())
|
||||
if (haveLedger->info().open)
|
||||
{
|
||||
m_journal.warning
|
||||
<< "Peer requests fetch pack from open ledger: "
|
||||
@@ -1727,14 +1732,14 @@ void LedgerMasterImp::makeFetchPack (
|
||||
return;
|
||||
}
|
||||
|
||||
if (haveLedger->getLedgerSeq() < getEarliestFetch())
|
||||
if (haveLedger->info().seq < getEarliestFetch())
|
||||
{
|
||||
m_journal.debug << "Peer requests fetch pack that is too early";
|
||||
peer->charge (Resource::feeInvalidRequest);
|
||||
return;
|
||||
}
|
||||
|
||||
auto wantLedger = getLedgerByHash (haveLedger->getParentHash ());
|
||||
auto wantLedger = getLedgerByHash (haveLedger->info().parentHash);
|
||||
|
||||
if (!wantLedger)
|
||||
{
|
||||
@@ -1780,7 +1785,7 @@ void LedgerMasterImp::makeFetchPack (
|
||||
// the same process adding the previous ledger to the FetchPack.
|
||||
do
|
||||
{
|
||||
std::uint32_t lSeq = wantLedger->getLedgerSeq ();
|
||||
std::uint32_t lSeq = wantLedger->info().seq;
|
||||
|
||||
protocol::TMIndexedObject& newObj = *reply.add_objects ();
|
||||
newObj.set_hash (wantLedger->getHash ().begin (), 256 / 8);
|
||||
@@ -1795,7 +1800,7 @@ void LedgerMasterImp::makeFetchPack (
|
||||
std::bind (fpAppender, &reply, lSeq, std::placeholders::_1,
|
||||
std::placeholders::_2));
|
||||
|
||||
if (wantLedger->getTransHash ().isNonZero ())
|
||||
if (wantLedger->info().txHash.isNonZero ())
|
||||
wantLedger->txMap().getFetchPack (
|
||||
nullptr, true, 512,
|
||||
std::bind (fpAppender, &reply, lSeq, std::placeholders::_1,
|
||||
@@ -1806,7 +1811,7 @@ void LedgerMasterImp::makeFetchPack (
|
||||
|
||||
// move may save a ref/unref
|
||||
haveLedger = std::move (wantLedger);
|
||||
wantLedger = getLedgerByHash (haveLedger->getParentHash ());
|
||||
wantLedger = getLedgerByHash (haveLedger->info().parentHash);
|
||||
}
|
||||
while (wantLedger &&
|
||||
UptimeTimer::getInstance ().getElapsedSeconds () <= uUptime + 1);
|
||||
|
||||
Reference in New Issue
Block a user