lightstep-haskell 0.1.6 → 0.1.7
raw patch · 3 files changed
+17/−20 lines, 3 files
Files
- lightstep-haskell.cabal +1/−1
- src/LightStep/HighLevel/IO.hs +4/−10
- src/LightStep/LowLevel.hs +12/−9
lightstep-haskell.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4 name: lightstep-haskell-version: 0.1.6+version: 0.1.7 synopsis: LightStep OpenTracing client library description: LightStep OpenTracing client library. Uses GRPC transport via proto-lens. category: Tools
src/LightStep/HighLevel/IO.hs view
@@ -20,6 +20,7 @@ import System.IO.Unsafe import qualified Data.HashMap.Strict as HM import qualified Data.Text as T+import System.Timeout {-# noinline globalSharedMutableSpanStacks #-} globalSharedMutableSpanStacks :: MVar (HM.HashMap ThreadId [Span])@@ -137,13 +138,6 @@ waitUntilDone :: Int -> MVar () -> IO () waitUntilDone timeoutSeconds doneVar = do d_ "waitUntilDone begin"- race_- ( do- threadDelay $ 1_000_000 * timeoutSeconds- d_ "waitUntilDone: timeout"- )- ( do- takeMVar doneVar- d_ "waitUntilDone: done"- )- d_ "waitUntilDone end"+ timeout (1_000_000 * timeoutSeconds) $ do+ takeMVar doneVar+ d_ "waitUntilDone: done"
src/LightStep/LowLevel.hs view
@@ -7,8 +7,10 @@ where import Chronos+import System.Timeout import Control.Exception.Safe import Control.Lens hiding (op)+import Control.Monad.IO.Class import Data.ProtoLens.Message (defMessage) import qualified Data.Text as T import LightStep.Internal.Debug@@ -32,15 +34,16 @@ reportSpans :: LightStepClient -> [Span] -> ExceptT ClientError IO () reportSpans (LightStepClient grpc token rep) sps = do- ret <-- rawUnary- (RPC :: RPC CollectorService "report")- grpc- ( defMessage- & auth .~ (defMessage & accessToken .~ token)- & spans .~ sps- & reporter .~ rep- )+ let req = liftIO . timeout 3_000_000 . runExceptT $+ rawUnary+ (RPC :: RPC CollectorService "report")+ grpc+ ( defMessage+ & auth .~ (defMessage & accessToken .~ token)+ & spans .~ sps+ & reporter .~ rep+ )+ ret <- req `withException` (\err -> d_ $ "reportSpans failed: " <> show (err :: SomeException)) d_ $ show ret -- FIXME: handle errors