Branch: refs/heads/master
  Home:   https://github.com/NixOS/hydra
  Commit: de9d7bcf2580f3c114df9cf3f112aae3367b01d6
      
https://github.com/NixOS/hydra/commit/de9d7bcf2580f3c114df9cf3f112aae3367b01d6
  Author: Eelco Dolstra <[email protected]>
  Date:   2016-11-08 (Tue, 08 Nov 2016)

  Changed paths:
    M src/hydra-queue-runner/dispatcher.cc

  Log Message:
  -----------
  hydra-queue-runner: Handle exceptions in the dispatcher thread

E.g. "resource unavailable" when creating new threads.


  Commit: 1ecc8a4f4099dcfd148aecbbe9277d5486b9eef0
      
https://github.com/NixOS/hydra/commit/1ecc8a4f4099dcfd148aecbbe9277d5486b9eef0
  Author: Eelco Dolstra <[email protected]>
  Date:   2016-11-08 (Tue, 08 Nov 2016)

  Changed paths:
    M src/hydra-queue-runner/builder.cc

  Log Message:
  -----------
  hydra-queue-runner: Fix a race keeping cancelled steps alive

If a step is cancelled just as its builder step is starting,
doBuildStep() will return sRetry. This causes builder() to make the
step runnable again, since the queue monitor may have added new builds
referencing it. The idea is that if the latter condition is not true,
the step's reference count will drop to zero and it will be
deleted. However, if the dispatcher thread sees and locks the step
before the reference count can drop to zero in the builder thread, the
dispatcher thread will start a new builder thread for the step. Thus
the step can be kept alive for an indefinite amount of time.

The fix is for State::builder() to use a weak pointer to the step, to
ensure that the step's reference count can drop to zero *before* it's
added to the runnable queue.


Compare: https://github.com/NixOS/hydra/compare/7863d2e1da89...1ecc8a4f4099
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to