invalidate caches after log changes

This seems like something Annex.Sim would need to happen. And generally
a really good idea.
This commit is contained in:
Joey Hess 2024-09-20 16:52:17 -04:00
parent f5f7b4a936
commit a194e88a62
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 10 additions and 2 deletions

View file

@ -39,6 +39,7 @@ recordMaxSize uuid maxsize = do
(buildLogNew buildMaxSize)
. changeLog c uuid maxsize
. parseLogNew parseMaxSize
Annex.changeState $ \s -> s { Annex.maxsizes = Nothing }
buildMaxSize :: MaxSize -> Builder
buildMaxSize (MaxSize n) = byteString (encodeBS (show n))

View file

@ -36,12 +36,14 @@ setGlobalNumCopies new = do
curr <- getGlobalNumCopies
when (curr /= Just new) $
setLog (Annex.Branch.RegardingUUID []) numcopiesLog new
Annex.changeState $ \s -> s { Annex.globalnumcopies = Nothing }
setGlobalMinCopies :: MinCopies -> Annex ()
setGlobalMinCopies new = do
curr <- getGlobalMinCopies
when (curr /= Just new) $
setLog (Annex.Branch.RegardingUUID []) mincopiesLog new
Annex.changeState $ \s -> s { Annex.globalmincopies = Nothing }
{- Value configured in the numcopies log. Cached for speed. -}
getGlobalNumCopies :: Annex (Maybe NumCopies)

View file

@ -23,10 +23,14 @@ import Data.ByteString.Builder
{- Changes the preferred content configuration of a remote. -}
preferredContentSet :: UUID -> PreferredContentExpression -> Annex ()
preferredContentSet = setLog preferredContentLog
preferredContentSet u expr = do
setLog preferredContentLog u expr
Annex.changeState $ \st -> st { Annex.preferredcontentmap = Nothing }
requiredContentSet :: UUID -> PreferredContentExpression -> Annex ()
requiredContentSet = setLog requiredContentLog
requiredContentSet u expr = do
setLog requiredContentLog u expr
Annex.changeState $ \st -> st { Annex.requiredcontentmap = Nothing }
setLog :: RawFilePath -> UUID -> PreferredContentExpression -> Annex ()
setLog logfile uuid@(UUID _) val = do

View file

@ -39,6 +39,7 @@ describeUUID uuid desc = do
c <- currentVectorClock
Annex.Branch.change (Annex.Branch.RegardingUUID [uuid]) uuidLog $
buildLogOld builder . changeLog c uuid desc . parseUUIDLog
Annex.changeState $ \s -> s { Annex.uuiddescmap = Nothing }
where
builder (UUIDDesc b) = byteString (escnewline b)
-- Escape any newline in the description, since newlines cannot