Fix hang in build-remote

This commit is contained in:
Eelco Dolstra 2018-02-12 22:48:55 +01:00
parent 4f09ce7940
commit 9bcb4d2dd9
3 changed files with 4 additions and 2 deletions

View file

@ -241,7 +241,7 @@ connected:
if (!missing.empty()) { if (!missing.empty()) {
Activity act(*logger, lvlTalkative, actUnknown, fmt("copying outputs from '%s'", storeUri)); Activity act(*logger, lvlTalkative, actUnknown, fmt("copying outputs from '%s'", storeUri));
setenv("NIX_HELD_LOCKS", concatStringsSep(" ", missing).c_str(), 1); /* FIXME: ugly */ store->locksHeld.insert(missing.begin(), missing.end()); /* FIXME: ugly */
copyPaths(ref<Store>(sshStore), store, missing, NoRepair, NoCheckSigs, substitute); copyPaths(ref<Store>(sshStore), store, missing, NoRepair, NoCheckSigs, substitute);
} }

View file

@ -992,7 +992,6 @@ void LocalStore::addToStore(const ValidPathInfo & info, const ref<std::string> &
/* Lock the output path. But don't lock if we're being called /* Lock the output path. But don't lock if we're being called
from a build hook (whose parent process already acquired a from a build hook (whose parent process already acquired a
lock on this path). */ lock on this path). */
static auto locksHeld = tokenizeString<PathSet>(getEnv("NIX_HELD_LOCKS"));
if (!locksHeld.count(info.path)) if (!locksHeld.count(info.path))
outputLock.lockPaths({realPath}); outputLock.lockPaths({realPath});

View file

@ -104,6 +104,9 @@ private:
public: public:
// Hack for build-remote.cc.
PathSet locksHeld = tokenizeString<PathSet>(getEnv("NIX_HELD_LOCKS"));
/* Initialise the local store, upgrading the schema if /* Initialise the local store, upgrading the schema if
necessary. */ necessary. */
LocalStore(const Params & params); LocalStore(const Params & params);