diff options
author | Joey Hess <joey@kitenet.net> | 2012-07-25 12:07:30 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-07-25 12:07:30 -0400 |
commit | 6107328a6b981ec8130e4154be1ebe7bc11979df (patch) | |
tree | 8006e022a2f4896d643720d8c366aa0f2bf399a2 | |
parent | 522f568450a005ae81b24f63bb37e75320b51219 (diff) |
avoid spawning new transfer thread until a slot becomes available
-rw-r--r-- | Assistant/Threads/TransferScanner.hs | 2 | ||||
-rw-r--r-- | Assistant/TransferSlots.hs | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/Assistant/Threads/TransferScanner.hs b/Assistant/Threads/TransferScanner.hs index 0a40f7ead..485506e7d 100644 --- a/Assistant/Threads/TransferScanner.hs +++ b/Assistant/Threads/TransferScanner.hs @@ -19,7 +19,7 @@ thisThread :: ThreadName thisThread = "TransferScanner" {- This thread scans remotes, to find transfers that need to be made to - - keep their data in sync. The transfers are queued with lot priority. -} + - keep their data in sync. The transfers are queued with low priority. -} transferScannerThread :: ThreadState -> ScanRemoteMap -> TransferQueue -> IO () transferScannerThread st scanremotes transferqueue = do runEvery (Seconds 2) $ do diff --git a/Assistant/TransferSlots.hs b/Assistant/TransferSlots.hs index dc077254d..710a18884 100644 --- a/Assistant/TransferSlots.hs +++ b/Assistant/TransferSlots.hs @@ -29,9 +29,10 @@ newTransferSlots = newQSemN numSlots {- Waits until a transfer slot becomes available, and runs a transfer - action in the slot, in its own thread. -} inTransferSlot :: TransferSlots -> ThreadState -> Annex a -> IO ThreadId -inTransferSlot s st a = forkIO $ bracket_ start done run +inTransferSlot s st a = do + waitQSemN s 1 + forkIO $ bracket_ noop done run where - start = waitQSemN s 1 done = transferComplete s run = unsafeRunThreadState st a |