diff --git a/src/libstore/build/derivation-goal.cc b/src/libstore/build/derivation-goal.cc index 4236f6089..1309c313c 100644 --- a/src/libstore/build/derivation-goal.cc +++ b/src/libstore/build/derivation-goal.cc @@ -660,9 +660,8 @@ Goal::Co DerivationGoal::tryToBuild() if (!actLock) actLock = std::make_unique(*logger, lvlWarn, actBuildWaiting, fmt("waiting for a machine to build '%s'", Magenta(worker.store.printStorePath(drvPath)))); - worker.waitForAWhile(shared_from_this()); outputLocks.unlock(); - co_await Suspend{}; + co_await waitForAWhile(); co_return tryToBuild(); case rpDecline: /* We should do it ourselves. */ diff --git a/src/libstore/unix/build/local-derivation-goal.cc b/src/libstore/unix/build/local-derivation-goal.cc index 89ededa45..980712f1a 100644 --- a/src/libstore/unix/build/local-derivation-goal.cc +++ b/src/libstore/unix/build/local-derivation-goal.cc @@ -479,9 +479,8 @@ Goal::Co LocalDerivationGoal::tryLocalBuild() unsigned int curBuilds = worker.getNrLocalBuilds(); if (curBuilds >= settings.maxBuildJobs) { - worker.waitForBuildSlot(shared_from_this()); outputLocks.unlock(); - co_await Suspend{}; + co_await waitForBuildSlot(); co_return tryToBuild(); } @@ -535,8 +534,7 @@ Goal::Co LocalDerivationGoal::tryLocalBuild() if (!actLock) actLock = std::make_unique(*logger, lvlWarn, actBuildWaiting, fmt("waiting for a free build user ID for '%s'", Magenta(worker.store.printStorePath(drvPath)))); - worker.waitForAWhile(shared_from_this()); - co_await Suspend{}; + co_await waitForAWhile(); co_return tryLocalBuild(); } }