From a194e88a6265389882e977d3112b2fe593e7d4ff Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 20 Sep 2024 16:52:17 -0400 Subject: [PATCH] invalidate caches after log changes This seems like something Annex.Sim would need to happen. And generally a really good idea. --- Logs/MaxSize.hs | 1 + Logs/NumCopies.hs | 2 ++ Logs/PreferredContent/Raw.hs | 8 ++++++-- Logs/UUID.hs | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) 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 -- 2.30.2