readFileStrict to avoid laziness bug

Fix laziness bug introduced in last release that breaks use of
--unlock-present and --hide-missing adjusted branches.

Since there is a writeFile of the same file immediately after readFile, it
may still have the file open for read (or may have happened to read it
already and closed it).

I was not able to reproduce the problem in brief testing, but this seems
obvious.

Sponsored-by: Luke Shumaker on Patreona
This commit is contained in:
Joey Hess 2023-04-04 14:25:01 -04:00
parent e37b968383
commit 3eb51ee929
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 5 additions and 3 deletions

View file

@ -253,8 +253,8 @@ updateAdjustedBranch adj (AdjBranch currbranch) origbranch
-- has that have not yet been propigated back to the -- has that have not yet been propigated back to the
-- origbranch. -- origbranch.
_ <- propigateAdjustedCommits' origbranch adj commitlck _ <- propigateAdjustedCommits' origbranch adj commitlck
origheadfile <- inRepo $ readFile . Git.Ref.headFile origheadfile <- inRepo $ readFileStrict . Git.Ref.headFile
-- Git normally won't do anything when asked to check -- Git normally won't do anything when asked to check
-- out the currently checked out branch, even when its -- out the currently checked out branch, even when its
@ -279,7 +279,7 @@ updateAdjustedBranch adj (AdjBranch currbranch) origbranch
unless ok $ case newheadfile of unless ok $ case newheadfile of
Nothing -> noop Nothing -> noop
Just v -> preventCommits $ \_commitlck -> inRepo $ \r -> do Just v -> preventCommits $ \_commitlck -> inRepo $ \r -> do
v' <- readFile (Git.Ref.headFile r) v' <- readFileStrict (Git.Ref.headFile r)
when (v == v') $ when (v == v') $
writeFile (Git.Ref.headFile r) origheadfile writeFile (Git.Ref.headFile r) origheadfile

View file

@ -3,6 +3,8 @@ git-annex (10.20230330) UNRELEASED; urgency=medium
* git-annex.cabal: Prevent building with unix-compat 0.7 which * git-annex.cabal: Prevent building with unix-compat 0.7 which
removed System.PosixCompat.User. removed System.PosixCompat.User.
* Sped up sqlite inserts 2x when built with persistent 2.14.5.0 * Sped up sqlite inserts 2x when built with persistent 2.14.5.0
* Fix laziness bug introduced in last release that breaks use
of --unlock-present and --hide-missing adjusted branches.
-- Joey Hess <id@joeyh.name> Fri, 31 Mar 2023 12:48:54 -0400 -- Joey Hess <id@joeyh.name> Fri, 31 Mar 2023 12:48:54 -0400