assistant: Fix a race condition that could cause a pointer file to get ingested into the annex
This was caused by commit fb8ab2469d
putting
an isPointerFile check in the wrong place. So if the file was not a pointer
file at that point, but got replaced by one before the file got locked
down, the pointer file would be ingested into the annex.
The fix is simply to move the isPointerFile check to after safeToAdd locks
down the file. Now if the file changes to a pointer file after the
isPointerFile check, ingestion will see that it changed after lockdown,
and will refuse to add it to the annex.
Sponsored-by: the NIH-funded NICEMAN (ReproNim TR&D3) project
This commit is contained in:
parent
a65068fb66
commit
12a0ca9656
5 changed files with 45 additions and 8 deletions
|
@ -196,11 +196,8 @@ shouldRestage :: DaemonStatus -> Bool
|
|||
shouldRestage ds = scanComplete ds || forceRestage ds
|
||||
|
||||
onAddFile :: Bool -> Handler
|
||||
onAddFile symlinkssupported f fs = do
|
||||
mk <- liftIO $ isPointerFile $ toRawFilePath f
|
||||
case mk of
|
||||
Nothing -> onAddFile' contentchanged addassociatedfile addlink samefilestatus symlinkssupported f fs
|
||||
Just k -> addlink f k
|
||||
onAddFile symlinkssupported f fs =
|
||||
onAddFile' contentchanged addassociatedfile addlink samefilestatus symlinkssupported f fs
|
||||
where
|
||||
addassociatedfile key file =
|
||||
Database.Keys.addAssociatedFile key
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue