diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2018-08-03 21:10:03 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2018-08-03 21:21:16 +0200 |
commit | 2825e05d21ecabc8b8524836baf0b9b05da993c6 (patch) | |
tree | dbdfb391c835dc4baebee804653bbf7e399b6b27 /src/libstore/serve-protocol.hh | |
parent | 34c17fdae535d0128d178dde676f56f1bc8439e3 (diff) |
Make adding paths via nix-store --serve run in constant memory
It adds a new operation, cmdAddToStoreNar, that does the same thing as
the corresponding nix-daemon operation, i.e. call addToStore(). This
replaces cmdImportPaths, which has the major issue that it sends the
NAR first and the store path second, thus requiring us to store the
incoming NAR either in memory or on disk until we decide what to do
with it.
For example, this reduces the memory usage of
$ nix copy --to 'ssh://localhost?remote-store=/tmp/nix' /nix/store/95cwv4q54dc6giaqv6q6p4r02ia2km35-blender-2.79
from 267 MiB to 12 MiB.
Probably fixes #1988.
Diffstat (limited to 'src/libstore/serve-protocol.hh')
-rw-r--r-- | src/libstore/serve-protocol.hh | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstore/serve-protocol.hh b/src/libstore/serve-protocol.hh index f67d1e258..9fae6d534 100644 --- a/src/libstore/serve-protocol.hh +++ b/src/libstore/serve-protocol.hh @@ -5,7 +5,7 @@ namespace nix { #define SERVE_MAGIC_1 0x390c9deb #define SERVE_MAGIC_2 0x5452eecb -#define SERVE_PROTOCOL_VERSION 0x204 +#define SERVE_PROTOCOL_VERSION 0x205 #define GET_PROTOCOL_MAJOR(x) ((x) & 0xff00) #define GET_PROTOCOL_MINOR(x) ((x) & 0x00ff) @@ -18,6 +18,7 @@ typedef enum { cmdBuildPaths = 6, cmdQueryClosure = 7, cmdBuildDerivation = 8, + cmdAddToStoreNar = 9, } ServeCommand; } |