From: Joey Hess Date: Fri, 20 Sep 2024 20:52:17 +0000 (-0400) Subject: invalidate caches after log changes X-Git-Tag: archive/raspbian/10.20250416-2+rpi1~1^2~21^2~25^2~27 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a194e88a6265389882e977d3112b2fe593e7d4ff;p=git-annex.git invalidate caches after log changes This seems like something Annex.Sim would need to happen. And generally a really good idea. --- diff --git a/Logs/MaxSize.hs b/Logs/MaxSize.hs index 0f69e202e7..dbd69928ea 100644 --- a/Logs/MaxSize.hs +++ b/Logs/MaxSize.hs @@ -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)) diff --git a/Logs/NumCopies.hs b/Logs/NumCopies.hs index 7579baf3f3..263aed5f5f 100644 --- a/Logs/NumCopies.hs +++ b/Logs/NumCopies.hs @@ -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) diff --git a/Logs/PreferredContent/Raw.hs b/Logs/PreferredContent/Raw.hs index b5a1b3932c..e86347d375 100644 --- a/Logs/PreferredContent/Raw.hs +++ b/Logs/PreferredContent/Raw.hs @@ -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 diff --git a/Logs/UUID.hs b/Logs/UUID.hs index 1a3142e198..17df43bdf4 100644 --- a/Logs/UUID.hs +++ b/Logs/UUID.hs @@ -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