diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-05-16 14:49:12 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-05-16 14:49:12 -0400 |
commit | d7820aa98ad0fe973d0a1aae2861abdab60de7a5 (patch) | |
tree | 5699a9b4ea84ff89931247fe527e9c0f44e06215 /Assistant | |
parent | 0346651ab6ef0c53aa7e0daffd821863858081fe (diff) |
assistant: Fix race in v6 mode that caused downloaded file content to sometimes not replace pointer files.
The keys database handle needs to be closed after merging, because the
smudge filter, in another process, updates the database. Old cached info
can be read for a while from the open database handle; closing it ensures
that the info written by the smudge filter is available.
This is pretty horribly ad-hoc, and it's especially nasty that the
transferrer closes the database every time.
Diffstat (limited to 'Assistant')
-rw-r--r-- | Assistant/Threads/Merger.hs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Assistant/Threads/Merger.hs b/Assistant/Threads/Merger.hs index 521e5bda6..0080ef964 100644 --- a/Assistant/Threads/Merger.hs +++ b/Assistant/Threads/Merger.hs @@ -19,6 +19,7 @@ import qualified Annex.Branch import qualified Git import qualified Git.Branch import qualified Command.Sync +import qualified Database.Keys import Annex.TaggedPush import Remote (remoteFromUUID) @@ -89,6 +90,12 @@ onChange file currbranch mergeConfig Git.Branch.AutomaticCommit changedbranch + -- Merging can cause new associated files + -- to appear and the smudge filter will + -- add them to the database. To ensure that + -- this process sees those changes, close + -- the database if it was open. + liftAnnex $ Database.Keys.closeDb mergecurrent _ = noop handleDesynced = case fromTaggedBranch changedbranch of |