aboutsummaryrefslogtreecommitdiff
path: root/src/nix-daemon
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-19 18:50:15 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-19 18:52:53 +0200
commite0204f8d462041387651af388074491fd0bf36d6 (patch)
treeecd20759ce49499722d140d653c5678051bcdfc2 /src/nix-daemon
parent608b0265e104b4a97f51e5745b1a32078770f3cf (diff)
Move path info caching from BinaryCacheStore to Store
Caching path info is generally useful. For instance, it speeds up "nix path-info -rS /run/current-system" (i.e. showing the closure sizes of all paths in the closure of the current system) from 5.6s to 0.15s. This also eliminates some APIs like Store::queryDeriver() and Store::queryReferences().
Diffstat (limited to 'src/nix-daemon')
-rw-r--r--src/nix-daemon/nix-daemon.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/nix-daemon/nix-daemon.cc b/src/nix-daemon/nix-daemon.cc
index c3cdb8395..dfb5da4ad 100644
--- a/src/nix-daemon/nix-daemon.cc
+++ b/src/nix-daemon/nix-daemon.cc
@@ -199,7 +199,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
case wopQueryPathHash: {
Path path = readStorePath(from);
startWork();
- Hash hash = store->queryPathHash(path);
+ auto hash = store->queryPathInfo(path)->narHash;
stopWork();
to << printHash(hash);
break;
@@ -213,7 +213,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
startWork();
PathSet paths;
if (op == wopQueryReferences)
- store->queryReferences(path, paths);
+ paths = store->queryPathInfo(path)->references;
else if (op == wopQueryReferrers)
store->queryReferrers(path, paths);
else if (op == wopQueryValidDerivers)
@@ -237,7 +237,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
case wopQueryDeriver: {
Path path = readStorePath(from);
startWork();
- Path deriver = store->queryDeriver(path);
+ auto deriver = store->queryPathInfo(path)->deriver;
stopWork();
to << deriver;
break;
@@ -496,13 +496,13 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
case wopQueryPathInfo: {
Path path = readStorePath(from);
startWork();
- ValidPathInfo info = store->queryPathInfo(path);
+ auto info = store->queryPathInfo(path);
stopWork();
- to << info.deriver << printHash(info.narHash) << info.references
- << info.registrationTime << info.narSize;
+ to << info->deriver << printHash(info->narHash) << info->references
+ << info->registrationTime << info->narSize;
if (GET_PROTOCOL_MINOR(clientVersion) >= 16) {
- to << info.ultimate
- << info.sigs;
+ to << info->ultimate
+ << info->sigs;
}
break;
}