hydra-queue-runner: Fix assertion failure

[?]
Nov 2, 2016, 11:41 AM
KPKXKDNGVWQSM5D5ODNWZBBQDE3YT32CEAWIEYND62P26XHPKGTAC

Dependencies

  • [2] LVQXQIYA Kill active build steps when builds are cancelled
  • [3] EYR3EW6J Keep stats for the Hydra auto scaler
  • [4] MHVIT4JY Split hydra-queue-runner.cc more
  • [5] KQ3EGUQY Add some instrumentation to keep track of dispatcher cost
  • [6] B2L4T3X6 Sync with Nix
  • [7] TTBLPQAJ Keep track of wait time per system type
  • [*] HJOEIMLR Refactor

Change contents

  • replacement in src/hydra-queue-runner/builder.cc at line 16
    [2.1][2.1:45]()
    reservation->threadId = pthread_self();
    [2.1]
    [3.350]
    auto activeStep = std::make_shared<ActiveStep>();
    activeStep->step = reservation->step;
    activeStep->threadId = pthread_self();
    activeSteps_.lock()->insert(activeStep);
  • edit in src/hydra-queue-runner/builder.cc at line 21
    [3.351][2.46:93]()
    activeSteps_.lock()->insert(reservation);
  • replacement in src/hydra-queue-runner/builder.cc at line 22
    [2.130][2.130:215]()
    reservation->threadId = -1;
    activeSteps_.lock()->erase(reservation);
    [2.130]
    [2.215]
    activeStep->threadId = -1;
    activeSteps_.lock()->erase(activeStep);
  • edit in src/hydra-queue-runner/state.hh at line 373
    [3.2908][2.4782:4846]()
    pthread_t threadId = 0;
    bool cancelled = false;
  • replacement in src/hydra-queue-runner/state.hh at line 377
    [2.4848][2.4848:4923]()
    nix::Sync<std::set<std::shared_ptr<MachineReservation>>> activeSteps_;
    [2.4848]
    [3.1480]
    struct ActiveStep
    {
    Step::ptr step;
    pthread_t threadId;
    };
  • edit in src/hydra-queue-runner/state.hh at line 383
    [3.1481]
    [3.1481]
    nix::Sync<std::set<std::shared_ptr<ActiveStep>>> activeSteps_;