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 +9/−2
- hs-opentelemetry-instrumentation-wai.cabal +3/−3
- src/OpenTelemetry/Instrumentation/Wai.hs +11/−8
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