Fix race in cleanup of othertmp directory that could result in a failure attempting to access it.

Need to create the directory after the lock is held, not before.

The other racing process would need to shut down at just the wrong time,
running cleanupOtherTmp.

This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
This commit is contained in:
Joey Hess 2019-02-02 13:56:31 -04:00
parent aff2fd33b3
commit a64fca92f6
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 5 additions and 2 deletions

View file

@ -27,8 +27,9 @@ withOtherTmp a = do
addCleanup OtherTmpCleanup cleanupOtherTmp addCleanup OtherTmpCleanup cleanupOtherTmp
tmpdir <- fromRepo gitAnnexTmpOtherDir tmpdir <- fromRepo gitAnnexTmpOtherDir
tmplck <- fromRepo gitAnnexTmpOtherLock tmplck <- fromRepo gitAnnexTmpOtherLock
withSharedLock (const tmplck) $ do
void $ createAnnexDirectory tmpdir void $ createAnnexDirectory tmpdir
withSharedLock (const tmplck) (a tmpdir) a tmpdir
-- | Cleans up any tmp files that were left by a previous -- | Cleans up any tmp files that were left by a previous
-- git-annex process that got interrupted or failed to clean up after -- git-annex process that got interrupted or failed to clean up after

View file

@ -9,6 +9,8 @@ git-annex (7.20190130) UNRELEASED; urgency=medium
before versioning was enabled on it. before versioning was enabled on it.
* Improved speed of S3 remote by only loading S3 creds once. * Improved speed of S3 remote by only loading S3 creds once.
* Display progress bar when getting files from export remotes. * Display progress bar when getting files from export remotes.
* Fix race in cleanup of othertmp directory that could result in a failure
attempting to access it.
-- Joey Hess <id@joeyh.name> Wed, 30 Jan 2019 12:30:22 -0400 -- Joey Hess <id@joeyh.name> Wed, 30 Jan 2019 12:30:22 -0400