fix restaging of transferred files after stalldetection kicks in
Sponsored-by: Dartmouth College's DANDI project
This commit is contained in:
parent
6a3bd283b8
commit
f7146c153b
2 changed files with 13 additions and 4 deletions
|
@ -217,6 +217,8 @@ restagePointerFiles r = unlessM (Annex.getState Annex.insmudgecleanfilter) $ do
|
||||||
liftIO . Database.Keys.Handle.closeDbHandle
|
liftIO . Database.Keys.Handle.closeDbHandle
|
||||||
=<< Annex.getRead Annex.keysdbhandle
|
=<< Annex.getRead Annex.keysdbhandle
|
||||||
realindex <- liftIO $ Git.Index.currentIndexFile r
|
realindex <- liftIO $ Git.Index.currentIndexFile r
|
||||||
|
numsz@(numfiles, _) <- calcRestageLog (0, 0) $ \(_f, ic) (numfiles, sizefiles) ->
|
||||||
|
(numfiles+1, sizefiles + inodeCacheFileSize ic)
|
||||||
let lock = fromRawFilePath (Git.Index.indexFileLock realindex)
|
let lock = fromRawFilePath (Git.Index.indexFileLock realindex)
|
||||||
lockindex = liftIO $ catchMaybeIO $ Git.LockFile.openLock' lock
|
lockindex = liftIO $ catchMaybeIO $ Git.LockFile.openLock' lock
|
||||||
unlockindex = liftIO . maybe noop Git.LockFile.closeLock
|
unlockindex = liftIO . maybe noop Git.LockFile.closeLock
|
||||||
|
@ -235,8 +237,6 @@ restagePointerFiles r = unlessM (Annex.getState Annex.insmudgecleanfilter) $ do
|
||||||
[ Param "-c"
|
[ Param "-c"
|
||||||
, Param $ "core.safecrlf=" ++ boolConfig False
|
, Param $ "core.safecrlf=" ++ boolConfig False
|
||||||
] }
|
] }
|
||||||
numsz <- calcRestageLog (0, 0) $ \(_f, ic) (numfiles, sizefiles) ->
|
|
||||||
(numfiles+1, sizefiles + inodeCacheFileSize ic)
|
|
||||||
configfilterprocess numsz $ runsGitAnnexChildProcessViaGit' r'' $ \r''' ->
|
configfilterprocess numsz $ runsGitAnnexChildProcessViaGit' r'' $ \r''' ->
|
||||||
Git.UpdateIndex.refreshIndex r''' $ \feeder -> do
|
Git.UpdateIndex.refreshIndex r''' $ \feeder -> do
|
||||||
let atend = do
|
let atend = do
|
||||||
|
@ -251,7 +251,8 @@ restagePointerFiles r = unlessM (Annex.getState Annex.insmudgecleanfilter) $ do
|
||||||
ok <- liftIO (createLinkOrCopy realindex tmpindex)
|
ok <- liftIO (createLinkOrCopy realindex tmpindex)
|
||||||
<&&> catchBoolIO updatetmpindex
|
<&&> catchBoolIO updatetmpindex
|
||||||
unless ok showwarning
|
unless ok showwarning
|
||||||
bracket lockindex unlockindex go
|
when (numfiles > 0) $
|
||||||
|
bracket lockindex unlockindex go
|
||||||
where
|
where
|
||||||
isunmodified tsd f orig =
|
isunmodified tsd f orig =
|
||||||
genInodeCache f tsd >>= return . \case
|
genInodeCache f tsd >>= return . \case
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{- A pool of "git-annex transferrer" processes
|
{- A pool of "git-annex transferrer" processes
|
||||||
-
|
-
|
||||||
- Copyright 2013-2021 Joey Hess <id@joeyh.name>
|
- Copyright 2013-2022 Joey Hess <id@joeyh.name>
|
||||||
-
|
-
|
||||||
- Licensed under the GNU AGPL version 3 or higher.
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
@ -22,6 +22,7 @@ import Types.CleanupActions
|
||||||
import Messages.Serialized
|
import Messages.Serialized
|
||||||
import Annex.Path
|
import Annex.Path
|
||||||
import Annex.StallDetection
|
import Annex.StallDetection
|
||||||
|
import Annex.Link
|
||||||
import Utility.Batch
|
import Utility.Batch
|
||||||
import Utility.Metered
|
import Utility.Metered
|
||||||
import qualified Utility.SimpleProtocol as Proto
|
import qualified Utility.SimpleProtocol as Proto
|
||||||
|
@ -286,3 +287,10 @@ emptyTransferrerPool = do
|
||||||
liftIO $ forM_ pool $ \case
|
liftIO $ forM_ pool $ \case
|
||||||
TransferrerPoolItem (Just t) _ -> transferrerShutdown t
|
TransferrerPoolItem (Just t) _ -> transferrerShutdown t
|
||||||
TransferrerPoolItem Nothing _ -> noop
|
TransferrerPoolItem Nothing _ -> noop
|
||||||
|
-- Transferrers usually restage pointer files themselves,
|
||||||
|
-- but when killTransferrer is used, a transferrer may have
|
||||||
|
-- pointer files it has not gotten around to restaging yet.
|
||||||
|
-- So, restage pointer files here in clean up from such killed
|
||||||
|
-- transferrers.
|
||||||
|
unless (null pool) $
|
||||||
|
restagePointerFiles =<< Annex.gitRepo
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue