about summary refs log tree commit diff
path: root/src/libstore/local-store.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-09-12T09·07+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-09-12T09·07+0000
commit13114daa3e38abc5c84987830d9276b93251592f (patch)
tree9e26ad9846c4ea827fdc80cbdf9dc4848e39c455 /src/libstore/local-store.cc
parent281e3ed0590f253ef717a1f82123dfc569a110a1 (diff)
* Ouch. A store upgrade could cause a substituter to be triggered,
  causing a deadlock.

Diffstat (limited to 'src/libstore/local-store.cc')
-rw-r--r--src/libstore/local-store.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 6ad4c84c69ff..702ff67e793e 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -510,7 +510,7 @@ void LocalStore::checkDerivationOutputs(const Path & drvPath, const Derivation &
 }
 
 
-unsigned long long LocalStore::addValidPath(const ValidPathInfo & info)
+unsigned long long LocalStore::addValidPath(const ValidPathInfo & info, bool checkOutputs)
 {
     SQLiteStmtUse use(stmtRegisterValidPath);
     stmtRegisterValidPath.bind(info.path);
@@ -540,7 +540,7 @@ unsigned long long LocalStore::addValidPath(const ValidPathInfo & info)
            derivations).  Note that if this throws an error, then the
            DB transaction is rolled back, so the path validity
            registration above is undone. */
-        checkDerivationOutputs(info.path, drv);
+        if (checkOutputs) checkDerivationOutputs(info.path, drv);
         
         foreach (DerivationOutputs::iterator, i, drv.outputs) {
             SQLiteStmtUse use(stmtAddDerivationOutput);
@@ -1521,7 +1521,7 @@ void LocalStore::upgradeStore6()
     SQLiteTxn txn(db);
     
     foreach (PathSet::iterator, i, validPaths) {
-        addValidPath(queryPathInfoOld(*i));
+        addValidPath(queryPathInfoOld(*i), false);
         std::cerr << ".";
     }