aboutsummaryrefslogtreecommitdiff
path: root/Annex
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-10-19 14:25:15 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-10-19 14:25:15 -0400
commit5f835c769eb673b28d2d0211adfd6cbdf420b4bc (patch)
tree96641ced75582a8b3ccde4a3d8af03eee725df15 /Annex
parent7723c5ea6a09233057813e7f7f582d4764e2b7ae (diff)
remove git-annex branch read cache
This cache prevented noticing changes made by another process. The case I just ran into involved the assistant dropping a file, which cached its presence info. Then the same file was downloaded again, but the assistant didn't know its presence info had changed. I don't see a way to keep this cache. Will instead rely on the OS level file cache, for files in the journal. May need to add more higher-level caching of info that it's ok to have a potentially stale copy of, although much of git-annex already does so.
Diffstat (limited to 'Annex')
-rw-r--r--Annex/Branch.hs21
-rw-r--r--Annex/BranchState.hs18
-rw-r--r--Annex/Journal.hs2
3 files changed, 9 insertions, 32 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs
index 3b056eed5..243514fc9 100644
--- a/Annex/Branch.hs
+++ b/Annex/Branch.hs
@@ -147,7 +147,6 @@ updateTo pairs = do
then updateIndex branchref
else commitBranch branchref merge_desc
(nub $ fullname:refs)
- invalidateCache
liftIO cleanjournal
{- Gets the content of a file, which may be in the journal, or committed
@@ -168,20 +167,16 @@ getStale :: FilePath -> Annex String
getStale = get' True
get' :: Bool -> FilePath -> Annex String
-get' staleok file = fromcache =<< getCache file
+get' staleok file = fromjournal =<< getJournalFile file
where
- fromcache (Just content) = return content
- fromcache Nothing = fromjournal =<< getJournalFile file
- fromjournal (Just content) = cache content
+ fromjournal (Just content) = return content
fromjournal Nothing
| staleok = withIndex frombranch
| otherwise = do
update
- withIndex $ frombranch >>= cache
- frombranch = L.unpack <$> catFile fullname file
- cache content = do
- setCache file content
- return content
+ frombranch
+ frombranch = withIndex $
+ L.unpack <$> catFile fullname file
{- Applies a function to modifiy the content of a file.
-
@@ -191,11 +186,9 @@ get' staleok file = fromcache =<< getCache file
change :: FilePath -> (String -> String) -> Annex ()
change file a = lockJournal $ a <$> getStale file >>= set file
-{- Records new content of a file into the journal and cache. -}
+{- Records new content of a file into the journal -}
set :: FilePath -> String -> Annex ()
-set file content = do
- setJournalFile file content
- setCache file content
+set file content = setJournalFile file content
{- Stages the journal, and commits staged changes to the branch. -}
commit :: String -> Annex ()
diff --git a/Annex/BranchState.hs b/Annex/BranchState.hs
index 2e60d1229..9b2f9a04c 100644
--- a/Annex/BranchState.hs
+++ b/Annex/BranchState.hs
@@ -1,6 +1,6 @@
{- git-annex branch state management
-
- - Runtime state about the git-annex branch, including a small read cache.
+ - Runtime state about the git-annex branch.
-
- Copyright 2011-2012 Joey Hess <joey@kitenet.net>
-
@@ -22,22 +22,6 @@ setState state = Annex.changeState $ \s -> s { Annex.branchstate = state }
changeState :: (BranchState -> BranchState) -> Annex ()
changeState changer = setState =<< changer <$> getState
-setCache :: FilePath -> String -> Annex ()
-setCache file content = changeState $ \s -> s
- { cachedFile = Just file, cachedContent = content}
-
-getCache :: FilePath -> Annex (Maybe String)
-getCache file = from <$> getState
- where
- from state
- | cachedFile state == Just file =
- Just $ cachedContent state
- | otherwise = Nothing
-
-invalidateCache :: Annex ()
-invalidateCache = changeState $ \s -> s
- { cachedFile = Nothing, cachedContent = "" }
-
{- Runs an action to check that the index file exists, if it's not been
- checked before in this run of git-annex. -}
checkIndexOnce :: Annex () -> Annex ()
diff --git a/Annex/Journal.hs b/Annex/Journal.hs
index 4a56ce3e3..b6ed79272 100644
--- a/Annex/Journal.hs
+++ b/Annex/Journal.hs
@@ -1,4 +1,4 @@
-{- management of the git-annex journal and cache
+{- management of the git-annex journal
-
- The journal is used to queue up changes before they are committed to the
- git-annex branch. Amoung other things, it ensures that if git-annex is