/** * @task break */ protected function breakLease(DrydockLease $lease, Exception $ex) { switch ($lease->getStatus()) { case DrydockLeaseStatus::STATUS_BROKEN: case DrydockLeaseStatus::STATUS_RELEASED: case DrydockLeaseStatus::STATUS_DESTROYED: throw new PhutilProxyException(pht('Unexpected failure while destroying lease ("%s").', $lease->getPHID()), $ex); } $lease->setStatus(DrydockLeaseStatus::STATUS_BROKEN)->save(); $lease->scheduleUpdate(); $lease->logEvent(DrydockLeaseActivationFailureLogType::LOGCONST, array('class' => get_class($ex), 'message' => $ex->getMessage())); throw new PhabricatorWorkerPermanentFailureException(pht('Permanent failure while activating lease ("%s"): %s', $lease->getPHID(), $ex->getMessage())); }