{"record":{"id":"461ab620060883ca","repo":"phacility/phabricator","slug":"drydock-lease-phid-s-does-not-correspond-to-a-v","errorCode":null,"errorMessage":"Drydock lease PHID \"%s\" does not correspond to a valid lease.","messagePattern":"Drydock lease PHID \"(.+?)\" does not correspond to a valid lease\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/harbormaster/artifact/HarbormasterDrydockLeaseArtifact.php","lineNumber":46,"sourceCode":"    return $viewer->renderHandle($lease_phid);\n  }\n\n  public function willCreateArtifact(PhabricatorUser $actor) {\n    // We don't load the lease here because it's expected that artifacts are\n    // created before leases actually exist. This guarantees that the leases\n    // will be cleaned up.\n  }\n\n  public function loadArtifactLease(PhabricatorUser $viewer) {\n    $artifact = $this->getBuildArtifact();\n    $lease_phid = $artifact->getProperty('drydockLeasePHID');\n\n    $lease = id(new DrydockLeaseQuery())\n      ->setViewer($viewer)\n      ->withPHIDs(array($lease_phid))\n      ->executeOne();\n    if (!$lease) {\n      throw new Exception(\n        pht(\n          'Drydock lease PHID \"%s\" does not correspond to a valid lease.',\n          $lease_phid));\n    }\n\n    return $lease;\n  }\n\n  public function releaseArtifact(PhabricatorUser $actor) {\n    try {\n      $lease = $this->loadArtifactLease($actor);\n    } catch (Exception $ex) {\n      // If we can't load the lease, treat it as already released. Artifacts\n      // are generated before leases are queued, so it's possible to arrive\n      // here under normal conditions.\n      return;\n    }\n","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/harbormaster/artifact/HarbormasterDrydockLeaseArtifact.php#L28-L64","documentation":"Error \"Drydock lease PHID \"%s\" does not correspond to a valid lease.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/harbormaster/artifact/HarbormasterDrydockLeaseArtifact.php:46 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}