Prefer cached failure over unsupported system type

[?]
Jun 16, 2015, 4:00 PM
FKLICOHYATLMF3Q6YBQAOVKBRTCDY2TLKHML3B4DUI7YX4H4MQCAC

Dependencies

  • [2] HLSHCK3C Support requiredSystemFeatures
  • [3] RQUAATWB Add status dump facility
  • [4] N5O7VEEO Immediately abort builds that require an unsupported system type
  • [5] NJJ7H64S Very basic multi-threaded queue runner
  • [6] IWB3F4Z6 Fail builds with previously failed steps early
  • [7] GKZN4UV7 Make the queue monitor more robust, and better debug output
  • [8] 5AIYUMTB Basic remote building
  • [9] UQQ4IL55 Add a error type for "unsupported system type"
  • [10] 22LDPAIP Check non-runnable steps for unsupported system type
  • [*] 24BMQDZA Start of single-process hydra-queue-runner

Change contents

  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 200
    [4.7046][4.7046:7253](),[4.7253][3.0:2]()
    /* The currently active builder threads. FIXME: We could re-use
    these, but since they're fairly long-running, it's probably not
    worth it. */
    // std::vector<std::thread> builderThreads;
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 532
    [2.507][4.342:343](),[4.342][4.342:343](),[4.248][4.469:726](),[4.343][4.469:726](),[4.469][4.469:726](),[4.726][4.344:345](),[4.345][4.76:106](),[4.726][4.76:106](),[4.144][4.144:234](),[4.234][4.346:455]()
    bool supported = false;
    {
    auto machines_(machines.lock()); // FIXME: use shared_mutex
    for (auto & m : *machines_)
    if (m->supportsStep(r)) { supported = true; break; }
    }
    if (!supported) {
    printMsg(lvlError, format("aborting unsupported build %1%") % build->id);
    buildStatus = bsUnsupported;
    buildStepStatus = bssUnsupported;
    }
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 539
    [4.727]
    [4.727]
    if (buildStatus == bsSuccess) {
    bool supported = false;
    {
    auto machines_(machines.lock()); // FIXME: use shared_mutex
    for (auto & m : *machines_)
    if (m->supportsStep(r)) { supported = true; break; }
    }
    if (!supported) {
    printMsg(lvlError, format("aborting unsupported build %1%") % build->id);
    buildStatus = bsUnsupported;
    buildStepStatus = bssUnsupported;
    }
    }