about summary refs log tree commit diff
path: root/src/libstore
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2018-09-07T14·35+0200
committerEelco Dolstra <edolstra@gmail.com>2018-09-07T14·35+0200
commit33c3f91885429b60cab551e761f297a640aff7d5 (patch)
tree87d629c7c53c83e4c930633484c4f0b887d382dd /src/libstore
parent91405986f4d076d08051ebe980af6ac6ba124323 (diff)
Handle queryPathInfo() failure from substituters when fallback is enabled
Fixes #1990.
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/build.cc7
-rw-r--r--src/libstore/local-store.cc5
2 files changed, 12 insertions, 0 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index cd37f7a3fc08..96ca2874257c 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -3682,6 +3682,13 @@ void SubstitutionGoal::tryNext()
     } catch (InvalidPath &) {
         tryNext();
         return;
+    } catch (Error & e) {
+        if (settings.tryFallback) {
+            printError(e.what());
+            tryNext();
+            return;
+        }
+        throw;
     }
 
     /* Update the total expected download size. */
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index c91dbf241bcf..5e392c237e88 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -880,6 +880,11 @@ void LocalStore::querySubstitutablePathInfos(const PathSet & paths,
                     narInfo ? narInfo->fileSize : 0,
                     info->narSize};
             } catch (InvalidPath) {
+            } catch (Error & e) {
+                if (settings.tryFallback)
+                    printError(e.what());
+                else
+                    throw;
             }
         }
     }