mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-19 13:22:42 +01:00
make Trigger Daemon sleep correctly when one-time triggers exist
Summary: Trigger daemon is trying to find the next event to invoke before sleeping, but the query includes already-elapsed triggers. It then tries to sleep for 0 seconds. Test Plan: On a new instance, schedule a single trigger of type `PhabricatorOneTimeTriggerClock` to a very near time. Use top to see trigger daemon not going to 100% CPU once the event has elapsed. Reviewers: #blessed_reviewers, epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D15750
This commit is contained in:
parent
091a64e91b
commit
a3bb35e9d2
1 changed files with 2 additions and 1 deletions
|
@ -261,7 +261,7 @@ final class PhabricatorTriggerDaemon
|
||||||
* Get the number of seconds to sleep for before starting the next scheduling
|
* Get the number of seconds to sleep for before starting the next scheduling
|
||||||
* phase.
|
* phase.
|
||||||
*
|
*
|
||||||
* If no events are scheduled soon, we'll sleep for 60 seconds. Otherwise,
|
* If no events are scheduled soon, we'll sleep briefly. Otherwise,
|
||||||
* we'll sleep until the next scheduled event.
|
* we'll sleep until the next scheduled event.
|
||||||
*
|
*
|
||||||
* @return int Number of seconds to sleep for.
|
* @return int Number of seconds to sleep for.
|
||||||
|
@ -272,6 +272,7 @@ final class PhabricatorTriggerDaemon
|
||||||
$next_triggers = id(new PhabricatorWorkerTriggerQuery())
|
$next_triggers = id(new PhabricatorWorkerTriggerQuery())
|
||||||
->setViewer($this->getViewer())
|
->setViewer($this->getViewer())
|
||||||
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_EXECUTION)
|
->setOrder(PhabricatorWorkerTriggerQuery::ORDER_EXECUTION)
|
||||||
|
->withNextEventBetween(0, null)
|
||||||
->setLimit(1)
|
->setLimit(1)
|
||||||
->needEvents(true)
|
->needEvents(true)
|
||||||
->execute();
|
->execute();
|
||||||
|
|
Loading…
Reference in a new issue