aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/remote-store.hh
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-07-26 13:31:09 +0200
committerEelco Dolstra <edolstra@gmail.com>2021-07-26 13:31:09 +0200
commitfe1f34fa60ad79e339c38e58af071a44774663f7 (patch)
treebeeb6af1c8220109aa7a55dc292675ccb39359f6 /src/libstore/remote-store.hh
parent9957315ce0ec43e122829619174592fd1755177a (diff)
Low-latency closure copy
This adds a new store operation 'addMultipleToStore' that reads a number of NARs and ValidPathInfos from a Source, allowing any number of store paths to be copied in a single call. This is much faster on high-latency links when copying a lot of small files, like .drv closures. For example, on a connection with an 50 ms delay: Before: $ nix copy --to 'unix:///tmp/proxy-socket?root=/tmp/dest-chroot' \ /nix/store/90jjw94xiyg5drj70whm9yll6xjj0ca9-hello-2.10.drv \ --derivation --no-check-sigs real 0m57.868s user 0m0.103s sys 0m0.056s After: real 0m0.690s user 0m0.017s sys 0m0.011s
Diffstat (limited to 'src/libstore/remote-store.hh')
-rw-r--r--src/libstore/remote-store.hh9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh
index fbec40b4b..8901c79fc 100644
--- a/src/libstore/remote-store.hh
+++ b/src/libstore/remote-store.hh
@@ -78,6 +78,11 @@ public:
void addToStore(const ValidPathInfo & info, Source & nar,
RepairFlag repair, CheckSigsFlag checkSigs) override;
+ void addMultipleToStore(
+ Source & source,
+ RepairFlag repair,
+ CheckSigsFlag checkSigs) override;
+
StorePath addTextToStore(const string & name, const string & s,
const StorePathSet & references, RepairFlag repair) override;
@@ -112,8 +117,6 @@ public:
StorePathSet & willBuild, StorePathSet & willSubstitute, StorePathSet & unknown,
uint64_t & downloadSize, uint64_t & narSize) override;
- StorePaths importPaths(Source & source, CheckSigsFlag checkSigs) override;
-
void connect() override;
unsigned int getProtocol() override;
@@ -153,8 +156,6 @@ protected:
virtual void narFromPath(const StorePath & path, Sink & sink) override;
- ref<const ValidPathInfo> readValidPathInfo(ConnectionHandle & conn, const StorePath & path);
-
private:
std::atomic_bool failed{false};