mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 19:15:54 +00:00
Make job times include time waiting in the queue.
This is a temporary fix. The real fix will track wait time and run time both.
This commit is contained in:
@@ -40,15 +40,9 @@ JobType Job::getType () const
|
|||||||
|
|
||||||
void Job::doJob ()
|
void Job::doJob ()
|
||||||
{
|
{
|
||||||
m_loadEvent->start ();
|
m_loadEvent->reName (mName);
|
||||||
|
|
||||||
mJob (*this);
|
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)
|
void Job::rename (std::string const& newName)
|
||||||
@@ -61,6 +55,11 @@ int Job::getLimit () const
|
|||||||
return m_limit;
|
return m_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadEvent& Job::peekEvent() const
|
||||||
|
{
|
||||||
|
return *m_loadEvent;
|
||||||
|
}
|
||||||
|
|
||||||
const char* Job::toString (JobType t)
|
const char* Job::toString (JobType t)
|
||||||
{
|
{
|
||||||
switch (t)
|
switch (t)
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ public:
|
|||||||
|
|
||||||
int getLimit () const;
|
int getLimit () const;
|
||||||
|
|
||||||
|
LoadEvent& peekEvent() const;
|
||||||
|
|
||||||
// These comparison operators make the jobs sort in priority order in the job set
|
// 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;
|
||||||
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
|
if (type != jtCLIENT) // FIXME: Workaround incorrect client shutdown ordering
|
||||||
assert (mThreadCount != 0); // do not add jobs to a queue with no threads
|
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;
|
++mJobCounts[type].first;
|
||||||
mJobCond.notify_one ();
|
mJobCond.notify_one ();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user