QJRDO2B4RGTXPSSK2SM6PQ6VEJNOLNMG2EFNMBGNRSEI74KKLVRAC PQFOMNTLFY4HINJFAQYIFTBTSDRST6W2WNCVKE5ITR2IDF4SWWXQC LXB6WEYK4OAMPHUF6OZCIXMCITKU7L2INI4W3GYJTM4G24FRWWHQC RYTQLATYOZ6ODIKYVJ63TC4OIQBXHSCV3NA2YD4NFP7443GQVSRQC OCZ4LSGGSCMSLGC3C32D5JUYYHS5CIPOKOAMADEFAFZOFXJ3YY3AC 24BMQDZAWDQ7VNIA7TIROXSOYLOJBNZ2E4264WHWNJAEN6ZB3UOAC ENXUSMSVOU3AZFMH2ZXR4ZVPV2LRRQYQJ6IFX33YN6IH2ORSNSAAC MSIHMO45JO5V5ICZ7SKVWH6CLINKQY3UTA7274Q5OZCKPRX7SUNQC auto step_(step->state.lock());retry = step_->tries + 1 < maxTries;
bool retry;{auto step_(step->state.lock());retry = step_->tries + 1 < maxTries;}if (retry) {pqxx::work txn(*conn);finishBuildStep(txn, result.startTime, result.stopTime, build->id,stepNr, machine->sshName, bssAborted, result.errorMsg);txn.commit();return true;}
if (!retry) {/* Create failed build steps for every build thatdepends on this. For cached failures, only create astep for builds that don't have this step astop-level (otherwise the user won't be able to seewhat caused the build to fail). */for (auto build2 : dependents) {if (build == build2) continue;if (cachedFailure && build2->drvPath == step->drvPath) continue;createBuildStep(txn, 0, build2, step, machine->sshName,buildStepStatus, result.errorMsg, build->id);}
/* Create failed build steps for every build that dependson this. For cached failures, only create a step forbuilds that don't have this step as top-level(otherwise the user won't be able to see what causedthe build to fail). */for (auto build2 : dependents) {if (build == build2) continue;if (cachedFailure && build2->drvPath == step->drvPath) continue;createBuildStep(txn, 0, build2, step, machine->sshName,buildStepStatus, result.errorMsg, build->id);
if (!retry)for (auto build2 : dependents) {printMsg(lvlError, format("marking build %1% as failed") % build2->id);txn.parameterized("update Builds set finished = 1, busy = 0, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5 where id = $1")(build2->id)((int) (build2->drvPath != step->drvPath && buildStatus == bsFailed ? bsDepFailed : buildStatus))(result.startTime)(result.stopTime)(cachedFailure ? 1 : 0).exec();build2->finishedInDB = true; // FIXME: txn might failnrBuildsDone++;}
for (auto build2 : dependents) {printMsg(lvlError, format("marking build %1% as failed") % build2->id);txn.parameterized("update Builds set finished = 1, busy = 0, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5 where id = $1")(build2->id)((int) (build2->drvPath != step->drvPath && buildStatus == bsFailed ? bsDepFailed : buildStatus))(result.startTime)(result.stopTime)(cachedFailure ? 1 : 0).exec();build2->finishedInDB = true; // FIXME: txn might failnrBuildsDone++;}
if (!retry)for (auto build2 : dependents)if (build2->toplevel == step || result.status != RemoteResult::rrSuccess) {auto builds_(builds.lock());builds_->erase(build2->id);}
for (auto build2 : dependents)if (build2->toplevel == step || result.status != RemoteResult::rrSuccess) {auto builds_(builds.lock());builds_->erase(build2->id);}