summaryrefslogtreecommitdiff
path: root/Assistant/Threads
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-10-18 16:05:43 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-10-18 16:05:43 -0400
commita32043b86f1ad52ce33ffba92e6d3a57cff81bfb (patch)
tree982d3e55ce7bf15c106e748c1765b2f4bd41c3ba /Assistant/Threads
parentd956edbea525138445d4f2d928041e813896d9cd (diff)
check and drop after uploads
Diffstat (limited to 'Assistant/Threads')
-rw-r--r--Assistant/Threads/TransferScanner.hs2
-rw-r--r--Assistant/Threads/TransferWatcher.hs13
2 files changed, 10 insertions, 5 deletions
diff --git a/Assistant/Threads/TransferScanner.hs b/Assistant/Threads/TransferScanner.hs
index 4cd6915f5..631c36b02 100644
--- a/Assistant/Threads/TransferScanner.hs
+++ b/Assistant/Threads/TransferScanner.hs
@@ -125,7 +125,7 @@ expensiveScan st dstatus transferqueue rs = unless onlyweb $ do
syncrs <- liftIO $ syncRemotes <$> getDaemonStatus dstatus
present <- inAnnex key
- handleDrops locs syncrs present f key
+ handleDrops' locs syncrs present key (Just f)
let slocs = S.fromList locs
let use a = return $ catMaybes $ map (a key slocs) syncrs
diff --git a/Assistant/Threads/TransferWatcher.hs b/Assistant/Threads/TransferWatcher.hs
index 19009756b..e82e4fb08 100644
--- a/Assistant/Threads/TransferWatcher.hs
+++ b/Assistant/Threads/TransferWatcher.hs
@@ -108,16 +108,21 @@ onDel st dstatus transferqueue file _ = case parseTransferFile file of
{- Queue uploads of files we successfully downloaded, spreading them
- out to other reachable remotes.
-
- - Also, downloading a file may have caused a remote to not want it,
- - so drop it from the remote. -}
+ - Downloading a file may have caused a remote to not want it;
+ - so drop it from the remote.
+ -
+ - Uploading a file may cause the local repo, or some other remote to not
+ - want it; handle that too.
+ -}
finishedTransfer :: ThreadState -> DaemonStatusHandle -> TransferQueue -> Transfer -> Maybe TransferInfo -> IO ()
finishedTransfer st dstatus transferqueue t (Just info)
| transferDirection t == Download = runThreadState st $
whenM (inAnnex $ transferKey t) $ do
- handleRemoteDrops dstatus
+ handleDrops dstatus False
(transferKey t) (associatedFile info)
queueTransfersMatching (/= transferUUID t)
Later transferqueue dstatus
(transferKey t) (associatedFile info) Upload
- | otherwise = noop
+ | otherwise = runThreadState st $
+ handleDrops dstatus True (transferKey t) (associatedFile info)
finishedTransfer _ _ _ _ _ = noop