1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-24 15:52:41 +01:00
phorge-phorge/src/applications/harbormaster/artifact
epriestley 4cf1270ecd In Harbormaster, make sure artifacts are destroyed even if a build is aborted
Summary:
Ref T9252. Currently, Harbormaster and Drydock work like this in some cases:

  # Queue a lease for activation.
  # Then, a little later, save the lease PHID somewhere.
  # When the target/resource is destroyed, destroy the lease.

However, something can happen between (1) and (2). In Drydock this window is very short and the "something" would have to be a lighting strike or something similar, but in Harbormaster we wait until the resource activates to do (2) so the window can be many minutes long. In particular, a user can use "Abort Build" during those many minutes.

If they do, the target is destroyed but it doesn't yet have a record of the artifact, so the artifact isn't cleaned up.

Make these things work like this instead:

  # Create a new lease and pre-generate a PHID for it.
  # Save that PHID as something that needs to be cleaned up.
  # Queue the lease for activation.
  # When the target/resource is destroyed, destroy the lease if it exists.

This makes sure there's no step in the process where we might lose track of a lease/resource.

Also, clean up and standardize some other stuff I hit.

Test Plan:
  - Stopped daemons.
  - Restarted a build in Harbormaster.
  - Stepped through the build one stage at a time using `bin/worker execute ...`.
  - After the lease was queued, but before it activated, aborted the build.
  - Processed the Harbormaster side of things only.
  - Saw the lease get destroyed properly.

Reviewers: chad, hach-que

Reviewed By: hach-que

Maniphest Tasks: T9252

Differential Revision: https://secure.phabricator.com/D14234
2015-10-05 05:58:53 -07:00
..
HarbormasterArtifact.php Use getPhobjectClassConstant() to access class constants 2015-10-01 16:56:21 -07:00
HarbormasterDrydockLeaseArtifact.php In Harbormaster, make sure artifacts are destroyed even if a build is aborted 2015-10-05 05:58:53 -07:00
HarbormasterFileArtifact.php Add harbormaster.createartifact 2015-08-15 07:28:56 -07:00
HarbormasterHostArtifact.php Allow Harbormaster to lease working copies from Drydock 2015-09-24 17:29:47 -07:00
HarbormasterURIArtifact.php Show external build links in applications 2015-08-15 07:29:26 -07:00
HarbormasterWorkingCopyArtifact.php Allow Harbormaster to lease working copies from Drydock 2015-09-24 17:29:47 -07:00