packages feed

hs-opentelemetry-instrumentation-wai 0.0.1.4 → 0.1.0.0

raw patch · 3 files changed

+23/−13 lines, 3 filesdep ~hs-opentelemetry-apiPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hs-opentelemetry-api

API changes (from Hackage documentation)

- OpenTelemetry.Instrumentation.Wai: newOpenTelemetryWaiMiddleware :: IO Middleware
+ OpenTelemetry.Instrumentation.Wai: newOpenTelemetryWaiMiddleware :: HasCallStack => IO Middleware
- OpenTelemetry.Instrumentation.Wai: newOpenTelemetryWaiMiddleware' :: TracerProvider -> IO Middleware
+ OpenTelemetry.Instrumentation.Wai: newOpenTelemetryWaiMiddleware' :: HasCallStack => TracerProvider -> Middleware

Files

ChangeLog.md view
@@ -1,5 +1,14 @@ # Changelog for hs-opentelemetry-instrumentation-wai +## Unreleased changes++## 0.1.0.0++### Breaking changes++- Change a type of `newOpenTelemetryWaiMiddleware'` from `TracerProvider -> IO Middleware` to `TracerProvider -> Middleware` #86+- Use `HashMap Text Attribute` instead of `[(Text, Attribute)]` as attributes+ ## 0.0.1.1  - Bump version bounds for hs-opentelemetry-api to == 0.0.2.0@@ -7,5 +16,3 @@ ## 0.0.1.0  - Initial release--## Unreleased changes
hs-opentelemetry-instrumentation-wai.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:               hs-opentelemetry-instrumentation-wai-version:            0.0.1.4+version:            0.1.0.0 synopsis:           WAI instrumentation middleware for OpenTelemetry description:        Please see the README on GitHub at <https://github.com/iand675/hs-opentelemetry/tree/main/instrumentation/wai#readme> category:           OpenTelemetry, Web@@ -36,7 +36,7 @@   build-depends:       base >=4.7 && <5     , bytestring-    , hs-opentelemetry-api ==0.0.3.*+    , hs-opentelemetry-api ==0.1.*     , http-types     , iproute     , network@@ -56,7 +56,7 @@   build-depends:       base >=4.7 && <5     , bytestring-    , hs-opentelemetry-api ==0.0.3.*+    , hs-opentelemetry-api ==0.1.*     , hs-opentelemetry-instrumentation-wai     , http-types     , iproute
src/OpenTelemetry/Instrumentation/Wai.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}  module OpenTelemetry.Instrumentation.Wai (@@ -13,6 +14,7 @@ import qualified Data.Text as T import qualified Data.Text.Encoding as T import qualified Data.Vault.Lazy as Vault+import GHC.Stack (HasCallStack, callStack, popCallStack) import Network.HTTP.Types import Network.Socket import Network.Wai@@ -24,21 +26,22 @@ import System.IO.Unsafe  -newOpenTelemetryWaiMiddleware :: IO Middleware-newOpenTelemetryWaiMiddleware = getGlobalTracerProvider >>= newOpenTelemetryWaiMiddleware'-+newOpenTelemetryWaiMiddleware :: (HasCallStack) => IO Middleware+newOpenTelemetryWaiMiddleware = newOpenTelemetryWaiMiddleware' <$> getGlobalTracerProvider  newOpenTelemetryWaiMiddleware'-  :: TracerProvider-  -> IO Middleware-newOpenTelemetryWaiMiddleware' tp = do+  :: (HasCallStack)+  => TracerProvider+  -> Middleware+newOpenTelemetryWaiMiddleware' tp =   let waiTracer =         makeTracer           tp           "opentelemetry-instrumentation-wai"           (TracerOptions Nothing)-  pure $ middleware waiTracer+  in middleware waiTracer   where+    usefulCallsite = callerAttributes     middleware :: Tracer -> Middleware     middleware tracer app req sendResp = do       let propagator = getTracerProviderPropagators $ getTracerTracerProvider tracer@@ -49,7 +52,7 @@       let path_ = T.decodeUtf8 $ rawPathInfo req       -- peer = remoteHost req       parentContextM-      inSpan' tracer path_ (defaultSpanArguments {kind = Server}) $ \requestSpan -> do+      inSpan'' tracer path_ (defaultSpanArguments {kind = Server, attributes = usefulCallsite}) $ \requestSpan -> do         ctxt <- getContext         addAttributes           requestSpan