summaryrefslogtreecommitdiff
path: root/Logs/Transfer.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-09-25 11:46:17 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-09-25 11:46:17 -0400
commit2590e1099ff283cc1c388f2dbdcbdd0ac6905a64 (patch)
tree85c5a0222b5d5a51dda5aed1cef2c85dd0b7e05e /Logs/Transfer.hs
parentd9c5d32c34885cac67c44c633c5351461902d166 (diff)
assistant: Clear the list of failed transfers when doing a full transfer scan. This prevents repeated retries to download files that are not available, or are not referenced by the current git tree.
This is motivated by a user report that the assistant was repeatedly retrying transfers of files that had been deleted (in direct mode, so removing the only copy). Note that the glacier code retries failed transfers after a while to retry downloads that have aged long enough to be available. This is ok; if we're doing a full transfer scan we'll retry on every file that is still in the git tree. Also note that this makes the assistant less likely to get every file referenced by old revs of the git tree. Not something the assistant tries to ensure anyway, so I feel this is acceptable.
Diffstat (limited to 'Logs/Transfer.hs')
-rw-r--r--Logs/Transfer.hs6
1 files changed, 6 insertions, 0 deletions
diff --git a/Logs/Transfer.hs b/Logs/Transfer.hs
index 13f94ea20..9bde51f40 100644
--- a/Logs/Transfer.hs
+++ b/Logs/Transfer.hs
@@ -262,6 +262,12 @@ getFailedTransfers u = catMaybes <$> (liftIO . getpairs =<< concat <$> findfiles
findfiles = liftIO . mapM dirContentsRecursive
=<< mapM (fromRepo . failedTransferDir u) [Download, Upload]
+clearFailedTransfers :: UUID -> Annex [(Transfer, TransferInfo)]
+clearFailedTransfers u = do
+ failed <- getFailedTransfers u
+ mapM_ removeFailedTransfer $ map fst failed
+ return failed
+
removeFailedTransfer :: Transfer -> Annex ()
removeFailedTransfer t = do
f <- fromRepo $ failedTransferFile t