69f8e6c7c0
This improves the borg special remote memory usage, by letting it only load one archive's worth of filenames into memory at a time, and building up a larger tree out of the chunks. When a borg repository has many archives, git-annex could easily OOM before. Now, it will use only memory proportional to the number of annexed keys in an archive. Minor implementation wart: Each new chunk re-opens the content identifier database, and also a new vector clock is used for each chunk. This is a minor innefficiency only; the use of continuations makes it hard to avoid, although putting the database handle into a Reader monad would be one way to fix it. It may later be possible to extend the ImportableContentsChunkable interface to remotes that are not third-party populated. However, that would perhaps need an interface that does not use continuations. The ImportableContentsChunkable interface currently does not allow populating the top of the tree with anything other than subtrees. It would be easy to extend it to allow putting files in that tree, but borg doesn't need that so I left it out for now. Sponsored-by: Noam Kremen on Patreon |
||
---|---|---|
.. | ||
Chunked | ||
AWS.hs | ||
Chunked.hs | ||
Encryptable.hs | ||
ExportImport.hs | ||
Git.hs | ||
Hooks.hs | ||
Http.hs | ||
Messages.hs | ||
P2P.hs | ||
ReadOnly.hs | ||
Special.hs | ||
Ssh.hs | ||
ThirdPartyPopulated.hs |