fix a place where the inode cache could potentially have gotten stale

When git-annex lock repopulates the object file by copying an associated
file that still has its content, it negected to update the inode cache.

I was not able to actually get this code to successfully repopulate the
object file; the associated file gets replaced with a dangling pointer
before unlock is able to do that. (By what I'm not sure..
reconcileStaged?) Which might be itself a bug, but
anyway this makes me doubtful that this was really leading to a stale
inode cache. Still, in case there is some situation in which it does
work, fixed it to update the inode cache.
This commit is contained in:
Joey Hess 2021-07-26 14:12:58 -04:00
parent 6bbd606390
commit 4637592325
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -91,8 +91,10 @@ perform file key = do
liftIO $ removeWhenExistsWith R.removeLink obj
case mfile of
Just unmodified ->
unlessM (checkedCopyFile key unmodified obj Nothing)
lostcontent
ifM (checkedCopyFile key unmodified obj Nothing)
( Database.Keys.storeInodeCaches key [obj]
, lostcontent
)
Nothing -> lostcontent
lostcontent = logStatus key InfoMissing