disable journalIgnorable in enableInteractiveBranchAccess

Fix a reversion that prevented --batch commands (and the assistant)
from noticing data written to the journal by other commands.

I have not identified which commit broke this for sure,
but probably it was aeca7c2207

--batch commands that wrote to the journal avoided the problem since
journalIgnorable sets unset on write. It's a little bit surprising that
nobody noticed that query --batch commands did not see data written by
other commands.

Sponsored-by: Dartmouth College's DANDI project
This commit is contained in:
Joey Hess 2022-07-15 13:43:46 -04:00
parent 91abd872d3
commit a2b1f369d1
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 21 additions and 5 deletions

View file

@ -2,7 +2,7 @@
- -
- Runtime state about the git-annex branch, and a small cache. - Runtime state about the git-annex branch, and a small cache.
- -
- Copyright 2011-2021 Joey Hess <id@joeyh.name> - Copyright 2011-2022 Joey Hess <id@joeyh.name>
- -
- Licensed under the GNU AGPL version 3 or higher. - Licensed under the GNU AGPL version 3 or higher.
-} -}
@ -92,9 +92,9 @@ journalChanged = do
-- so avoid an unnecessary write to the MVar that changeState -- so avoid an unnecessary write to the MVar that changeState
-- would do. -- would do.
-- --
-- This assumes that another thread is not changing journalIgnorable -- This assumes that another thread is not setting journalIgnorable
-- at the same time, but since runUpdateOnce is the only -- at the same time, but since runUpdateOnce is the only
-- thing that changes it, and it only runs once, that -- thing that sets it, and it only runs once, that
-- should not happen. -- should not happen.
st <- getState st <- getState
when (journalIgnorable st) $ when (journalIgnorable st) $
@ -109,8 +109,10 @@ journalChanged = do
- will be seen. - will be seen.
-} -}
enableInteractiveBranchAccess :: Annex () enableInteractiveBranchAccess :: Annex ()
enableInteractiveBranchAccess = changeState $ enableInteractiveBranchAccess = changeState $ \s -> s
\s -> s { needInteractiveAccess = True } { needInteractiveAccess = True
, journalIgnorable = False
}
setCache :: RawFilePath -> L.ByteString -> Annex () setCache :: RawFilePath -> L.ByteString -> Annex ()
setCache file content = changeState $ \s -> s setCache file content = changeState $ \s -> s

View file

@ -17,6 +17,8 @@ git-annex (10.20220625) UNRELEASED; urgency=medium
find -printf. find -printf.
* S3: Avoid writing or checking the uuid file in the S3 bucket when * S3: Avoid writing or checking the uuid file in the S3 bucket when
importtree=yes or exporttree=yes. importtree=yes or exporttree=yes.
* Fix a reversion that prevented --batch commands (and the assistant)
from noticing data written to the journal by other commands.
-- Joey Hess <id@joeyh.name> Tue, 28 Jun 2022 14:49:17 -0400 -- Joey Hess <id@joeyh.name> Tue, 28 Jun 2022 14:49:17 -0400

View file

@ -0,0 +1,12 @@
--batch commands are supposed to notice changes that get made to the
journal while they are running. This way, if two batch commands are run,
one making changes and the other reading the values, the reader notices the
changes.
That does not currently happen. Looks like runUpdateOnce runs before
enableInteractiveBranchAccess, and so sets journalIgnorable. Only if the
batch command writes to the journal does journalIgnorable get unset, and
then the command will notice journalled changes by itself or others.
But query commands
> [[fixed|done]] --[[Joey]]