worker: respect C-c on sudo nix-build
While debugging something else I observed that latest `main` ignores
`Control-C` on `sudo nix-build`.
After reading through the capnproto docs, it seems as if the promise
must be fulfilled to actually terminate the `promise.wait()` below.
This also applies to scenarios such as stopping the client
(`nix-build`), but the builders on the daemon-side are still running,
i.e. closes #540
Co-authored-by: eldritch horrors <pennae@lix.systems>
Change-Id: I9634d14df4909fc1b65d05654aad0309bcca8a0a
This commit is contained in:
parent
9865ebaaa6
commit
a322fcea4a
|
@ -239,7 +239,7 @@ Worker::Results Worker::run(std::function<Targets (GoalFactory &)> req)
|
||||||
|
|
||||||
auto onInterrupt = kj::newPromiseAndCrossThreadFulfiller<Result<Results>>();
|
auto onInterrupt = kj::newPromiseAndCrossThreadFulfiller<Result<Results>>();
|
||||||
auto interruptCallback = createInterruptCallback([&] {
|
auto interruptCallback = createInterruptCallback([&] {
|
||||||
return result::failure(std::make_exception_ptr(makeInterrupted()));
|
onInterrupt.fulfiller->fulfill(result::failure(std::make_exception_ptr(makeInterrupted())));
|
||||||
});
|
});
|
||||||
|
|
||||||
auto promise = runImpl(std::move(topGoals))
|
auto promise = runImpl(std::move(topGoals))
|
||||||
|
|
Loading…
Reference in a new issue