summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-07-25 12:07:30 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-07-25 12:07:30 -0400
commit6107328a6b981ec8130e4154be1ebe7bc11979df (patch)
tree8006e022a2f4896d643720d8c366aa0f2bf399a2
parent522f568450a005ae81b24f63bb37e75320b51219 (diff)
avoid spawning new transfer thread until a slot becomes available
-rw-r--r--Assistant/Threads/TransferScanner.hs2
-rw-r--r--Assistant/TransferSlots.hs5
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