Avoid loading cluster log at startup
This fixes a problem with datalad's test suite, where loading the cluster log happened to cause the git-annex branch commits to take a different shape, with an additional commit. It's also faster though, since many commands don't need the cluster log. Just fill Annex.clusters with a thunk. Sponsored-by: the NIH-funded NICEMAN (ReproNim TR&D3) project
This commit is contained in:
parent
7c6c3e703b
commit
3a1f39fbdf
7 changed files with 30 additions and 7 deletions
|
@ -11,6 +11,7 @@ module Logs.Cluster (
|
|||
module Types.Cluster,
|
||||
getClusters,
|
||||
loadClusters,
|
||||
preLoadClusters,
|
||||
recordCluster,
|
||||
) where
|
||||
|
||||
|
@ -24,7 +25,12 @@ import qualified Data.Map as M
|
|||
import qualified Data.Set as S
|
||||
|
||||
getClusters :: Annex Clusters
|
||||
getClusters = maybe loadClusters return =<< Annex.getState Annex.clusters
|
||||
getClusters = maybe loadClusters id =<< Annex.getState Annex.clusters
|
||||
|
||||
{- This works around a module dependency loop. -}
|
||||
preLoadClusters :: Annex ()
|
||||
preLoadClusters = Annex.changeState $ \s ->
|
||||
s { Annex.clusters = Just loadClusters }
|
||||
|
||||
{- Loads the clusters and caches it for later.
|
||||
-
|
||||
|
@ -37,5 +43,5 @@ loadClusters = do
|
|||
dead <- (S.fromList . map ClusterNodeUUID)
|
||||
<$> trustGet DeadTrusted
|
||||
clusters <- getClustersWith (M.map (`S.difference` dead))
|
||||
Annex.changeState $ \s -> s { Annex.clusters = Just clusters }
|
||||
Annex.changeState $ \s -> s { Annex.clusters = Just (pure clusters) }
|
||||
return clusters
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue