diff options
author | eldritch horrors <pennae@lix.systems> | 2024-10-05 00:38:35 +0200 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-10-05 21:19:51 +0000 |
commit | 9adf6f4568d5a6b1c61ff93beb12a45b962c2602 (patch) | |
tree | e4c158535a8db9f2e1e1312f0d829bfb30648dd5 /src/libstore/build/worker.hh | |
parent | 03cbc0ecb9402fe7bbe1a2acd4643995003d7bb2 (diff) |
libstore: remove Goal::notify
Goal::work() is a fully usable promise that does not rely on the worker
to report completion conditions. as such we no longer need the `notify`
field that enabled this interplay. we do have to clear goal caches when
destroying the worker though, otherwise goal promises may (incorrectly)
keep goals alive due to strong shared pointers created by childStarted.
Change-Id: Ie607209aafec064dbdf3464fe207d70ba9ee158a
Diffstat (limited to 'src/libstore/build/worker.hh')
-rw-r--r-- | src/libstore/build/worker.hh | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/src/libstore/build/worker.hh b/src/libstore/build/worker.hh index 6569de6ee..923092b51 100644 --- a/src/libstore/build/worker.hh +++ b/src/libstore/build/worker.hh @@ -96,15 +96,7 @@ private: struct CachedGoal { std::weak_ptr<G> goal; - kj::Own<kj::ForkedPromise<Result<Goal::WorkResult>>> promise; - kj::Own<kj::PromiseFulfiller<Result<Goal::WorkResult>>> fulfiller; - - CachedGoal() - { - auto pf = kj::newPromiseAndFulfiller<Result<Goal::WorkResult>>(); - promise = kj::heap(pf.promise.fork()); - fulfiller = std::move(pf.fulfiller); - } + kj::ForkedPromise<Result<Goal::WorkResult>> promise{nullptr}; }; /** * Maps used to prevent multiple instantiations of a goal for the |