poolboy 0.2.1.0 → 0.2.2.0
raw patch · 2 files changed
+10/−10 lines, 2 filesdep +unliftiodep −safe-exceptions
Dependencies added: unliftio
Dependencies removed: safe-exceptions
Files
- poolboy.cabal +3/−3
- src/Data/Poolboy.hs +7/−7
poolboy.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: poolboy-version: 0.2.1.0+version: 0.2.2.0 author: Gautier DI FOLCO maintainer: gautier.difolco@gmail.com category: Data@@ -16,9 +16,9 @@ default-language: Haskell2010 build-depends: base == 4.*- , safe-exceptions == 0.1.*- , stm == 2.* , async == 2.*+ , stm == 2.*+ , unliftio == 0.2.* hs-source-dirs: src exposed-modules: Data.Poolboy
src/Data/Poolboy.hs view
@@ -31,11 +31,11 @@ import Control.Concurrent import Control.Concurrent.Async import Control.Concurrent.STM.TQueue-import Control.Exception.Safe (bracket, tryAny) import Control.Monad import Control.Monad.STM import Data.Maybe (isNothing) import System.Timeout (timeout)+import UnliftIO.Exception (bracket, tryAny) -- | Initial settings data PoolboySettings = PoolboySettings@@ -55,7 +55,7 @@ defaultPoolboySettings = PoolboySettings { workersCount = CapabilitiesWCS,- log = \_ -> return ()+ log = \x -> seq x $ return () } -- | Arbitrary-numbered settings@@ -95,7 +95,7 @@ forkIO $ controller $ WorkQueueControllerState- {commands = wq.commands,+ { commands = wq.commands, queue = wq.queue, stopped = wq.stopped, log = settings.log,@@ -144,7 +144,7 @@ signalQSemN wq.waitingWorkers 1 -- | Enqueue action and some actions to be run after it-enqueueAfter :: Foldable f => WorkQueue -> IO () -> f (IO ()) -> IO ()+enqueueAfter :: (Foldable f) => WorkQueue -> IO () -> f (IO ()) -> IO () enqueueAfter wq x xs = enqueue wq $ do x@@ -191,11 +191,11 @@ return ([], wq.capabilityCount) else do let newWorkersCount = abs diff- newWorkers <- forM [1..newWorkersCount] $ \capability -> do+ newWorkers <- forM [1 .. newWorkersCount] $ \capability -> do wq.log $ prefix <> "Pre-fork"- asyncOn (capability - 1) $ worker $ WorkQueueWorkerState{queue = wq.queue, waitingWorkers = wq.waitingWorkers, log = wq.log}+ asyncOn (capability - 1) $ worker $ WorkQueueWorkerState {queue = wq.queue, waitingWorkers = wq.waitingWorkers, log = wq.log} return (newWorkers, wq.capabilityCount + newWorkersCount)- controller $ wq { workers = newWorkers <> liveWorkers, capabilityCount = newCapabilityCount }+ controller $ wq {workers = newWorkers <> liveWorkers, capabilityCount = newCapabilityCount} Stop -> do liveWorkers <- getLiveWorkers let currentCount = length liveWorkers