@@ -12,7 +12,6 @@ module Katip.Scribes.Rollbar
13import Prelude hiding (error)
13import Prelude hiding (error)
15−import "base" Control.Concurrent.MVar (MVar, newEmptyMVar, putMVar, takeMVar)
16import "base" Control.Monad (replicateM, when)
15import "base" Control.Monad (replicateM, when)
17import "base" Data.Foldable (for_)
16import "base" Data.Foldable (for_)
18import "base" Data.Functor (void)
17import "base" Data.Functor (void)
@@ -89,14 +88,13 @@ mkRollbarScribe ::
90mkRollbarScribe proxy accessToken branch codeVersion manager severity verbosity = do
89mkRollbarScribe proxy accessToken branch codeVersion manager severity verbosity = do
91 queue <- newTBMQueueIO queueSize
90 queue <- newTBMQueueIO queueSize
92− finalize <- newEmptyMVar
91+ workers <- replicateM workerSize (async $ mkWorker proxy manager queue)
93− setupWorkers proxy queue finalize manager
94 let liPush item = when (permitItem severity item) $
92 let liPush item = when (permitItem severity item) $
95 atomically (writeTBMQueue queue $ rollbarItem' item)
93 atomically (writeTBMQueue queue $ rollbarItem' item)
96 rollbarItem' item = rollbarItem proxy accessToken branch codeVersion verbosity item
94 rollbarItem' item = rollbarItem proxy accessToken branch codeVersion verbosity item
97 scribeFinalizer = do
95 scribeFinalizer = do
98− putMVar finalize ()
96+ atomically (closeTBMQueue queue)
99− takeMVar finalize
97+ for_ workers waitCatch
100 pure Scribe { liPush, scribeFinalizer }
98 pure Scribe { liPush, scribeFinalizer }
102rollbarItem ::
100rollbarItem ::
@@ -141,22 +139,6 @@ rollbarItem _ accessToken branch serverCodeVersion verbosity item =
141 value :: Value
139 value :: Value
142 value = itemJson verbosity item
140 value = itemJson verbosity item
144−-- | Setup the workers and wait until the finalizer is evaluated.
145−-- Then, close the queueu, wait for the workers and continue finalization.
147− RemoveHeaders headers =>
149− TBMQueue (Item Value ("Authorization" ': headers)) ->
153−setupWorkers proxy queue finalize manager = void $ async $ do
154− workers <- replicateM workerSize (async $ mkWorker proxy manager queue)
156− atomically (closeTBMQueue queue)
157− for_ workers waitCatch
160mkWorker ::
142mkWorker ::
161 (RemoveHeaders headers) =>
143 (RemoveHeaders headers) =>
162 proxy headers ->
144 proxy headers ->