diff --git a/lix/libstore/build/derivation-goal.cc b/lix/libstore/build/derivation-goal.cc index 9ac233010..12eac38cf 100644 --- a/lix/libstore/build/derivation-goal.cc +++ b/lix/libstore/build/derivation-goal.cc @@ -734,7 +734,7 @@ retry: } } - if (!outputLocks.lockPaths(lockFiles, "", false)) { + if (!outputLocks.tryLockPaths(lockFiles)) { if (!actLock) actLock = std::make_unique(*logger, lvlWarn, actBuildWaiting, fmt("waiting for lock on %s", Magenta(showPaths(lockFiles)))); diff --git a/lix/libstore/pathlocks.cc b/lix/libstore/pathlocks.cc index c5757cd8e..ba80ed51c 100644 --- a/lix/libstore/pathlocks.cc +++ b/lix/libstore/pathlocks.cc @@ -113,7 +113,7 @@ PathLocks::PathLocks(const PathSet & paths, const std::string & waitMsg) } -bool PathLocks::lockPaths(const PathSet & paths, +bool PathLocks::lockPathsImpl(const PathSet & paths, const std::string & waitMsg, bool wait) { assert(fds.empty()); diff --git a/lix/libstore/pathlocks.hh b/lix/libstore/pathlocks.hh index e8bff3401..2bfb5b5aa 100644 --- a/lix/libstore/pathlocks.hh +++ b/lix/libstore/pathlocks.hh @@ -39,13 +39,19 @@ private: std::list fds; bool deletePaths; + bool lockPathsImpl(const PathSet & _paths, const std::string & waitMsg, bool wait); + public: PathLocks(); - PathLocks(const PathSet & paths, - const std::string & waitMsg = ""); - bool lockPaths(const PathSet & _paths, - const std::string & waitMsg = "", - bool wait = true); + PathLocks(const PathSet & paths, const std::string & waitMsg = ""); + void lockPaths(const PathSet & _paths, const std::string & waitMsg = "") + { + lockPathsImpl(_paths, waitMsg, true); + } + bool tryLockPaths(const PathSet & _paths) + { + return lockPathsImpl(_paths, "", false); + } ~PathLocks(); void unlock(); void setDeletion(bool deletePaths);