diff --git a/src/cpp/ripple/JobQueue.cpp b/src/cpp/ripple/JobQueue.cpp index e8840537b..42f0aa209 100644 --- a/src/cpp/ripple/JobQueue.cpp +++ b/src/cpp/ripple/JobQueue.cpp @@ -23,8 +23,9 @@ const char* Job::toString(JobType t) case jtCLIENT: return "clientCommand"; case jtPEER: return "peerCommand"; case jtDISK: return "diskAccess"; - case jtLEDGER: return "acceptLedger"; case jtRPC: return "rpc"; + case jtACCEPTLEDGER: return "acceptLedger"; + case jtPUBLEDGER: return "pubLedger"; default: assert(false); return "unknown"; } } diff --git a/src/cpp/ripple/JobQueue.h b/src/cpp/ripple/JobQueue.h index 4f0ce559c..bc930336c 100644 --- a/src/cpp/ripple/JobQueue.h +++ b/src/cpp/ripple/JobQueue.h @@ -36,10 +36,11 @@ enum JobType jtCLIENT = 10, jtPEER = 11, jtDISK = 12, - jtLEDGER = 13, - jtRPC = 14, + jtRPC = 13, + jtACCEPTLEDGER = 14, + jtPUBLEDGER = 15, }; -#define NUM_JOB_TYPES 16 +#define NUM_JOB_TYPES 24 class Job { diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index 8f6d87e79..85863529b 100644 --- a/src/cpp/ripple/Ledger.cpp +++ b/src/cpp/ripple/Ledger.cpp @@ -439,6 +439,7 @@ void Ledger::saveAcceptedLedger(bool fromConsensus) } theApp->getMasterLedger().setFullLedger(shared_from_this()); + event = LoadEvent::pointer(); theApp->getOPs().pubLedger(shared_from_this()); diff --git a/src/cpp/ripple/LedgerConsensus.cpp b/src/cpp/ripple/LedgerConsensus.cpp index 27ac245ae..c0088da29 100644 --- a/src/cpp/ripple/LedgerConsensus.cpp +++ b/src/cpp/ripple/LedgerConsensus.cpp @@ -1027,7 +1027,7 @@ void LedgerConsensus::beginAccept(bool synchronous) else { theApp->getIOService().post(boost::bind(&LedgerConsensus::accept, shared_from_this(), consensusSet, - theApp->getJobQueue().getLoadEvent(jtLEDGER))); + theApp->getJobQueue().getLoadEvent(jtACCEPTLEDGER))); } } diff --git a/src/cpp/ripple/NetworkOPs.cpp b/src/cpp/ripple/NetworkOPs.cpp index 53654ab45..8855100f1 100644 --- a/src/cpp/ripple/NetworkOPs.cpp +++ b/src/cpp/ripple/NetworkOPs.cpp @@ -1002,6 +1002,8 @@ void NetworkOPs::pubLedger(Ledger::ref lpAccepted) if (NetworkOPs::omDISCONNECTED == getOperatingMode()) return; + LoadEvent::pointer event = theApp->getJobQueue().getLoadEvent(jtPUBLEDGER); + { boost::interprocess::sharable_lock sl(mMonitorLock);