1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 23:02:42 +01:00

Stop build target start times from being overwritten on reentry

Summary:
See PHI615. Ref T13130. An install is reporting that "Lease Working Copy" build steps always report "Built instantly" after completion.

I'm not 100% sure that this is the fix, but I'm like 99% sure: "Lease Working Copy" build steps yield after they ask Drydock for a lease. They will later reenter `doWork()`, see that the lease is filled, and complete.

Right now, we reset the start time every time we enter `doWork()`. Instead, set it only if it hasn't been set yet.

Test Plan: This is low-risk and a bit tricky to reproduce locally, but I'll run some production builds and see what they look like.

Reviewers: amckinley

Reviewed By: amckinley

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T13130

Differential Revision: https://secure.phabricator.com/D19412
This commit is contained in:
epriestley 2018-04-27 11:22:49 -07:00
parent d40007aa32
commit 5f774f7008

View file

@ -46,7 +46,13 @@ final class HarbormasterTargetWorker extends HarbormasterWorker {
$build = $target->getBuild();
$viewer = $this->getViewer();
$target->setDateStarted(time());
// If this is the first time we're starting work on this target, mark the
// current time as the start time. If the target yields or waits, we may
// end up here again later, so we don't want to overwrite the start time if
// we already have a value.
if (!$target->getDateStarted()) {
$target->setDateStarted(PhabricatorTime::getNow());
}
try {
if ($target->getBuildGeneration() !== $build->getBuildGeneration()) {