From 12f50b6510effe33b6d6322b4322ac0c9588d2e3 Mon Sep 17 00:00:00 2001 From: Sebastian Ullrich Date: Sun, 8 Aug 2021 13:24:13 +0200 Subject: [PATCH 1/2] Short-circuit querying substituters on success --- src/libstore/local-store.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index 747eb205e..faabe4170 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -1076,6 +1076,10 @@ void LocalStore::querySubstitutablePathInfos(const StorePathCAMap & paths, Subst if (!settings.useSubstitutes) return; for (auto & sub : getDefaultSubstituters()) { for (auto & path : paths) { + if (infos.find(path.first) != infos.end()) + // choose first succeeding substituter + continue; + auto subPath(path.first); // recompute store path so that we can use a different store root From a0f97b1f5433e538f5c6e4b1a5533486f1595160 Mon Sep 17 00:00:00 2001 From: Sebastian Ullrich Date: Mon, 9 Aug 2021 15:58:50 +0200 Subject: [PATCH 2/2] Expand docstring of `Store::querySubstitutablePathInfos` --- src/libstore/store-api.hh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh index 4fb6c40c7..54471bdf2 100644 --- a/src/libstore/store-api.hh +++ b/src/libstore/store-api.hh @@ -430,9 +430,10 @@ public: virtual StorePathSet querySubstitutablePaths(const StorePathSet & paths) { return {}; }; /* Query substitute info (i.e. references, derivers and download - sizes) of a map of paths to their optional ca values. If a path - does not have substitute info, it's omitted from the resulting - ‘infos’ map. */ + sizes) of a map of paths to their optional ca values. The info + of the first succeeding substituter for each path will be + returned. If a path does not have substitute info, it's omitted + from the resulting ‘infos’ map. */ virtual void querySubstitutablePathInfos(const StorePathCAMap & paths, SubstitutablePathInfos & infos) { return; };