mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-10 14:51:06 +01:00
When a lease triggers a resource allocation for a resource which must activate, awaken the lease task after the resource activates
Summary: Depends on D19753. Ref T13210. This is a small optimization that saves us from waiting up to 15 seconds for a yield. When there are no Working Copy resources and a new lease comes in, we'll allocate one and yield until it activates. If activating it (SSH'ing and running `git clone`) takes less than 15 seconds, the resource will activate (say, at T+4) but the lease won't update again for a while (say, until T+15). This leaves us with a pointless wait (in this example, we're sitting around for 9 seconds when we could move forward). To improve this a little bit, let resources wake up the lease update tasks that triggered allocation after they activate. In the best case, that task runs ~15 seconds sooner. In the worst case, the awaken is just a no-op. With a more-full queue, this has a smaller effect (it's likely something else will run and be able to use the resource in those 9 seconds). With already-activated resources, this has no effect (when resources are already activated, we can lease immediately). Test Plan: - Cleaned up all working copy resources. - Requested a new "A" working copy. - Before patch: got a working copy after 17-18 seconds, most of which was spent yielded. - After patch: got a working copy after 3-4 seconds. Reviewers: amckinley Reviewed By: amckinley Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13210 Differential Revision: https://secure.phabricator.com/D19754
This commit is contained in:
parent
78ab675bd8
commit
f6122547d7
2 changed files with 12 additions and 0 deletions
|
@ -599,6 +599,13 @@ final class DrydockLeaseUpdateWorker extends DrydockWorker {
|
|||
'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(),
|
||||
|
|
|
@ -170,6 +170,11 @@ final class DrydockResourceUpdateWorker extends DrydockWorker {
|
|||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue