packages feed

tracing 0.0.4.0 → 0.0.5.0

raw patch · 5 files changed

+27/−27 lines, 5 filesdep +unliftio-coredep −ipPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: unliftio-core

Dependencies removed: ip

API changes (from Hackage documentation)

- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Except.ExceptT e m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Reader.ReaderT r m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.State.Lazy.StateT s m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.State.Strict.StateT s m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.RWS.Strict.RWST r w s m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Writer.Lazy.WriterT w m)
- Control.Monad.Trace.Class: instance (GHC.Base.Monad m, Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Writer.Strict.WriterT w m)
+ Control.Monad.Trace.Class: instance (Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
+ Control.Monad.Trace.Class: instance (Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.RWS.Strict.RWST r w s m)
+ Control.Monad.Trace.Class: instance (Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Control.Monad.Trace.Class: instance (Control.Monad.Trace.Class.MonadTrace m, GHC.Base.Monoid w) => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Writer.Strict.WriterT w m)
+ Control.Monad.Trace.Class: instance Control.Monad.Trace.Class.MonadTrace m => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Except.ExceptT e m)
+ Control.Monad.Trace.Class: instance Control.Monad.Trace.Class.MonadTrace m => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.Reader.ReaderT r m)
+ Control.Monad.Trace.Class: instance Control.Monad.Trace.Class.MonadTrace m => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.State.Lazy.StateT s m)
+ Control.Monad.Trace.Class: instance Control.Monad.Trace.Class.MonadTrace m => Control.Monad.Trace.Class.MonadTrace (Control.Monad.Trans.State.Strict.StateT s m)
- Monitor.Tracing.Zipkin: Endpoint :: !Maybe Text -> !Maybe Int -> !Maybe IPv4 -> !Maybe IPv6 -> Endpoint
+ Monitor.Tracing.Zipkin: Endpoint :: !Maybe Text -> !Maybe Int -> !Maybe Text -> !Maybe Text -> Endpoint
- Monitor.Tracing.Zipkin: [endpointIPv4] :: Endpoint -> !Maybe IPv4
+ Monitor.Tracing.Zipkin: [endpointIPv4] :: Endpoint -> !Maybe Text
- Monitor.Tracing.Zipkin: [endpointIPv6] :: Endpoint -> !Maybe IPv6
+ Monitor.Tracing.Zipkin: [endpointIPv6] :: Endpoint -> !Maybe Text

Files

README.md view
@@ -1,4 +1,4 @@-# Tracing+# Tracing [![Stackage LTS](https://stackage.org/package/tracing/badge/lts)](https://stackage.org/lts/package/tracing) [![Stackage Nightly](https://stackage.org/package/tracing/badge/nightly)](https://stackage.org/nightly/package/tracing) [![Hackage](https://img.shields.io/hackage/v/tracing.svg)](https://hackage.haskell.org/package/tracing) [![Build Status](https://travis-ci.org/mtth/tracing.svg?branch=master)](https://travis-ci.org/mtth/tracing)  An [OpenTracing](https://opentracing.io/)-compliant, simple, and extensible distributed tracing library.
src/Control/Monad/Trace.hs view
@@ -34,6 +34,7 @@ import Control.Monad.Reader.Class (MonadReader) import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Data.Aeson as JSON+import Data.Foldable (for_) import Data.List (sortOn) import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map@@ -50,7 +51,7 @@ -- | A collection of span logs. type Logs = [(POSIXTime, Key, JSON.Value)] --- | A sampled span, and its associated metadata.+-- | A sampled span and its associated metadata. data Sample = Sample   { sampleSpan :: !Span   -- ^ The sampled span.@@ -150,15 +151,13 @@    activeSpan = TraceT $ asks scopeSpan -  addSpanEntry key (TagValue val) = TraceT $ asks scopeTags >>= \case-    Nothing -> pure ()-    Just tv -> atomically $ modifyTVar' tv $ Map.insert key val-  addSpanEntry key (LogValue val maybeTime)  = TraceT $ asks scopeLogs >>= \case-    Nothing -> pure ()-    Just tv -> do-      time <- case maybeTime of-        Nothing -> liftIO getPOSIXTime-        Just time' -> pure time'+  addSpanEntry key (TagValue val) = TraceT $ do+    mbTV <- asks scopeTags+    for_ mbTV $ \tv -> atomically $ modifyTVar' tv $ Map.insert key val+  addSpanEntry key (LogValue val mbTime)  = TraceT $ do+    mbTV <- asks scopeLogs+    for_ mbTV $ \tv -> do+      time <- maybe (liftIO getPOSIXTime) pure mbTime       atomically $ modifyTVar' tv ((time, key, val) :)  instance MonadUnliftIO m => MonadUnliftIO (TraceT m) where
src/Control/Monad/Trace/Class.hs view
@@ -56,7 +56,7 @@  -- | A monad capable of generating and modifying trace spans. ----- There are currently two instances of this monad:+-- This package currently provides two instances of this class: -- -- * 'Control.Monad.Trace.TraceT', which emits spans for each trace in 'IO' and is meant to be used -- in production.@@ -64,7 +64,9 @@ -- or complex setup. class Monad m => MonadTrace m where -  -- | Trace an action, wrapping it inside a new span.+  -- | Trace an action, wrapping it inside a new span. If the action isn't currently being traced,+  -- 'trace' should be a no-op. Otherwise, the new span should share the active span's trace ID,+  -- sampling decision, and baggages unless overridden by the input 'Builder'.   trace :: Builder -> m a -> m a    -- | Extracts the currently active span, or 'Nothing' if the action is not being traced.@@ -77,28 +79,28 @@   default addSpanEntry :: (MonadTrace n, MonadTrans t, m ~ t n) => Key -> Value -> m ()   addSpanEntry key = lift . addSpanEntry key -instance (Monad m, MonadTrace m) => MonadTrace (ExceptT e m) where+instance MonadTrace m => MonadTrace (ExceptT e m) where   trace name (ExceptT actn) = ExceptT $ trace name actn -instance (Monad m, MonadTrace m) => MonadTrace (ReaderT r m) where+instance MonadTrace m => MonadTrace (ReaderT r m) where   trace name (ReaderT actn) = ReaderT $ \r -> trace name (actn r) -instance (Monad m, MonadTrace m, Monoid w) => MonadTrace (RWS.Lazy.RWST r w s m) where+instance (MonadTrace m, Monoid w) => MonadTrace (RWS.Lazy.RWST r w s m) where   trace name (RWS.Lazy.RWST actn) = RWS.Lazy.RWST $ \r s -> trace name (actn r s) -instance (Monad m, MonadTrace m, Monoid w) => MonadTrace (RWS.Strict.RWST r w s m) where+instance (MonadTrace m, Monoid w) => MonadTrace (RWS.Strict.RWST r w s m) where   trace name (RWS.Strict.RWST actn) = RWS.Strict.RWST $ \r s -> trace name (actn r s) -instance (Monad m, MonadTrace m) => MonadTrace (State.Lazy.StateT s m) where+instance MonadTrace m => MonadTrace (State.Lazy.StateT s m) where   trace name (State.Lazy.StateT actn) = State.Lazy.StateT $ \s -> trace name (actn s) -instance (Monad m, MonadTrace m) => MonadTrace (State.Strict.StateT s m) where+instance MonadTrace m => MonadTrace (State.Strict.StateT s m) where   trace name (State.Strict.StateT actn) = State.Strict.StateT $ \s -> trace name (actn s) -instance (Monad m, MonadTrace m, Monoid w) => MonadTrace (Writer.Lazy.WriterT w m) where+instance (MonadTrace m, Monoid w) => MonadTrace (Writer.Lazy.WriterT w m) where   trace name (Writer.Lazy.WriterT actn) = Writer.Lazy.WriterT $ trace name actn -instance (Monad m, MonadTrace m, Monoid w) => MonadTrace (Writer.Strict.WriterT w m) where+instance (MonadTrace m, Monoid w) => MonadTrace (Writer.Strict.WriterT w m) where   trace name (Writer.Strict.WriterT actn) = Writer.Strict.WriterT $ trace name actn  instance MonadTrace Identity where
src/Monitor/Tracing/Zipkin.hs view
@@ -63,8 +63,6 @@ import qualified Data.Text as T import qualified Data.Text.Encoding as T import Data.Time.Clock.POSIX (POSIXTime)-import Net.IPv4 (IPv4)-import Net.IPv6 (IPv6) import Network.HTTP.Client (Manager, Request) import qualified Network.HTTP.Client as HTTP import Network.Socket (HostName, PortNumber)@@ -369,9 +367,9 @@   -- ^ The endpoint's service name.   , endpointPort :: !(Maybe Int)   -- ^ The endpoint's port, if applicable and known.-  , endpointIPv4 :: !(Maybe IPv4)+  , endpointIPv4 :: !(Maybe Text)   -- ^ The endpoint's IPv4 address.-  , endpointIPv6 :: !(Maybe IPv6)+  , endpointIPv6 :: !(Maybe Text)   -- ^ The endpoint's IPv6 address.   } deriving (Eq, Ord, Show) 
tracing.cabal view
@@ -1,5 +1,5 @@ name:                tracing-version:             0.0.4.0+version:             0.0.5.0 synopsis:            Distributed tracing description:         An OpenTracing-compliant, simple, and extensible distributed tracing library. homepage:            https://github.com/mtth/tracing@@ -21,6 +21,7 @@                      , Monitor.Tracing.Local                      , Monitor.Tracing.Zipkin   other-modules:       Control.Monad.Trace.Internal+  -- unliftio-core bound for https://github.com/fpco/unliftio/issues/55   build-depends:       aeson >= 1.4                      , base >= 4.8 && < 5                      , base16-bytestring >= 0.1@@ -28,7 +29,6 @@                      , case-insensitive >= 1.2                      , containers >= 0.6                      , http-client >= 0.5-                     , ip >= 1.4                      , mtl >= 2.2                      , network >= 2.8                      , random >= 1.1@@ -37,6 +37,7 @@                      , time >= 1.8                      , transformers >= 0.5                      , unliftio >= 0.2+                     , unliftio-core < 0.2   default-language:    Haskell2010   ghc-options:         -Wall