diff --git a/src/applications/drydock/worker/DrydockLeaseUpdateWorker.php b/src/applications/drydock/worker/DrydockLeaseUpdateWorker.php --- a/src/applications/drydock/worker/DrydockLeaseUpdateWorker.php +++ b/src/applications/drydock/worker/DrydockLeaseUpdateWorker.php @@ -599,6 +599,13 @@ 'DrydockResourceUpdateWorker', array( 'resourcePHID' => $resource->getPHID(), + + // This task will generally yield while the resource activates, so + // wake it back up once the resource comes online. Most of the time, + // we'll be able to lease the newly activated resource. + 'awakenOnActivation' => array( + $this->getCurrentWorkerTaskID(), + ), ), array( 'objectPHID' => $resource->getPHID(), diff --git a/src/applications/drydock/worker/DrydockResourceUpdateWorker.php b/src/applications/drydock/worker/DrydockResourceUpdateWorker.php --- a/src/applications/drydock/worker/DrydockResourceUpdateWorker.php +++ b/src/applications/drydock/worker/DrydockResourceUpdateWorker.php @@ -170,6 +170,11 @@ $blueprint = $resource->getBlueprint(); $blueprint->activateResource($resource); $this->validateActivatedResource($blueprint, $resource); + + $awaken_ids = $this->getTaskDataValue('awakenOnActivation'); + if (is_array($awaken_ids) && $awaken_ids) { + PhabricatorWorker::awakenTaskIDs($awaken_ids); + } }