createStep(): Cache finished derivations

[?]
Jun 23, 2015, 1:25 AM
4D7CHQ345ZSI52GPNW73JOYALRLFEGI2YUDWKG4UCDE55MO5LQ2AC

Dependencies

  • [2] HUUZFPPK Fix race between the queue monitor and the builder threads
  • [3] 24BMQDZA Start of single-process hydra-queue-runner
  • [4] 2IQRXLWE Support cancelling builds
  • [5] 22LDPAIP Check non-runnable steps for unsupported system type
  • [6] NJJ7H64S Very basic multi-threaded queue runner
  • [7] HLSHCK3C Support requiredSystemFeatures
  • [8] ENXUSMSV Make concurrency more robust
  • [9] GKZN4UV7 Make the queue monitor more robust, and better debug output
  • [10] JAUB2FT5 getQueuedBuilds(): Handle dependent builds first

Change contents

  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 307
    [3.1249][2.263:323]()
    Build::ptr referringBuild, Step::ptr referringStep,
    [3.1249]
    [3.0]
    Build::ptr referringBuild, Step::ptr referringStep, std::set<Path> & finishedDrvs,
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 568
    [3.354][2.367:460]()
    Step::ptr step = createStep(store, build->drvPath, build, 0, newSteps, newRunnable);
    [3.354]
    [3.355]
    std::set<Path> finishedDrvs; // FIXME: re-use?
    Step::ptr step = createStep(store, build->drvPath, build, 0, finishedDrvs, newSteps, newRunnable);
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 718
    [3.4065][2.550:606]()
    Build::ptr referringBuild, Step::ptr referringStep,
    [3.4065]
    [3.443]
    Build::ptr referringBuild, Step::ptr referringStep, std::set<Path> & finishedDrvs,
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 721
    [3.11566]
    [2.607]
    if (finishedDrvs.find(drvPath) != finishedDrvs.end()) return 0;
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 789
    [3.12108][3.12108:12133]()
    if (valid) return 0;
    [3.12108]
    [3.12133]
    if (valid) {
    finishedDrvs.insert(drvPath);
    return 0;
    }
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 800
    [3.12329][2.1993:2072]()
    auto dep = createStep(store, i.first, 0, step, newSteps, newRunnable);
    [3.12329]
    [3.12374]
    auto dep = createStep(store, i.first, 0, step, finishedDrvs, newSteps, newRunnable);