remove empty tmp workdir on failure
No point in keeping an empty tmp workdir around. The associated tmp object file is retained even if empty, didn't want to deal with any possible races with something else downloading to that file at the same time this would check if it's empty. Anyhow, temp object files are normally retained, and this will get cleaned out the same way those do, by dropunused.
This commit is contained in:
parent
79ac177ea5
commit
2c62f8e63d
1 changed files with 6 additions and 2 deletions
|
@ -1060,8 +1060,12 @@ pruneTmpWorkDirBefore f action = do
|
|||
{- Runs an action, passing it a temporary work directory where
|
||||
- it can write files while receiving the content of a key.
|
||||
-
|
||||
- Preserves the invariant that the workdir never exists without the
|
||||
- content file, by creating an empty content file first.
|
||||
-
|
||||
- On exception, or when the action returns Nothing,
|
||||
- the temporary work directory is left, so resumes can use it.
|
||||
- the temporary work directory is retained (unless
|
||||
- empty), so anything in it can be used on resume.
|
||||
-}
|
||||
withTmpWorkDir :: Key -> (FilePath -> Annex (Maybe a)) -> Annex (Maybe a)
|
||||
withTmpWorkDir key action = do
|
||||
|
@ -1078,7 +1082,7 @@ withTmpWorkDir key action = do
|
|||
res <- action tmpdir
|
||||
case res of
|
||||
Just _ -> liftIO $ removeDirectoryRecursive tmpdir
|
||||
Nothing -> noop
|
||||
Nothing -> liftIO $ void $ tryIO $ removeDirectory tmpdir
|
||||
return res
|
||||
|
||||
{- Finds items in the first, smaller list, that are not
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue