Abort unsupported build steps

[?]
Mar 26, 2020, 2:00 PM
U55WNIDPCBAADLBSZXWUV6C3LVCILRWNDFJ7S3OJKL2WAWK2FLZAC

Dependencies

  • [2] 7KLHBDYA Fix build
  • [3] 32KJOERM Turn hydra-notify into a daemon
  • [4] FJEK6FVU Fix build
  • [5] YTJBED7G Fix build
  • [6] UNVMKJV5 Unify build and step status codes
  • [7] OBOTGFG6 Prevent orphaned build steps
  • [8] EBJP3MNA Build against nix-master
  • [9] N4IROACV Move buildRemote() into State
  • [10] BRAESISH Warn if PostgreSQL appears stalled
  • [11] IKJBYIGY Update to reflect BinaryCacheStore changes
  • [12] EPWEMRI2 Allow determinism checking for entire jobsets
  • [13] G7KWXSFM Distinguish build step states
  • [14] IK2UBDAU Revive jobset scheduling
  • [15] OKQLN5AG Set proper charset on log files
  • [16] O3NM62IZ Support multiple machines files
  • [17] SGFLU2VS USER -> LOGNAME for consistency
  • [18] QAPR72LX Add some debug code
  • [19] FHVJYJFE Upload build logs to the binary cache
  • [20] EYR3EW6J Keep stats for the Hydra auto scaler
  • [21] PQFOMNTL hydra-queue-runner: More stats
  • [22] RNJILKTW Upload log files to the right location
  • [23] KBZHIGLG Record the machine used for a build step
  • [24] DYVETV7L hydra-queue-runner: Allow multiple concurrent daemon connections
  • [25] UQQ4IL55 Add a error type for "unsupported system type"
  • [26] 24BMQDZA Start of single-process hydra-queue-runner
  • [27] UYUVQWXQ Fix hydra-queue-runner --build-one
  • [28] WDQJRLNA Handle derivations with system type 'builtin'
  • [29] NSBNNM77 Add hydra.conf option "nar_buffer_size" to configure memoryTokens limit
  • [30] LVQXQIYA Kill active build steps when builds are cancelled
  • [31] UVNTWTWG Prevent download of NARs we just uploaded
  • [32] 46ADBTMQ Start steps in order of ascending build ID
  • [33] BG6PEOB2 Make the output size limit configurable
  • [34] NTEDD7T4 Provide a plugin hook for when build steps finish
  • [35] OG3Z3QGC Namespace cleanup
  • [36] B2L4T3X6 Sync with Nix
  • [37] HH3LID6L Re-implement log size limits
  • [38] 4ZJIJCVF Slight cleanup
  • [39] T5BIOVJE Add support for tracking custom metrics
  • [40] DKJFD6JN Process Nix API changes
  • [41] INVXGPNK Fix root creation when the root already exists but is owned by another user
  • [42] B7ENVLRS hydra-queue-runner: Make build notification more reliable
  • [43] DRC26KFB hydra-queue-runner: Fix a race keeping cancelled steps alive
  • [44] YXYXJDMB hydra-queue-runner: Write GC roots for outputs paths
  • [45] 6LIYTMFU Fix build failure on GCC 5.4
  • [46] XZYFFHLQ hydra-queue-runner: Set a thread title for the builder threads
  • [47] 62MQPRXC Pass null values to libpqxx properly
  • [48] WE5Q2NVI Allow build to be bumped to the front of the queue via the web interface
  • [49] XIFDDTXZ Don't lock the BuildSteps table when inserting
  • [50] MHVIT4JY Split hydra-queue-runner.cc more
  • [51] MJL3PDXI Fix duplicate step_finished notification
  • [52] FITVNQ2S Keep track of the time we spend copying to/from build machines
  • [53] TPNHTE5V Remove obsolete Builds columns and provide accurate "Running builds"
  • [54] NKQOEVVP Get rid of "will retry" messages after "maybe cancelling..."
  • [55] LENA4O2V Periodically close RemoteStore connections
  • [56] HJOEIMLR Refactor
  • [57] FJ5H26J6 Fix building against nix master
  • [58] IWB3F4Z6 Fail builds with previously failed steps early
  • [59] UVQJBDHN Move log compression to a plugin
  • [60] 7LWB2J2Z Periodically clear orphaned build steps
  • [61] SODOV2CM Automatically reload $NIX_REMOTE_SYSTEMS when it changes
  • [62] MSIHMO45 Tweak build steps
  • [63] NAYQT2GT hydra-queue-runner: Use cmdBuildDerivation
  • [64] VQISTKOP hydra-queue-runner: Use substitutes
  • [65] WDGARQ76 Reuse build products / metrics stored in the database
  • [66] WV4SSAIY Build against nix-master
  • [*] 4I2HF4L3 Unindent
  • [*] NWFDDRUG hydra-queue-runner: Limit concurrent database connections
  • [*] TTBLPQAJ Keep track of wait time per system type

Change contents

  • edit in src/hydra-queue-runner/builder.cc at line 21
    [6.327][6.4111:4192]()
    setThreadName("bld~" + std::string(reservation->step->drvPath.to_string()));
  • edit in src/hydra-queue-runner/builder.cc at line 42
    [6.474][6.4193:4426]()
    printMsg(lvlError, "uncaught exception building ‘%s’ on ‘%s’: %s",
    localStore->printStorePath(reservation->step->drvPath),
    reservation->machine->sshName,
    e.what());
  • edit in src/hydra-queue-runner/builder.cc at line 65
    [6.228][6.4427:4541]()
    printMsg(lvlInfo, "will retry ‘%s’ after %ss", localStore->printStorePath(step->drvPath), delta);
  • edit in src/hydra-queue-runner/builder.cc at line 100
    [6.484][6.4542:4585]()
    std::optional<StorePath> buildDrvPath;
  • edit in src/hydra-queue-runner/builder.cc at line 121
    [6.2916][6.4586:4700]()
    printMsg(lvlInfo, "maybe cancelling build step ‘%s’", localStore->printStorePath(step->drvPath));
  • edit in src/hydra-queue-runner/builder.cc at line 143
    [6.611][6.4701:4748]()
    buildDrvPath = build->drvPath.clone();
  • edit in src/hydra-queue-runner/builder.cc at line 148
    [6.840][6.4749:4870]()
    localStore->printStorePath(step->drvPath), repeats + 1, machine->sshName, buildId, (dependents.size() - 1));
  • edit in src/hydra-queue-runner/builder.cc at line 152
    [6.3421][6.4364:4435]()
    bool quit = buildId == buildOne && step->drvPath == *buildDrvPath;
  • resolve order conflict in src/hydra-queue-runner/builder.cc at line 152
    [6.4942]
    [6.3460]
  • edit in src/hydra-queue-runner/builder.cc at line 171
    [6.335][6.4943:5086]()
    store->upsertFile("log/" + std::string(step->drvPath.to_string()), readFile(result.logFile), "text/plain; charset=utf-8");
  • edit in src/hydra-queue-runner/builder.cc at line 223
    [6.801][6.5087:5178]()
    res = getBuildOutput(destStore, ref<FSAccessor>(result.accessor), *step->drv);
  • edit in src/hydra-queue-runner/builder.cc at line 260
    [6.2621][6.5179:5361]()
    printMsg(lvlError, "possibly transient failure building ‘%s’ on ‘%s’: %s",
    localStore->printStorePath(step->drvPath), machine->sshName, result.errorMsg);
  • edit in src/hydra-queue-runner/builder.cc at line 280
    [6.5815][6.5362:5415]()
    for (auto & path : step->drv->outputPaths())
  • edit in src/hydra-queue-runner/builder.cc at line 313
    [6.7082][6.5416:5556]()
    printMsg(lvlDebug, "finishing build step ‘%s’",
    localStore->printStorePath(step->drvPath));
  • replacement in src/hydra-queue-runner/builder.cc at line 379
    [6.9302][6.9302:9315]()
    } else {
    [6.9302]
    [6.303]
    } else
    failStep(*conn, step, buildId, result, machine, stepFinished, quit);
  • replacement in src/hydra-queue-runner/builder.cc at line 382
    [6.304][6.9316:9445](),[6.9316][6.9316:9445]()
    /* Register failure in the database for all Build objects that
    directly or indirectly depend on this step. */
    [6.304]
    [6.9445]
    // 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;
  • replacement in src/hydra-queue-runner/builder.cc at line 390
    [6.9446][6.9446:9489]()
    std::vector<BuildID> dependentIDs;
    [6.9446]
    [6.9489]
    if (quit) exit(0); // testing hack; FIXME: this won't run plugins
  • replacement in src/hydra-queue-runner/builder.cc at line 392
    [6.9490][6.9490:9513](),[6.9514][6.9514:9780]()
    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);
    [6.9490]
    [6.9780]
    return sDone;
    }
  • edit in src/hydra-queue-runner/builder.cc at line 395
    [6.9781][6.9781:10074](),[6.10074][6.5557:5702](),[6.10074][6.5050:5195](),[6.5195][6.10173:10246](),[6.5702][6.10173:10246](),[6.10173][6.10173:10246](),[6.10273][6.10273:10305]()
    /* If there are no builds left, delete all referring
    steps from ‘steps’. As for the success case, we can
    be certain no new referrers can be added. */
    if (indirect.empty()) {
    for (auto & s : steps) {
    printMsg(lvlDebug, "finishing build step ‘%s’",
    localStore->printStorePath(s->drvPath));
    printMsg(lvlDebug, "finishing build step ‘%s’",
    localStore->printStorePath(s->drvPath));
    steps_->erase(s->drvPath);
    }
    }
    }
  • replacement in src/hydra-queue-runner/builder.cc at line 396
    [6.306][6.306:363]()
    if (indirect.empty() && stepFinished) break;
    [6.306]
    [6.10305]
    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 that
    directly or indirectly depend on this step. */
  • replacement in src/hydra-queue-runner/builder.cc at line 408
    [6.10306][6.10306:10359](),[6.10359][6.125:168]()
    /* Update the database. */
    {
    auto mc = startDbUpdate();
    [6.10306]
    [6.168]
    std::vector<BuildID> dependentIDs;
  • replacement in src/hydra-queue-runner/builder.cc at line 410
    [6.169][6.10359:10398](),[6.10359][6.10359:10398]()
    pqxx::work txn(*conn);
    [6.169]
    [6.10806]
    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);
  • replacement in src/hydra-queue-runner/builder.cc at line 418
    [6.11220][6.2802:3078](),[6.3078][6.11545:11594](),[6.11545][6.11545:11594](),[6.11594][6.3079:3181](),[6.3181][6.2138:2229](),[6.2229][6.11736:11816](),[6.3266][6.11736:11816](),[6.11736][6.11736:11816](),[6.11816][6.2230:2408]()
    /* Create failed build steps for every build that
    depends on this, except when this step is cached
    and is the top-level of that build (since then it's
    redundant with the build's isCachedBuild field). */
    for (auto & build2 : indirect) {
    if ((result.stepStatus == bsCachedFailure && build2->drvPath == step->drvPath) ||
    (result.stepStatus != bsCachedFailure && buildId == build2->id) ||
    build2->finishedInDB)
    continue;
    createBuildStep(txn, 0, build2->id, step, machine->sshName,
    result.stepStatus, result.errorMsg, buildId == build2->id ? 0 : buildId);
    [6.10807]
    [6.11984]
    /* If there are no builds left, delete all referring
    steps from ‘steps’. As for the success case, we can
    be 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 427
    [6.12002]
    [6.12002]
    }
    }
  • replacement in src/hydra-queue-runner/builder.cc at line 430
    [6.12212][6.12212:12527](),[6.12527][6.0:190](),[6.184][6.12696:12733](),[6.190][6.12696:12733](),[6.12696][6.12696:12733](),[6.12733][6.3520:3660](),[6.3660][6.12855:12940](),[6.12855][6.12855:12940](),[6.12940][6.3661:3740](),[6.3740][6.12996:13050](),[6.12996][6.12996:13050]()
    /* Mark all builds that depend on this derivation as failed. */
    for (auto & build2 : indirect) {
    if (build2->finishedInDB) continue;
    printMsg(lvlError, format("marking build %1% as failed") % build2->id);
    txn.parameterized
    ("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5, notificationPendingSince = $4 where id = $1 and finished = 0")
    (build2->id)
    ((int) (build2->drvPath != step->drvPath && result.buildStatus() == bsFailed ? bsDepFailed : result.buildStatus()))
    (result.startTime)
    (result.stopTime)
    (result.stepStatus == bsCachedFailure ? 1 : 0).exec();
    nrBuildsDone++;
    }
    [6.12003]
    [6.13050]
    if (indirect.empty() && stepFinished) break;
    /* Update the database. */
    {
    auto mc = startDbUpdate();
  • replacement in src/hydra-queue-runner/builder.cc at line 436
    [6.13051][6.13051:13165](),[6.13165][6.3741:3818](),[6.3818][6.5703:5891](),[6.3818][6.5196:5384]()
    /* Remember failed paths in the database so that they
    won'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();
    for (auto & path : step->drv->outputPaths())
    txn.parameterized("insert into FailedPaths values ($1)")(localStore->printStorePath(path)).exec();
    [6.13051]
    [6.13409]
    pqxx::work txn(conn);
  • replacement in src/hydra-queue-runner/builder.cc at line 438
    [6.13410][6.13410:13440]()
    txn.commit();
    [6.13410]
    [6.13440]
    /* Create failed build steps for every build that
    depends on this, except when this step is cached
    and is the top-level of that build (since then it's
    redundant 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);
  • replacement in src/hydra-queue-runner/builder.cc at line 452
    [6.353][6.353:386]()
    stepFinished = true;
    [6.353]
    [6.13454]
    /* 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++;
    }
  • replacement in src/hydra-queue-runner/builder.cc at line 466
    [6.13455][6.13455:13865]()
    /* Remove the indirect dependencies from ‘builds’. This
    will 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;
    }
    }
    [6.13455]
    [6.13865]
    /* Remember failed paths in the database so that they
    won'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();
  • edit in src/hydra-queue-runner/builder.cc at line 472
    [6.13866][6.13866:13945](),[6.13945][3.354:450]()
    /* Send notification about this build and its dependents. */
    {
    pqxx::work txn(*conn);
    notifyBuildFinished(txn, buildId, dependentIDs);
  • edit in src/hydra-queue-runner/builder.cc at line 474
    [6.14165][6.14165:14171]()
    }
  • replacement in src/hydra-queue-runner/builder.cc at line 475
    [6.14172][6.14172:14530]()
    // 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;
    [6.14172]
    [6.14530]
    stepFinished = true;
  • replacement in src/hydra-queue-runner/builder.cc at line 477
    [6.14531][6.321:391]()
    if (quit) exit(0); // testing hack; FIXME: this won't run plugins
    [6.14531]
    [6.14570]
    /* Remove the indirect dependencies from ‘builds’. This
    will 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;
    }
    }
  • replacement in src/hydra-queue-runner/builder.cc at line 488
    [6.14571][6.297:315]()
    return sDone;
    [6.14571]
    [6.14589]
    /* Send notification about this build and its dependents. */
    {
    pqxx::work txn(conn);
    notifyBuildFinished(txn, buildId, dependentIDs);
    txn.commit();
    }
  • edit in src/hydra-queue-runner/builder.cc at line 498
    [6.30][6.5385:5434]()
    void State::addRoot(const StorePath & storePath)
  • resolve order conflict in src/hydra-queue-runner/builder.cc at line 498
    [6.5941]
    [6.74]
  • edit in src/hydra-queue-runner/builder.cc at line 500
    [6.76][6.5435:5504]()
    auto root = rootsDir + "/" + std::string(storePath.to_string());
  • resolve order conflict in src/hydra-queue-runner/builder.cc at line 500
    [6.6011]
    [6.132]
  • edit in src/hydra-queue-runner/dispatcher.cc at line 13
    [6.14756][6.6012:6113]()
    printMsg(lvlChatty, "step ‘%s’ is now runnable", localStore->printStorePath(step->drvPath));
  • edit in src/hydra-queue-runner/dispatcher.cc at line 251
    [6.143][6.6114:6224]()
    mi.machine->sshName, localStore->printStorePath(step->drvPath), step->drv->platform);
  • edit in src/hydra-queue-runner/dispatcher.cc at line 302
    [68.4651]
    [6.19812]
    abortUnsupported();
  • edit in src/hydra-queue-runner/dispatcher.cc at line 317
    [6.19999]
    [6.1304]
    void State::abortUnsupported()
    {
    /* Make a copy of 'runnable' and 'machines' so we don't block them
    very long. */
    auto runnable2 = *runnable.lock();
    auto machines2 = *machines.lock();
    system_time now = std::chrono::system_clock::now();
    auto now2 = time(0);
  • edit in src/hydra-queue-runner/dispatcher.cc at line 329
    [6.1305]
    [6.1305]
    std::unordered_set<Step::ptr> aborted;
  • edit in src/hydra-queue-runner/dispatcher.cc at line 331
    [6.1306]
    [6.1306]
    for (auto & wstep : runnable2) {
    auto step(wstep.lock());
    if (!step) continue;
    bool supported = false;
    for (auto & machine : machines2) {
    if (machine.second->supportsStep(step)) {
    step->state.lock()->lastSupported = now;
    supported = true;
    break;
    }
    }
    if (!supported
    && std::chrono::duration_cast<std::chrono::seconds>(now - step->state.lock()->lastSupported).count() >= maxUnsupportedTime)
    {
    printError("aborting unsupported build step '%s' (type '%s')",
    localStore->printStorePath(step->drvPath),
    step->systemType);
    aborted.insert(step);
    auto conn(dbPool.get());
    std::set<Build::ptr> dependents;
    std::set<Step::ptr> steps;
    getDependents(step, dependents, steps);
    /* Maybe the step got cancelled. */
    if (dependents.empty()) continue;
    /* Find the build that has this step as the top-level (if
    any). */
    Build::ptr build;
    for (auto build2 : dependents) {
    if (build2->drvPath == step->drvPath)
    build = build2;
    }
    if (!build) build = *dependents.begin();
    bool stepFinished = false;
    bool quit = false;
    failStep(
    *conn, step, build->id,
    RemoteResult {
    .stepStatus = bsUnsupported,
    .errorMsg = fmt("unsupported system type '%s'",
    step->systemType),
    .startTime = now2,
    .stopTime = now2,
    },
    nullptr, stepFinished, quit);
    if (quit) exit(1);
    }
    }
    /* Clean up 'runnable'. */
    {
    auto runnable_(runnable.lock());
    for (auto i = runnable_->begin(); i != runnable_->end(); ) {
    if (aborted.count(i->lock()))
    i = runnable_->erase(i);
    else
    ++i;
    }
    }
    }
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 41
    [6.51][6.6225:6255]()
    auto value = getEnv(key);
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 43
    [6.165][6.6256:6275]()
    return *value;
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 49
    [2.43]
    [69.0]
    , maxUnsupportedTime(config->getIntOption("max_unsupported_time", 0))
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 165
    [6.171][6.5769:5882]()
    getEnv("NIX_REMOTE_SYSTEMS").value_or(pathExists(defaultMachinesFile) ? defaultMachinesFile : ""), ":");
  • resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 165
    [6.6389]
    [6.275]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 257
    [6.446][6.5883:5935]()
    (localStore->printStorePath(step->drvPath))
  • resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 257
    [6.6442]
    [6.560]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 260
    [6.109][6.5936:5966]()
    (step->drv->platform)
  • resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 260
    [6.6473]
    [6.596]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 268
    [6.8997][6.6474:6519]()
    for (auto & output : step->drv->outputs)
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 272
    [6.9164][6.6013:6113]()
    (buildId)(stepNr)(output.first)(localStore->printStorePath(output.second.path)).exec();
  • resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 272
    [6.6620]
    [6.9238]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 315
    [6.594][6.6114:6219]()
    Build::ptr build, const StorePath & drvPath, const string & outputName, const StorePath & storePath)
  • resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 315
    [6.6726]
    [6.689]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 325
    [6.968][6.6220:6266]()
    (localStore->printStorePath(drvPath))
  • resolve order conflict in src/hydra-queue-runner/hydra-queue-runner.cc at line 325
    [6.6773]
    [6.986]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 334
    [6.1173][6.6774:6888]()
    (build->id)
    (stepNr)
    (outputName)
    (localStore->printStorePath(storePath)).exec();
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 459
    [6.1390][6.6382:6557]()
    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 459
    [6.7064]
    [6.1535]
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 770
    [6.75][6.7065:7141]()
    localStore = openStore(getEnv("NIX_REMOTE").value_or(""), localParams);
  • replacement in src/hydra-queue-runner/state.hh at line 71
    [6.3662][6.4211:4241]()
    BuildStatus buildStatus()
    [6.3662]
    [6.3682]
    BuildStatus buildStatus() const
  • edit in src/hydra-queue-runner/state.hh at line 126
    [6.2067][6.10681:10760]()
    nix::StorePath drvPath;
    std::map<std::string, nix::StorePath> outputs;
  • edit in src/hydra-queue-runner/state.hh at line 138
    [6.2276][4.186:262]()
    Build(nix::StorePath && drvPath) : drvPath(std::move(drvPath))
    { }
  • edit in src/hydra-queue-runner/state.hh at line 156
    [6.2373][6.10761:10831]()
    nix::StorePath drvPath;
    std::unique_ptr<nix::Derivation> drv;
  • edit in src/hydra-queue-runner/state.hh at line 201
    [70.1366]
    [6.3082]
    /* The time that we last saw a machine that supports this
    step. */
    system_time lastSupported = std::chrono::system_clock::now();
  • edit in src/hydra-queue-runner/state.hh at line 210
    [6.1627][6.3165:3166](),[6.3165][6.3165:3166](),[6.3166][4.263:337]()
    Step(nix::StorePath && drvPath) : drvPath(std::move(drvPath))
    { }
  • resolve order conflict in src/hydra-queue-runner/state.hh at line 211
    [4.338]
    [5.263]
  • edit in src/hydra-queue-runner/state.hh at line 265
    [6.86][6.10832:10947]()
    if (!systemTypes.count(step->drv->platform == "builtin" ? nix::settings.thisSystem : step->drv->platform))
  • edit in src/hydra-queue-runner/state.hh at line 310
    [6.4357]
    [6.404]
    /* Time in seconds before unsupported build steps are aborted. */
    const unsigned int maxUnsupportedTime = 0;
  • edit in src/hydra-queue-runner/state.hh at line 329
    [6.4741][6.10948:11004]()
    typedef std::map<nix::StorePath, Step::wptr> Steps;
  • edit in src/hydra-queue-runner/state.hh at line 470
    [6.3221][6.11005:11130]()
    Build::ptr build, const nix::StorePath & drvPath, const std::string & outputName, const nix::StorePath & storePath);
  • edit in src/hydra-queue-runner/state.hh at line 489
    [6.1213][6.11131:11309]()
    Connection & conn, Build::ptr build, const nix::StorePath & drvPath,
    Build::ptr referringBuild, Step::ptr referringStep, std::set<nix::StorePath> & finishedDrvs,
  • edit in src/hydra-queue-runner/state.hh at line 493
    [6.8033]
    [6.4698]
    void failStep(
    Connection & conn,
    Step::ptr step,
    BuildID buildId,
    const RemoteResult & result,
    Machine::ptr machine,
    bool & stepFinished,
    bool & quit);
  • edit in src/hydra-queue-runner/state.hh at line 515
    [6.8186]
    [6.8186]
    void abortUnsupported();
  • edit in src/hydra-queue-runner/state.hh at line 551
    [6.302][6.10803:10855]()
    void addRoot(const nix::StorePath & storePath);
  • resolve order conflict in src/hydra-queue-runner/state.hh at line 551
    [6.11362]
    [6.9109]