avoid git annex info remote buffering list of keys
This leaves git annex unused --from remote still using loggedKeysFor and buffering more than ought to be necessary, but I can't see a way to improve that.
This commit is contained in:
parent
bea0ad220a
commit
2fc768ce72
3 changed files with 15 additions and 4 deletions
|
@ -23,7 +23,8 @@ git-annex (6.20180410) UNRELEASED; urgency=medium
|
|||
* Assistant: Fix installation of menus, icons, etc when run
|
||||
from within runshell.
|
||||
* import: Avoid buffering all filenames to be imported in memory.
|
||||
* Improve memory use and speed of --all, by not buffering list of all keys.
|
||||
* Improve memory use and speed of --all and git-annex info remote,
|
||||
by not buffering list of all keys.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Mon, 09 Apr 2018 14:03:28 -0400
|
||||
|
||||
|
|
|
@ -525,7 +525,11 @@ cachedRemoteData u = do
|
|||
case M.lookup u (repoData s) of
|
||||
Just v -> return v
|
||||
Nothing -> do
|
||||
v <- foldKeys <$> lift (loggedKeysFor u)
|
||||
let combinedata d uk = finishCheck uk >>= \case
|
||||
Nothing -> return d
|
||||
Just k -> return $ addKey k d
|
||||
v <- lift $ foldM combinedata emptyKeyData
|
||||
=<< loggedKeysFor' u
|
||||
put s { repoData = M.insert u v (repoData s) }
|
||||
return v
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ module Logs.Location (
|
|||
finishCheck,
|
||||
loggedKeys,
|
||||
loggedKeysFor,
|
||||
loggedKeysFor',
|
||||
) where
|
||||
|
||||
import Annex.Common
|
||||
|
@ -139,10 +140,15 @@ loggedKeys' check = mapMaybe (defercheck <$$> locationLogFileKey)
|
|||
)
|
||||
|
||||
{- Finds all keys that have location log information indicating
|
||||
- they are present for the specified repository.
|
||||
- they are present in the specified repository.
|
||||
-
|
||||
- This does not stream well; use loggedKeysFor' for lazy streaming.
|
||||
-}
|
||||
loggedKeysFor :: UUID -> Annex [Key]
|
||||
loggedKeysFor u = catMaybes <$> (mapM finishCheck =<< loggedKeys' isthere)
|
||||
loggedKeysFor u = catMaybes <$> (mapM finishCheck =<< loggedKeysFor' u)
|
||||
|
||||
loggedKeysFor' :: UUID -> Annex [Unchecked Key]
|
||||
loggedKeysFor' u = loggedKeys' isthere
|
||||
where
|
||||
isthere k = do
|
||||
us <- loggedLocations k
|
||||
|
|
Loading…
Reference in a new issue