Separate ledger publish logic so we can tell if clients are overloading us.

This commit is contained in:
JoelKatz
2012-11-23 12:15:04 -08:00
parent 4065106592
commit 8b53f85f60
5 changed files with 10 additions and 5 deletions

View File

@@ -23,8 +23,9 @@ const char* Job::toString(JobType t)
case jtCLIENT: return "clientCommand"; case jtCLIENT: return "clientCommand";
case jtPEER: return "peerCommand"; case jtPEER: return "peerCommand";
case jtDISK: return "diskAccess"; case jtDISK: return "diskAccess";
case jtLEDGER: return "acceptLedger";
case jtRPC: return "rpc"; case jtRPC: return "rpc";
case jtACCEPTLEDGER: return "acceptLedger";
case jtPUBLEDGER: return "pubLedger";
default: assert(false); return "unknown"; default: assert(false); return "unknown";
} }
} }

View File

@@ -36,10 +36,11 @@ enum JobType
jtCLIENT = 10, jtCLIENT = 10,
jtPEER = 11, jtPEER = 11,
jtDISK = 12, jtDISK = 12,
jtLEDGER = 13, jtRPC = 13,
jtRPC = 14, jtACCEPTLEDGER = 14,
jtPUBLEDGER = 15,
}; };
#define NUM_JOB_TYPES 16 #define NUM_JOB_TYPES 24
class Job class Job
{ {

View File

@@ -439,6 +439,7 @@ void Ledger::saveAcceptedLedger(bool fromConsensus)
} }
theApp->getMasterLedger().setFullLedger(shared_from_this()); theApp->getMasterLedger().setFullLedger(shared_from_this());
event = LoadEvent::pointer();
theApp->getOPs().pubLedger(shared_from_this()); theApp->getOPs().pubLedger(shared_from_this());

View File

@@ -1027,7 +1027,7 @@ void LedgerConsensus::beginAccept(bool synchronous)
else else
{ {
theApp->getIOService().post(boost::bind(&LedgerConsensus::accept, shared_from_this(), consensusSet, theApp->getIOService().post(boost::bind(&LedgerConsensus::accept, shared_from_this(), consensusSet,
theApp->getJobQueue().getLoadEvent(jtLEDGER))); theApp->getJobQueue().getLoadEvent(jtACCEPTLEDGER)));
} }
} }

View File

@@ -1002,6 +1002,8 @@ void NetworkOPs::pubLedger(Ledger::ref lpAccepted)
if (NetworkOPs::omDISCONNECTED == getOperatingMode()) if (NetworkOPs::omDISCONNECTED == getOperatingMode())
return; return;
LoadEvent::pointer event = theApp->getJobQueue().getLoadEvent(jtPUBLEDGER);
{ {
boost::interprocess::sharable_lock<boost::interprocess::interprocess_upgradable_mutex> sl(mMonitorLock); boost::interprocess::sharable_lock<boost::interprocess::interprocess_upgradable_mutex> sl(mMonitorLock);