Merge pull request #730 from NixOS/flake
[?]
Apr 7, 2020, 9:18 AM
HTDANBLNORWZLQYXGUADX4KMUNYGH75TDF3FMMGRKE4Q2CHQMEWQCDependencies
- [2]
QGLBQ5IORemove hydra-eval-guile-jobs - [3]
XCXMK24UKeep track of the number of unsupported steps - [4]
IZOT24A3Don't spam the journal with hydra-queue-runner status dumps - [5]
3A7HTJZPMerge branch 'master' into libpqxx_undeprecate - [6]
NQPGIRXXRevert "hydra-eval-jobs -> nix eval-hydra-jobs" - [7]
U55WNIDPAbort unsupported build steps - [8]
LVQXQIYAKill active build steps when builds are cancelled - [9]
UVQJBDHNMove log compression to a plugin - [10]
FJ5H26J6Fix building against nix master - [11]
FJEK6FVUFix build - [12]
LPPZS34YMerge remote-tracking branch 'origin/master' into flake - [13]
NKQOEVVPGet rid of "will retry" messages after "maybe cancelling..." - [14]
GS4BE6TBAsynchronously compress build logs - [15]
IWB3F4Z6Fail builds with previously failed steps early - [16]
RQUAATWBAdd status dump facility - [17]
25MFPBZVKeep track of time required to load builds - [18]
7KLHBDYAFix build - [19]
NTEDD7T4Provide a plugin hook for when build steps finish - [20]
NSBNNM77Add hydra.conf option "nar_buffer_size" to configure memoryTokens limit - [21]
73YR46NJhydra-queue-runner: Write directly to a binary cache - [22]
5N7LVAJNKeep track of requiredSystemFeatures in the machine stats - [23]
BRAESISHWarn if PostgreSQL appears stalled - [24]
24BMQDZAStart of single-process hydra-queue-runner - [25]
2DNPZFPNStep cancellation: Don't use pthread_cancel() - [26]
ZTVVUMTKJSONObject doesn't handle 64-bit integers - [27]
MSIHMO45Tweak build steps - [28]
LE4VZIY5More stats - [29]
MHVIT4JYSplit hydra-queue-runner.cc more - [30]
PQFOMNTLhydra-queue-runner: More stats - [31]
FULDVXE2Periodically dump/log status - [32]
SOB276BAKeep some statistics for the binary cache stores - [33]
WDGARQ76Reuse build products / metrics stored in the database - [34]
IK2UBDAURevive jobset scheduling - [35]
NWFDDRUGhydra-queue-runner: Limit concurrent database connections - [36]
BG6PEOB2Make the output size limit configurable - [37]
WV4SSAIYBuild against nix-master - [38]
NJXD2ABJAbort unsupported build steps - [39]
RGCPOSHYhydra-queue-runner: Ensure regular status dumps - [40]
ZPHREC7Xhydra-eval-jobset: Support flakes - [41]
NYTT5WP3Keep track of the number of unsupported steps - [42]
VQISTKOPhydra-queue-runner: Use substitutes - [43]
Q6VFUIC6Remove hydra-eval-guile-jobs - [44]
7LU6ECB5Don't spam the journal with hydra-queue-runner status dumps - [45]
YE6LD6MFhydra-queue-runner: Recycle finishedDrvs - [46]
H7SZRHUBUse nix::willBuildLocally() - [47]
3ECTCHKLMake queue runner internal status available under /queue-runner-status - [48]
DWFTK56EKeep track of how many threads are waiting - [49]
32KJOERMTurn hydra-notify into a daemon - [50]
RND7XFNHgetQueuedBuilds(): Periodically stop to handle priority bumps - [51]
3VRZBVFXhydra-eval-jobs -> nix eval-hydra-jobs - [52]
IKJBYIGYUpdate to reflect BinaryCacheStore changes - [53]
DKJFD6JNProcess Nix API changes - [54]
XV4AEKJChydra-queue-runner: Handle status queries on the main thread - [55]
DKR2GXSAUpdate libpqxx usage to move away from deprecated API interactions. - [56]
ZK76B5ZZLoad the queue in order of global priority - [57]
YTJBED7GFix build - [58]
EBJP3MNABuild against nix-master - [59]
MJL3PDXIFix duplicate step_finished notification - [60]
7CCLJLW7Remove superfluous "has" function - [61]
YTAYNN7VQueue monitor: Bail out earlier if a step has failed previously - [62]
EJJCY263Account steps with preferLocalBuild as a separate system type - [63]
EFWDY2V7Support testing build determinism - [64]
OBOTGFG6Prevent orphaned build steps - [65]
NJJ7H64SVery basic multi-threaded queue runner - [66]
XIFDDTXZDon't lock the BuildSteps table when inserting - [67]
K5G5GZY7Guard against concurrent invocations of hydra-queue-runner - [68]
PLOZBRTRAdd command ‘hydra-queue-runner --status’ to show current status - [69]
3BKPZ52CDisambiguate "marking build as succeeded" message - [70]
7LWB2J2ZPeriodically clear orphaned build steps - [71]
VU2OLHD2Move most of AddBuilds to hydra-eval-jobset - [72]
UNVMKJV5Unify build and step status codes - [73]
EPWEMRI2Allow determinism checking for entire jobsets - [*]
ACBS7C6Qhydra-queue-runner: Detect changes to the scheduling shares - [*]
N22GPKYT* Put info about logs / build products in the DB.
Change contents
- edit in src/hydra-queue-runner/builder.cc at line 381
} elsefailStep(*conn, step, buildId, result, machine, stepFinished, quit); - resolve order conflict in src/hydra-queue-runner/builder.cc at line 381
- edit in src/hydra-queue-runner/builder.cc at line 389
// FIXME: keep stats about aborted steps?nrStepsDone++;totalStepTime += stepStopTime - stepStartTime;totalStepBuildTime += result.stopTime - result.startTime;machine->state->nrStepsDone++;machine->state->totalStepTime += stepStopTime - stepStartTime;machine->state->totalStepBuildTime += result.stopTime - result.startTime; - resolve order conflict in src/hydra-queue-runner/builder.cc at line 389
- edit in src/hydra-queue-runner/builder.cc at line 390
if (quit) exit(0); // testing hack; FIXME: this won't run plugins - edit in src/hydra-queue-runner/builder.cc at line 394
return sDone;} - resolve order conflict in src/hydra-queue-runner/builder.cc at line 394
- edit in src/hydra-queue-runner/builder.cc at line 407
void State::failStep(Connection & conn,Step::ptr step,BuildID buildId,const RemoteResult & result,Machine::ptr machine,bool & stepFinished,bool & quit){/* Register failure in the database for all Build objects thatdirectly or indirectly depend on this step. */ - resolve order conflict in src/hydra-queue-runner/builder.cc at line 407
- edit in src/hydra-queue-runner/builder.cc at line 409
std::vector<BuildID> dependentIDs; - resolve order conflict in src/hydra-queue-runner/builder.cc at line 409
- edit in src/hydra-queue-runner/builder.cc at line 417
while (true) {/* Get the builds and steps that depend on this step. */std::set<Build::ptr> indirect;{auto steps_(steps.lock());std::set<Step::ptr> steps;getDependents(step, indirect, steps); - resolve order conflict in src/hydra-queue-runner/builder.cc at line 417
- edit in src/hydra-queue-runner/builder.cc at line 418
/* If there are no builds left, delete all referringsteps from ‘steps’. As for the success case, we canbe certain no new referrers can be added. */if (indirect.empty()) {for (auto & s : steps) {printMsg(lvlDebug, "finishing build step ‘%s’",localStore->printStorePath(s->drvPath));steps_->erase(s->drvPath); - edit in src/hydra-queue-runner/builder.cc at line 429
}} - resolve order conflict in src/hydra-queue-runner/builder.cc at line 429
- edit in src/hydra-queue-runner/builder.cc at line 431
if (indirect.empty() && stepFinished) break;/* Update the database. */{auto mc = startDbUpdate(); - resolve order conflict in src/hydra-queue-runner/builder.cc at line 431
- edit in src/hydra-queue-runner/builder.cc at line 435
pqxx::work txn(conn); - resolve order conflict in src/hydra-queue-runner/builder.cc at line 435
- edit in src/hydra-queue-runner/builder.cc at line 437
/* Create failed build steps for every build thatdepends on this, except when this step is cachedand is the top-level of that build (since then it'sredundant with the build's isCachedBuild field). */for (auto & build : indirect) {if ((result.stepStatus == bsCachedFailure && build->drvPath == step->drvPath) ||((result.stepStatus != bsCachedFailure && result.stepStatus != bsUnsupported) && buildId == build->id) ||build->finishedInDB)continue;createBuildStep(txn,0, build->id, step, machine ? machine->sshName : "",result.stepStatus, result.errorMsg, buildId == build->id ? 0 : buildId); - resolve order conflict in src/hydra-queue-runner/builder.cc at line 437
- edit in src/hydra-queue-runner/builder.cc at line 451
/* Mark all builds that depend on this derivation as failed. */for (auto & build : indirect) {if (build->finishedInDB) continue;printMsg(lvlError, format("marking build %1% as failed") % build->id);txn.parameterized("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5, notificationPendingSince = $4 where id = $1 and finished = 0")(build->id)((int) (build->drvPath != step->drvPath && result.buildStatus() == bsFailed ? bsDepFailed : result.buildStatus()))(result.startTime)(result.stopTime)(result.stepStatus == bsCachedFailure ? 1 : 0).exec();nrBuildsDone++;} - resolve order conflict in src/hydra-queue-runner/builder.cc at line 451
- resurrect zombie in src/hydra-queue-runner/builder.cc at line 452
/* Mark all builds that depend on this derivation as failed. */for (auto & build : indirect) {if (build->finishedInDB) continue;printMsg(lvlError, format("marking build %1% as failed") % build->id); - resurrect zombie in src/hydra-queue-runner/builder.cc at line 463
nrBuildsDone++; - edit in src/hydra-queue-runner/builder.cc at line 464
/* Remember failed paths in the database so that theywon't be built again. */if (result.stepStatus != bsCachedFailure && result.canCache)for (auto & path : step->drv->outputPaths())txn.parameterized("insert into FailedPaths values ($1)")(localStore->printStorePath(path)).exec(); - resolve order conflict in src/hydra-queue-runner/builder.cc at line 464[8.3455]
- edit in src/hydra-queue-runner/builder.cc at line 464
} - edit in src/hydra-queue-runner/builder.cc at line 476
stepFinished = true; - resolve order conflict in src/hydra-queue-runner/builder.cc at line 476
- edit in src/hydra-queue-runner/builder.cc at line 477
/* Remove the indirect dependencies from ‘builds’. Thiswill cause them to be destroyed. */for (auto & b : indirect) {auto builds_(builds.lock());b->finishedInDB = true;builds_->erase(b->id);dependentIDs.push_back(b->id);if (buildOne == b->id) quit = true;}} - edit in src/hydra-queue-runner/builder.cc at line 494
/* Send notification about this build and its dependents. */{pqxx::work txn(conn);notifyBuildFinished(txn, buildId, dependentIDs);txn.commit();} - resolve order conflict in src/hydra-queue-runner/builder.cc at line 494
- edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 50
, maxUnsupportedTime(config->getIntOption("max_unsupported_time", 0)) - resurrect zombie in src/hydra-queue-runner/hydra-queue-runner.cc at line 271
txn.exec_params0("insert into BuildStepOutputs (build, stepnr, name, path) values ($1, $2, $3, $4)", - edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 457
for (auto & path : step->drv->outputPaths())if (!txn.parameterized("select 1 from FailedPaths where path = $1")(localStore->printStorePath(path)).exec().empty()) - resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 457
- edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 492
void State::dumpStatus(Connection & conn) - edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 524
root.attr("nrUnsupportedSteps", nrUnsupportedSteps); - edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 781
dumpStatus(*conn); - edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 844
conn->await_notification();dumpStatus(*conn); - edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 896[8.968]→[8.6727:6773](∅→∅),[8.968]→[8.6727:6773](∅→∅),[8.6773]→[7.6997:6997](∅→∅),[8.6773]→[7.6997:6997](∅→∅),[8.446]→[8.6390:6442](∅→∅),[8.446]→[8.6390:6442](∅→∅),[8.109]→[8.6443:6473](∅→∅),[8.109]→[8.6443:6473](∅→∅),[8.6473]→[7.6991:6991](∅→∅),[8.6473]→[7.6991:6991](∅→∅),[8.6442]→[7.6989:6989](∅→∅),[8.6442]→[7.6989:6989](∅→∅)
(localStore->printStorePath(drvPath))(localStore->printStorePath(step->drvPath))(step->drv->platform) - resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 896[8.19578]
- edit in src/hydra-queue-runner/queue-monitor.cc at line 87
std::multimap<StorePath, BuildID> newBuildsByPath; - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 87
- edit in src/hydra-queue-runner/queue-monitor.cc at line 107
auto build = std::make_shared<Build>(localStore->parseStorePath(row["drvPath"].as<string>())); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 107
- edit in src/hydra-queue-runner/queue-monitor.cc at line 120
newBuildsByPath.emplace(std::make_pair(build->drvPath.clone(), id)); - edit in src/hydra-queue-runner/queue-monitor.cc at line 127
std::set<StorePath> finishedDrvs; - edit in src/hydra-queue-runner/queue-monitor.cc at line 163
printMsg(lvlError, "marking build %d as cached failure due to ‘%s’",build->id, localStore->printStorePath(ex.step->drvPath)); - resurrect zombie in src/hydra-queue-runner/queue-monitor.cc at line 180
auto res = txn.exec_params("select max(s.build) from BuildSteps s join BuildStepOutputs o on s.build = o.build where path = $1 and startTime != 0 and stopTime != 0 and status = 1", - edit in src/hydra-queue-runner/queue-monitor.cc at line 222
Derivation drv = readDerivation(*localStore, localStore->printStorePath(build->drvPath)); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 222
- edit in src/hydra-queue-runner/queue-monitor.cc at line 232
printMsg(lvlInfo, "marking build %1% as succeeded (cached)", build->id); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 232
- edit in src/hydra-queue-runner/queue-monitor.cc at line 256
printMsg(lvlChatty, "added build %1% (top-level step %2%, %3% new steps)",build->id, localStore->printStorePath(step->drvPath), newSteps.size()); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 256
- edit in src/hydra-queue-runner/queue-monitor.cc at line 275
e.addPrefix(fmt("while loading build %1%: ", build->id)); - edit in src/hydra-queue-runner/queue-monitor.cc at line 362
activeStepState->pid,localStore->printStorePath(activeStep->step->drvPath)); - edit in src/hydra-queue-runner/queue-monitor.cc at line 366
localStore->printStorePath(activeStep->step->drvPath),strerror(errno)); - edit in src/hydra-queue-runner/queue-monitor.cc at line 376
Connection & conn, Build::ptr build, const StorePath & drvPath,Build::ptr referringBuild, Step::ptr referringStep, std::set<StorePath> & finishedDrvs, - edit in src/hydra-queue-runner/queue-monitor.cc at line 405
step = std::make_shared<Step>(drvPath.clone()); - edit in src/hydra-queue-runner/queue-monitor.cc at line 419
steps_->insert_or_assign(drvPath.clone(), step); - edit in src/hydra-queue-runner/queue-monitor.cc at line 425
printMsg(lvlDebug, "considering derivation ‘%1%’", localStore->printStorePath(drvPath)); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 425
- edit in src/hydra-queue-runner/queue-monitor.cc at line 432
step->drv = std::make_unique<Derivation>(readDerivation(*localStore, localStore->printStorePath(drvPath)));step->parsedDrv = std::make_unique<ParsedDerivation>(drvPath.clone(), *step->drv); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 432
- edit in src/hydra-queue-runner/queue-monitor.cc at line 435
step->isDeterministic = get(step->drv->env, "isDetermistic").value_or("0") == "1"; - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 435
- edit in src/hydra-queue-runner/queue-monitor.cc at line 437
step->systemType = step->drv->platform; - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 437
- edit in src/hydra-queue-runner/queue-monitor.cc at line 438
auto i = step->drv->env.find("requiredSystemFeatures"); - edit in src/hydra-queue-runner/queue-monitor.cc at line 440
if (i != step->drv->env.end()) - edit in src/hydra-queue-runner/queue-monitor.cc at line 457
auto outputs = step->drv->outputPaths(); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 457
- edit in src/hydra-queue-runner/queue-monitor.cc at line 459
for (auto & i : step->drv->outputs) - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 459
- edit in src/hydra-queue-runner/queue-monitor.cc at line 463
missing.insert_or_assign(i.first,DerivationOutput(i.second.path.clone(), std::string(i.second.hashAlgo), std::string(i.second.hash))); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 463
- edit in src/hydra-queue-runner/queue-monitor.cc at line 475
localStore->querySubstitutablePathInfos(singleton(i.second.path), infos); - edit in src/hydra-queue-runner/queue-monitor.cc at line 488
printInfo("copying output ‘%1%’ of ‘%2%’ from local store",localStore->printStorePath(i.second.path),localStore->printStorePath(drvPath)); - edit in src/hydra-queue-runner/queue-monitor.cc at line 495
printInfo("substituting output ‘%1%’ of ‘%2%’",localStore->printStorePath(i.second.path),localStore->printStorePath(drvPath)); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 495
- edit in src/hydra-queue-runner/queue-monitor.cc at line 500
copyClosure(ref<Store>(localStore), destStore, singleton(i.second.path)); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 500
- edit in src/hydra-queue-runner/queue-monitor.cc at line 511
printError("while copying/substituting output ‘%s’ of ‘%s’: %s",localStore->printStorePath(i.second.path),localStore->printStorePath(drvPath),e.what()); - edit in src/hydra-queue-runner/queue-monitor.cc at line 525
finishedDrvs.insert(drvPath.clone()); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 525
- edit in src/hydra-queue-runner/queue-monitor.cc at line 530
printMsg(lvlDebug, "creating build step ‘%1%’", localStore->printStorePath(drvPath)); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 530
- edit in src/hydra-queue-runner/queue-monitor.cc at line 533
for (auto & i : step->drv->inputDrvs) { - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 533
- edit in src/hydra-queue-runner/queue-monitor.cc at line 624
(localStore->printStorePath(output.second.path)).exec(); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 624
- edit in src/hydra-queue-runner/queue-monitor.cc at line 680[8.1276]→[8.7642:7708](∅→∅),[8.1276]→[8.7642:7708](∅→∅),[8.1105]→[8.7566:7641](∅→∅),[8.1105]→[8.7566:7641](∅→∅)
for (auto & output : ex.step->drv->outputs) {(localStore->printStorePath(ex.step->drvPath)).exec(); - resolve order conflict in src/hydra-queue-runner/queue-monitor.cc at line 680[75.1125]
- resurrect zombie in src/script/hydra-eval-jobset at line 343[8.434]→[6.9876:10105](∅→∅),[8.434]→[6.9876:10105](∅→∅),[8.721]→[8.762:768](∅→∅),[8.1462]→[8.762:768](∅→∅),[6.10105]→[8.762:768](∅→∅),[8.762]→[8.762:768](∅→∅),[8.762]→[8.762:768](∅→∅)
@cmd = ("hydra-eval-jobs","<" . $nixExprInputName . "/" . $nixExprPath . ">","--gc-roots-dir", getGCRootsDir,"--max-jobs", 1,inputsToArgs($inputInfo));}