avoid sending uploads right back to where the download came from
Just an optimisation.
This commit is contained in:
parent
3a0cffcfed
commit
9f05d19108
2 changed files with 13 additions and 4 deletions
|
@ -86,7 +86,9 @@ onDel st dstatus transferqueue file _ = case parseTransferFile file of
|
|||
- spreading them out to other reachable remotes. -}
|
||||
case (minfo, transferDirection t) of
|
||||
(Just info, Download) -> runThreadState st $
|
||||
queueTransfers Later transferqueue dstatus
|
||||
queueTransfersMatching
|
||||
(/= transferUUID t)
|
||||
Later transferqueue dstatus
|
||||
(transferKey t)
|
||||
(associatedFile info)
|
||||
Upload
|
||||
|
|
|
@ -11,6 +11,7 @@ module Assistant.TransferQueue (
|
|||
newTransferQueue,
|
||||
getTransferQueue,
|
||||
queueTransfers,
|
||||
queueTransfersMatching,
|
||||
queueDeferredDownloads,
|
||||
queueTransfer,
|
||||
queueTransferAt,
|
||||
|
@ -57,12 +58,18 @@ stubInfo f r = stubTransferInfo
|
|||
|
||||
{- Adds transfers to queue for some of the known remotes. -}
|
||||
queueTransfers :: Schedule -> TransferQueue -> DaemonStatusHandle -> Key -> AssociatedFile -> Direction -> Annex ()
|
||||
queueTransfers schedule q dstatus k f direction = do
|
||||
queueTransfers = queueTransfersMatching (const True)
|
||||
|
||||
{- Adds transfers to queue for some of the known remotes, that match a
|
||||
- predicate. -}
|
||||
queueTransfersMatching :: (UUID -> Bool) -> Schedule -> TransferQueue -> DaemonStatusHandle -> Key -> AssociatedFile -> Direction -> Annex ()
|
||||
queueTransfersMatching pred schedule q dstatus k f direction = do
|
||||
rs <- sufficientremotes
|
||||
=<< knownRemotes <$> liftIO (getDaemonStatus dstatus)
|
||||
if null rs
|
||||
let matchingrs = filter (pred . Remote.uuid) rs
|
||||
if null matchingrs
|
||||
then defer
|
||||
else forM_ rs $ \r -> liftIO $
|
||||
else forM_ matchingrs $ \r -> liftIO $
|
||||
enqueue schedule q dstatus (gentransfer r) (stubInfo f r)
|
||||
where
|
||||
sufficientremotes rs
|
||||
|
|
Loading…
Add table
Reference in a new issue