Changeset View
Changeset View
Standalone View
Standalone View
src/infrastructure/daemon/workers/PhabricatorWorker.php
| Show First 20 Lines • Show All 88 Lines • ▼ Show 20 Lines | /* -( Configuring Retries and Failures )----------------------------------- */ | ||||
| final public function executeTask() { | final public function executeTask() { | ||||
| $this->doWork(); | $this->doWork(); | ||||
| } | } | ||||
| final public static function scheduleTask( | final public static function scheduleTask( | ||||
| $task_class, | $task_class, | ||||
| $data, | $data, | ||||
| $priority = null) { | $options = array()) { | ||||
| $priority = idx($options, 'priority'); | |||||
| if ($priority === null) { | if ($priority === null) { | ||||
| $priority = self::PRIORITY_DEFAULT; | $priority = self::PRIORITY_DEFAULT; | ||||
| } | } | ||||
| $object_phid = idx($options, 'objectPHID'); | |||||
| $task = id(new PhabricatorWorkerActiveTask()) | $task = id(new PhabricatorWorkerActiveTask()) | ||||
| ->setTaskClass($task_class) | ->setTaskClass($task_class) | ||||
| ->setData($data) | ->setData($data) | ||||
| ->setPriority($priority); | ->setPriority($priority) | ||||
| ->setObjectPHID($object_phid); | |||||
| if (self::$runAllTasksInProcess) { | if (self::$runAllTasksInProcess) { | ||||
| // Do the work in-process. | // Do the work in-process. | ||||
| $worker = newv($task_class, array($data)); | $worker = newv($task_class, array($data)); | ||||
| while (true) { | while (true) { | ||||
| try { | try { | ||||
| $worker->doWork(); | $worker->doWork(); | ||||
| foreach ($worker->getQueuedTasks() as $queued_task) { | foreach ($worker->getQueuedTasks() as $queued_task) { | ||||
| list($queued_class, $queued_data, $queued_priority) = $queued_task; | list($queued_class, $queued_data, $queued_priority) = $queued_task; | ||||
| self::scheduleTask($queued_class, $queued_data, $queued_priority); | $queued_options = array('priority' => $queued_priority); | ||||
| self::scheduleTask($queued_class, $queued_data, $queued_options); | |||||
| } | } | ||||
| break; | break; | ||||
| } catch (PhabricatorWorkerYieldException $ex) { | } catch (PhabricatorWorkerYieldException $ex) { | ||||
| phlog( | phlog( | ||||
| pht( | pht( | ||||
| 'In-process task "%s" yielded for %s seconds, sleeping...', | 'In-process task "%s" yielded for %s seconds, sleeping...', | ||||
| $task_class, | $task_class, | ||||
| $ex->getDuration())); | $ex->getDuration())); | ||||
| ▲ Show 20 Lines • Show All 129 Lines • Show Last 20 Lines | |||||