@@ -12,7 +12,6 @@ module Katip.Scribes.Rollbar
1212
1313import Prelude hiding (error)
1414
15−import "base" Control.Concurrent.MVar (MVar, newEmptyMVar, putMVar, takeMVar)
1615import "base" Control.Monad (replicateM, when)
1716import "base" Data.Foldable (for_)
1817import "base" Data.Functor (void)
@@ -89,14 +88,13 @@ mkRollbarScribe ::
8988 IO Scribe
9089mkRollbarScribe proxy accessToken branch codeVersion manager severity verbosity = do
9190 queue <- newTBMQueueIO queueSize
92− finalize <- newEmptyMVar
93− setupWorkers proxy queue finalize manager
91+ workers <- replicateM workerSize (async $ mkWorker proxy manager queue)
9492 let liPush item = when (permitItem severity item) $
9593 atomically (writeTBMQueue queue $ rollbarItem' item)
9694 rollbarItem' item = rollbarItem proxy accessToken branch codeVersion verbosity item
9795 scribeFinalizer = do
98− putMVar finalize ()
99− takeMVar finalize
96+ atomically (closeTBMQueue queue)
97+ for_ workers waitCatch
10098 pure Scribe { liPush, scribeFinalizer }
10199
102100rollbarItem ::
@@ -141,22 +139,6 @@ rollbarItem _ accessToken branch serverCodeVersion verbosity item =
141139 value :: Value
142140 value = itemJson verbosity item
143141
144−-- | Setup the workers and wait until the finalizer is evaluated.
145−-- Then, close the queueu, wait for the workers and continue finalization.
146−setupWorkers ::
147− RemoveHeaders headers =>
148− proxy headers ->
149− TBMQueue (Item Value ("Authorization" ': headers)) ->
150− MVar () ->
151− Manager ->
152− IO ()
153−setupWorkers proxy queue finalize manager = void $ async $ do
154− workers <- replicateM workerSize (async $ mkWorker proxy manager queue)
155− takeMVar finalize
156− atomically (closeTBMQueue queue)
157− for_ workers waitCatch
158− putMVar finalize ()
159−
160142mkWorker ::
161143 (RemoveHeaders headers) =>
162144 proxy headers ->