mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Merge branch 'develop' into feature-keyvadb
Conflicts: src/cpp/ripple/ripple_TransactionAcquire.cpp
This commit is contained in:
@@ -503,10 +503,7 @@ void LedgerMaster::resumeAcquiring ()
|
||||
if (nextLedger)
|
||||
acquireMissingLedger (nextLedger, nextLedger->getParentHash (), nextLedger->getLedgerSeq () - 1);
|
||||
else
|
||||
{
|
||||
mCompleteLedgers.clearValue (prevMissing);
|
||||
WriteLog (lsINFO, LedgerMaster) << "We have a gap at: " << prevMissing + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ SETUP_LOG (InboundLedger)
|
||||
#define LEDGER_TIMEOUT_AGGRESSIVE 6 // how many timeouts before we get aggressive
|
||||
|
||||
InboundLedger::InboundLedger (uint256 const& hash, uint32 seq)
|
||||
: PeerSet (hash, LEDGER_ACQUIRE_TIMEOUT)
|
||||
: PeerSet (hash, LEDGER_ACQUIRE_TIMEOUT, false)
|
||||
, mHaveBase (false)
|
||||
, mHaveState (false)
|
||||
, mHaveTransactions (false)
|
||||
@@ -138,7 +138,7 @@ bool InboundLedger::tryLocal ()
|
||||
return mComplete;
|
||||
}
|
||||
|
||||
void InboundLedger::onTimer (bool progress)
|
||||
void InboundLedger::onTimer (bool progress, boost::recursive_mutex::scoped_lock&)
|
||||
{
|
||||
mRecentTXNodes.clear ();
|
||||
mRecentASNodes.clear ();
|
||||
@@ -844,7 +844,7 @@ std::vector<InboundLedger::neededHash_t> InboundLedger::getNeededHashes ()
|
||||
if (!mHaveTransactions)
|
||||
{
|
||||
TransactionStateSF filter (mLedger->getLedgerSeq ());
|
||||
std::vector<uint256> v = mLedger->getNeededAccountStateHashes (4, &filter);
|
||||
std::vector<uint256> v = mLedger->getNeededTransactionHashes (4, &filter);
|
||||
BOOST_FOREACH (uint256 const & h, v)
|
||||
{
|
||||
ret.push_back (std::make_pair (protocol::TMGetObjectByHash::otTRANSACTION_NODE, h));
|
||||
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
private:
|
||||
void done ();
|
||||
|
||||
void onTimer (bool progress);
|
||||
void onTimer (bool progress, boost::recursive_mutex::scoped_lock& peerSetLock);
|
||||
|
||||
void newPeer (Peer::ref peer)
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@ InboundLedger::pointer InboundLedgers::findCreate (uint256 const& hash, uint32 s
|
||||
ptr->addPeers ();
|
||||
ptr->setTimer (); // Cannot call in constructor
|
||||
}
|
||||
else
|
||||
else if (ptr->isComplete ())
|
||||
{
|
||||
Ledger::pointer ledger = ptr->getLedger ();
|
||||
ledger->setClosed ();
|
||||
|
||||
@@ -34,7 +34,7 @@ std::string StopSustain ()
|
||||
return "Terminating monitor";
|
||||
}
|
||||
|
||||
std::string DoSustain ()
|
||||
std::string DoSustain (std::string logFile)
|
||||
{
|
||||
int childCount = 0;
|
||||
pManager = getpid ();
|
||||
@@ -72,7 +72,9 @@ std::string DoSustain ()
|
||||
while (kill (pChild, 0) == 0);
|
||||
|
||||
rename ("core", boost::str (boost::format ("core.%d") % static_cast<int> (pChild)).c_str ());
|
||||
rename ("debug.log", boost::str (boost::format ("debug.log.%d") % static_cast<int> (pChild)).c_str ());
|
||||
if (!logFile.empty())
|
||||
rename (logFile.c_str(),
|
||||
boost::str (boost::format ("%s.%d") % logFile % static_cast<int> (pChild)).c_str ());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +84,7 @@ bool HaveSustain ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
std::string DoSustain ()
|
||||
std::string DoSustain (std::string)
|
||||
{
|
||||
return std::string ();
|
||||
}
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
//
|
||||
extern bool HaveSustain ();
|
||||
extern std::string StopSustain ();
|
||||
extern std::string DoSustain ();
|
||||
extern std::string DoSustain (std::string logFile);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -40,15 +40,9 @@ JobType Job::getType () const
|
||||
|
||||
void Job::doJob ()
|
||||
{
|
||||
m_loadEvent->start ();
|
||||
m_loadEvent->reName (mName);
|
||||
|
||||
mJob (*this);
|
||||
|
||||
// VFALCO TODO Isn't there a way to construct the load event with
|
||||
// the proper name? This way the load event object
|
||||
// can have the invariant "name is always set"
|
||||
//
|
||||
m_loadEvent->reName (mName);
|
||||
}
|
||||
|
||||
void Job::rename (std::string const& newName)
|
||||
@@ -61,6 +55,11 @@ int Job::getLimit () const
|
||||
return m_limit;
|
||||
}
|
||||
|
||||
LoadEvent& Job::peekEvent() const
|
||||
{
|
||||
return *m_loadEvent;
|
||||
}
|
||||
|
||||
const char* Job::toString (JobType t)
|
||||
{
|
||||
switch (t)
|
||||
@@ -131,6 +130,9 @@ const char* Job::toString (JobType t)
|
||||
case jtTXN_PROC:
|
||||
return "processTransaction";
|
||||
|
||||
case jtTXN_DATA:
|
||||
return "fetchTxnData";
|
||||
|
||||
case jtOB_SETUP:
|
||||
return "orderBookSetup";
|
||||
|
||||
@@ -143,6 +145,9 @@ const char* Job::toString (JobType t)
|
||||
case jtHO_WRITE:
|
||||
return "nodeWrite";
|
||||
|
||||
case jtSWEEP:
|
||||
return "sweep";
|
||||
|
||||
default:
|
||||
assert (false);
|
||||
return "unknown";
|
||||
|
||||
@@ -17,20 +17,21 @@ enum JobType
|
||||
jtPUBOLDLEDGER = 2, // An old ledger has been accepted
|
||||
jtVALIDATION_ut = 3, // A validation from an untrusted source
|
||||
jtPROOFWORK = 4, // A proof of work demand from another server
|
||||
jtPROPOSAL_ut = 5, // A proposal from an untrusted source
|
||||
jtLEDGER_DATA = 6, // Received data for a ledger we're acquiring
|
||||
jtUPDATE_PF = 7, // Update pathfinding requests
|
||||
jtCLIENT = 8, // A websocket command from the client
|
||||
jtTRANSACTION = 9, // A transaction received from the network
|
||||
jtPUBLEDGER = 10, // Publish a fully-accepted ledger
|
||||
jtWAL = 11, // Write-ahead logging
|
||||
jtVALIDATION_t = 12, // A validation from a trusted source
|
||||
jtWRITE = 13, // Write out hashed objects
|
||||
jtTRANSACTION_l = 14, // A local transaction
|
||||
jtPROPOSAL_t = 15, // A proposal from a trusted source
|
||||
jtSWEEP = 16, // Sweep for stale structures
|
||||
jtADMIN = 17, // An administrative operation
|
||||
jtDEATH = 18, // job of death, used internally
|
||||
jtTRANSACTION_l = 5, // A local transaction
|
||||
jtPROPOSAL_ut = 6, // A proposal from an untrusted source
|
||||
jtLEDGER_DATA = 7, // Received data for a ledger we're acquiring
|
||||
jtUPDATE_PF = 8, // Update pathfinding requests
|
||||
jtCLIENT = 9, // A websocket command from the client
|
||||
jtTRANSACTION = 10, // A transaction received from the network
|
||||
jtPUBLEDGER = 11, // Publish a fully-accepted ledger
|
||||
jtTXN_DATA = 12, // Fetch a proposed set
|
||||
jtWAL = 13, // Write-ahead logging
|
||||
jtVALIDATION_t = 14, // A validation from a trusted source
|
||||
jtWRITE = 15, // Write out hashed objects
|
||||
jtPROPOSAL_t = 16, // A proposal from a trusted source
|
||||
jtSWEEP = 17, // Sweep for stale structures
|
||||
jtADMIN = 18, // An administrative operation
|
||||
jtDEATH = 19, // job of death, used internally
|
||||
|
||||
// special types not dispatched by the job pool
|
||||
jtPEER = 24,
|
||||
@@ -81,6 +82,8 @@ public:
|
||||
|
||||
int getLimit () const;
|
||||
|
||||
LoadEvent& peekEvent() const;
|
||||
|
||||
// These comparison operators make the jobs sort in priority order in the job set
|
||||
bool operator< (const Job& j) const;
|
||||
bool operator> (const Job& j) const;
|
||||
|
||||
@@ -44,7 +44,9 @@ void JobQueue::addLimitJob (JobType type, const std::string& name, int limit, co
|
||||
if (type != jtCLIENT) // FIXME: Workaround incorrect client shutdown ordering
|
||||
assert (mThreadCount != 0); // do not add jobs to a queue with no threads
|
||||
|
||||
mJobSet.insert (Job (type, name, limit, ++mLastJob, mJobLoads[type], jobFunc));
|
||||
std::pair< std::set <Job>::iterator, bool > it =
|
||||
mJobSet.insert (Job (type, name, limit, ++mLastJob, mJobLoads[type], jobFunc));
|
||||
it.first->peekEvent().start(); // start timing how long it stays in the queue
|
||||
++mJobCounts[type].first;
|
||||
mJobCond.notify_one ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user