mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Don't save unvalidated transactions to any transaction database.
This commit is contained in:
@@ -15,7 +15,7 @@ Ledger::Ledger (const RippleAddress& masterID, uint64 startAmount)
|
||||
, mCloseFlags (0)
|
||||
, mClosed (false)
|
||||
, mValidHash (false)
|
||||
, mAccepted (false)
|
||||
, mValidated (false)
|
||||
, mImmutable (false)
|
||||
, mTransactionMap (boost::make_shared <SHAMap> (smtTRANSACTION))
|
||||
, mAccountStateMap (boost::make_shared <SHAMap> (smtSTATE))
|
||||
@@ -59,7 +59,7 @@ Ledger::Ledger (uint256 const& parentHash,
|
||||
, mCloseFlags (closeFlags)
|
||||
, mClosed (false)
|
||||
, mValidHash (false)
|
||||
, mAccepted (false)
|
||||
, mValidated (false)
|
||||
, mImmutable (true)
|
||||
, mTransactionMap (boost::make_shared <SHAMap> (smtTRANSACTION, transHash))
|
||||
, mAccountStateMap (boost::make_shared <SHAMap> (smtSTATE, accountHash))
|
||||
@@ -98,7 +98,7 @@ Ledger::Ledger (Ledger& ledger,
|
||||
, mCloseFlags (ledger.mCloseFlags)
|
||||
, mClosed (ledger.mClosed)
|
||||
, mValidHash (false)
|
||||
, mAccepted (ledger.mAccepted)
|
||||
, mValidated (ledger.mValidated)
|
||||
, mImmutable (!isMutable)
|
||||
, mTransactionMap (ledger.mTransactionMap->snapShot (isMutable))
|
||||
, mAccountStateMap (ledger.mAccountStateMap->snapShot (isMutable))
|
||||
@@ -117,7 +117,7 @@ Ledger::Ledger (bool /* dummy */,
|
||||
, mCloseFlags (0)
|
||||
, mClosed (false)
|
||||
, mValidHash (false)
|
||||
, mAccepted (false)
|
||||
, mValidated (true)
|
||||
, mImmutable (false)
|
||||
, mTransactionMap (boost::make_shared <SHAMap> (smtTRANSACTION))
|
||||
, mAccountStateMap (prevLedger.mAccountStateMap->snapShot (true))
|
||||
@@ -149,7 +149,7 @@ Ledger::Ledger (Blob const& rawLedger,
|
||||
bool hasPrefix)
|
||||
: mClosed (false)
|
||||
, mValidHash (false)
|
||||
, mAccepted (false)
|
||||
, mValidated (false)
|
||||
, mImmutable (true)
|
||||
{
|
||||
Serializer s (rawLedger);
|
||||
@@ -160,7 +160,7 @@ Ledger::Ledger (Blob const& rawLedger,
|
||||
}
|
||||
|
||||
Ledger::Ledger (const std::string& rawLedger, bool hasPrefix) :
|
||||
mClosed (false), mValidHash (false), mAccepted (false), mImmutable (true)
|
||||
mClosed (false), mValidHash (false), mValidated (false), mImmutable (true)
|
||||
{
|
||||
Serializer s (rawLedger);
|
||||
setRaw (s, hasPrefix);
|
||||
@@ -243,11 +243,10 @@ void Ledger::addRaw (Serializer& s) const
|
||||
void Ledger::setAccepted (uint32 closeTime, int closeResolution, bool correctCloseTime)
|
||||
{
|
||||
// used when we witnessed the consensus
|
||||
assert (mClosed && !mAccepted);
|
||||
assert (mClosed);
|
||||
mCloseTime = correctCloseTime ? roundCloseTime (closeTime, closeResolution) : closeTime;
|
||||
mCloseResolution = closeResolution;
|
||||
mCloseFlags = correctCloseTime ? 0 : sLCF_NoConsensusTime;
|
||||
mAccepted = true;
|
||||
setImmutable ();
|
||||
}
|
||||
|
||||
@@ -258,7 +257,6 @@ void Ledger::setAccepted ()
|
||||
if ((mCloseFlags & sLCF_NoConsensusTime) == 0)
|
||||
mCloseTime = roundCloseTime (mCloseTime, mCloseResolution);
|
||||
|
||||
mAccepted = true;
|
||||
setImmutable ();
|
||||
}
|
||||
|
||||
@@ -499,9 +497,9 @@ uint256 Ledger::getHash ()
|
||||
return mHash;
|
||||
}
|
||||
|
||||
void Ledger::saveAcceptedLedger (Job&, bool fromConsensus)
|
||||
void Ledger::saveValidatedLedger (Job&)
|
||||
{
|
||||
WriteLog (lsTRACE, Ledger) << "saveAcceptedLedger " << (fromConsensus ? "fromConsensus " : "fromAcquire ") << getLedgerSeq ();
|
||||
WriteLog (lsTRACE, Ledger) << "saveValidatedLedger ";
|
||||
static boost::format deleteLedger ("DELETE FROM Ledgers WHERE LedgerSeq = %u;");
|
||||
static boost::format deleteTrans1 ("DELETE FROM Transactions WHERE LedgerSeq = %u;");
|
||||
static boost::format deleteTrans2 ("DELETE FROM AccountTransactions WHERE LedgerSeq = %u;");
|
||||
@@ -522,7 +520,7 @@ void Ledger::saveAcceptedLedger (Job&, bool fromConsensus)
|
||||
if (getAccountHash () != mAccountStateMap->getHash ())
|
||||
{
|
||||
WriteLog (lsFATAL, Ledger) << "sAL: " << getAccountHash () << " != " << mAccountStateMap->getHash ();
|
||||
WriteLog (lsFATAL, Ledger) << "saveAcceptedLedger: seq=" << mLedgerSeq << ", fromcons=" << fromConsensus;
|
||||
WriteLog (lsFATAL, Ledger) << "saveValidatedLedger: seq=" << mLedgerSeq;
|
||||
assert (false);
|
||||
}
|
||||
|
||||
@@ -607,9 +605,6 @@ void Ledger::saveAcceptedLedger (Job&, bool fromConsensus)
|
||||
mCloseResolution % mCloseFlags % mAccountHash.GetHex () % mTransHash.GetHex ()));
|
||||
}
|
||||
|
||||
if (!fromConsensus && (getConfig ().NODE_SIZE < 2)) // tiny or small
|
||||
dropCache ();
|
||||
|
||||
if (getApp().getJobQueue ().getJobCountTotal (jtPUBOLDLEDGER) < 2)
|
||||
getApp().getLedgerMaster ().resumeAcquiring ();
|
||||
else
|
||||
@@ -733,11 +728,9 @@ Ledger::pointer Ledger::getSQL (const std::string& sql)
|
||||
if (!loaded)
|
||||
return Ledger::pointer ();
|
||||
|
||||
ret->setValidated ();
|
||||
ret->setClosed ();
|
||||
|
||||
if (getApp().getOPs ().haveLedger (ledgerSeq))
|
||||
ret->setAccepted ();
|
||||
|
||||
if (ret->getHash () != ledgerHash)
|
||||
{
|
||||
if (ShouldLog (lsERROR, Ledger))
|
||||
@@ -801,9 +794,7 @@ void Ledger::getSQL2 (Ledger::ref ret)
|
||||
{
|
||||
ret->setClosed ();
|
||||
ret->setImmutable ();
|
||||
|
||||
if (getApp().getOPs ().haveLedger (ret->getLedgerSeq ()))
|
||||
ret->setAccepted ();
|
||||
ret->setValidated ();
|
||||
|
||||
WriteLog (lsTRACE, Ledger) << "Loaded ledger: " << ret->getHash ().GetHex ();
|
||||
}
|
||||
@@ -960,7 +951,7 @@ Json::Value Ledger::getJson (int options)
|
||||
ledger["ledger_hash"] = mHash.GetHex ();
|
||||
ledger["transaction_hash"] = mTransHash.GetHex ();
|
||||
ledger["account_hash"] = mAccountHash.GetHex ();
|
||||
ledger["accepted"] = mAccepted;
|
||||
ledger["validated"] = mValidated;
|
||||
ledger["total_coins"] = boost::lexical_cast<std::string> (mTotCoins);
|
||||
|
||||
if (mCloseTime != 0)
|
||||
@@ -1804,17 +1795,19 @@ uint32 Ledger::roundCloseTime (uint32 closeTime, uint32 closeResolution)
|
||||
return closeTime - (closeTime % closeResolution);
|
||||
}
|
||||
|
||||
void Ledger::pendSave (bool fromConsensus)
|
||||
void Ledger::pendSaveValidated ()
|
||||
{
|
||||
if (!fromConsensus && !getApp().getHashRouter ().setFlag (getHash (), SF_SAVED))
|
||||
if (getApp().getHashRouter ().setFlag (getHash (), SF_SAVED))
|
||||
return;
|
||||
|
||||
assert (isImmutable ());
|
||||
assert (isImmutable() && isValidated());
|
||||
|
||||
bool isNew = getLedgerSeq() > getApp().getLedgerMaster().getPublishedLedger()->getLedgerSeq();
|
||||
|
||||
getApp().getJobQueue ().addJob (
|
||||
fromConsensus ? jtPUBLEDGER : jtPUBOLDLEDGER,
|
||||
fromConsensus ? "Ledger::pendSave" : "Ledger::pendOldSave",
|
||||
BIND_TYPE (&Ledger::saveAcceptedLedger, shared_from_this (), P_1, fromConsensus));
|
||||
isNew ? jtPUBLEDGER : jtPUBOLDLEDGER,
|
||||
isNew ? "Ledger::pendSave" : "Ledger::pendOldSave",
|
||||
BIND_TYPE (&Ledger::saveValidatedLedger, shared_from_this (), P_1));
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user