avoid updating transfer info file until another 1% of the total has been transferred
This commit is contained in:
parent
ff32ee5152
commit
34ca1d698c
1 changed files with 18 additions and 3 deletions
|
@ -100,9 +100,8 @@ runTransfer t file a = do
|
||||||
<*> pure Nothing
|
<*> pure Nothing
|
||||||
<*> pure file
|
<*> pure file
|
||||||
<*> pure False
|
<*> pure False
|
||||||
ok <- bracketIO (prep tfile mode info) (cleanup tfile) $ a $ \bytes ->
|
meter <- liftIO $ progressupdater tfile info
|
||||||
writeTransferInfoFile (info { bytesComplete = Just bytes }) tfile
|
ok <- bracketIO (prep tfile mode info) (cleanup tfile) (a meter)
|
||||||
|
|
||||||
unless ok $ failed info
|
unless ok $ failed info
|
||||||
return ok
|
return ok
|
||||||
where
|
where
|
||||||
|
@ -123,6 +122,22 @@ runTransfer t file a = do
|
||||||
failedtfile <- fromRepo $ failedTransferFile t
|
failedtfile <- fromRepo $ failedTransferFile t
|
||||||
createAnnexDirectory $ takeDirectory failedtfile
|
createAnnexDirectory $ takeDirectory failedtfile
|
||||||
liftIO $ writeTransferInfoFile info failedtfile
|
liftIO $ writeTransferInfoFile info failedtfile
|
||||||
|
{- Updates transfer info file as transfer progresses. -}
|
||||||
|
progressupdater tfile info = do
|
||||||
|
mvar <- newMVar 0
|
||||||
|
return $ \bytes -> modifyMVar_ mvar $ \oldbytes -> do
|
||||||
|
if (bytes - oldbytes >= mindelta)
|
||||||
|
then do
|
||||||
|
let info' = info { bytesComplete = Just bytes }
|
||||||
|
writeTransferInfoFile info' tfile
|
||||||
|
return bytes
|
||||||
|
else return oldbytes
|
||||||
|
{- The minimum change in bytesComplete that is worth
|
||||||
|
- updating a transfer info file for is 1% of the total
|
||||||
|
- keySize, rounded down. -}
|
||||||
|
mindelta = case keySize (transferKey t) of
|
||||||
|
Just sz -> sz `div` 100
|
||||||
|
Nothing -> 100 * 1024 -- arbitrarily, 100 kb
|
||||||
|
|
||||||
{- If a transfer is still running, returns its TransferInfo. -}
|
{- If a transfer is still running, returns its TransferInfo. -}
|
||||||
checkTransfer :: Transfer -> Annex (Maybe TransferInfo)
|
checkTransfer :: Transfer -> Annex (Maybe TransferInfo)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue