From cddd11f9b6ecbd8989e7b7775141088f7109df7b Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 13 Mar 2023 14:22:09 -0400 Subject: [PATCH 01/18] Implement OpenTelemetry, use it for runDB --- CHANGELOG.md | 19 ++++- freckle-app.cabal | 10 ++- library/Freckle/App.hs | 19 ++++- library/Freckle/App/Database.hs | 50 ++++------- library/Freckle/App/Database/XRay.hs | 83 +++++++++++++++++++ library/Freckle/App/OpenTelemetry.hs | 71 +++++++++++++--- library/Freckle/App/Test.hs | 7 +- library/Freckle/App/Wai.hs | 4 + .../Network/Wai/Middleware/OpenTelemetry.hs | 66 +++++++++++++++ package.yaml | 9 +- .../Wai/Middleware/OpenTelemetrySpec.hs | 21 +++++ 11 files changed, 308 insertions(+), 51 deletions(-) create mode 100644 library/Freckle/App/Database/XRay.hs create mode 100644 library/Network/Wai/Middleware/OpenTelemetry.hs create mode 100644 tests/Network/Wai/Middleware/OpenTelemetrySpec.hs diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f5a6b45..b5662432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,21 @@ -## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.9.5.1...main) +## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.10.0.0...main) + +## [v1.10.0.0](https://github.com/freckle/freckle-app/compare/v1.9.5.1...v1.10.0.0) + +- Full support for OpenTelemetry tracing, use it instead of XRay in `runDB` + + This replaces our bespoke, XRay-based `MonadTracer` class to be that of + hs-opentelemetry. This means `Freckle.App.Database.runDB` now traces using + OpenTelemetry instead of XRay. A compilation error will indicate a missing + `HasTracer` instance, which you should implement based on the + `Freckle.App.OpenTelemetry` module documentation. + + Clients who wish to remain on XRay can still upgrade, but must adjust their + imports so they use `Freckle.App.Database.XRay` instead. The + `Freckle.App.Database` module is re-exported through `Freckle.App` and + `Freckle.App.Test`, so there may be some additional `hiding` required. A + compilation error indicating a missing `HasTracer` or `MonadTracer` instance + means your imports are not yet correct. ## [v1.9.5.1](https://github.com/freckle/freckle-app/compare/v1.9.5.0...v1.9.5.1) diff --git a/freckle-app.cabal b/freckle-app.cabal index 1ea4aa59..d37d5027 100644 --- a/freckle-app.cabal +++ b/freckle-app.cabal @@ -5,7 +5,7 @@ cabal-version: 1.18 -- see: https://github.com/sol/hpack name: freckle-app -version: 1.9.5.1 +version: 1.10.0.0 synopsis: Haskell application toolkit used at Freckle description: Please see README.md category: Utils @@ -35,6 +35,7 @@ library Freckle.App.Bugsnag.MetaData Freckle.App.Csv Freckle.App.Database + Freckle.App.Database.XRay Freckle.App.Dotenv Freckle.App.Ecs Freckle.App.Env @@ -67,6 +68,7 @@ library Freckle.App.Yesod.Routes Network.HTTP.Link.Compat Network.Wai.Middleware.Cors + Network.Wai.Middleware.OpenTelemetry Network.Wai.Middleware.Stats Yesod.Core.Lens other-modules: @@ -126,6 +128,10 @@ library , extra , filepath , hashable + , hs-opentelemetry-api + , hs-opentelemetry-instrumentation-persistent + , hs-opentelemetry-instrumentation-wai + , hs-opentelemetry-sdk , hspec >=2.8.1 , hspec-core >=2.8.1 , hspec-expectations-lifted @@ -234,6 +240,7 @@ test-suite spec Freckle.App.Test.Properties.JSONSpec Freckle.App.Test.Properties.PathPieceSpec Freckle.App.WaiSpec + Network.Wai.Middleware.OpenTelemetrySpec Spec Paths_freckle_app hs-source-dirs: @@ -275,6 +282,7 @@ test-suite spec , conduit , errors , freckle-app + , hs-opentelemetry-api , hspec , http-types , lens diff --git a/library/Freckle/App.hs b/library/Freckle/App.hs index 1b7cd66e..0b69f402 100644 --- a/library/Freckle/App.hs +++ b/library/Freckle/App.hs @@ -70,6 +70,7 @@ -- Adding Database access requires a few more instances on your @App@ type: -- -- - @'HasSqlPool'@: so we can, you know, talk to a DB +-- - @'HasTracer'@: to satisfy @'MonadTracer'@ so we can trace @'runDB'@ -- - @'HasStatsClient'@: so we can manage connection count metrics -- -- Most often, this will be easiest if you indeed separate a @Config@ attribute: @@ -94,6 +95,7 @@ -- > { appConfig :: Config -- > , appLogger :: Logger -- > , appSqlPool :: SqlPool +-- > , appTracer :: Tracer -- > , appStatsClient :: StatsClient -- > } -- > @@ -103,6 +105,9 @@ -- > instance HasSqlPool App where -- > getSqlPool = appSqlPool -- > +-- > instance HasTracer App where +-- > tracerL = lens appTracer $ \x y -> x { appTracer = y } +-- > -- > instance HasStatsClient App where -- > statsClientL = lens appStatsClient $ \x y -> x { appStatsClient = y } -- @@ -114,13 +119,16 @@ -- > appConfig{..} <- loadConfig -- > appLogger <- newLogger configLoggerSettings -- > appSqlPool <- runLoggerLoggingT appLogger $ makePostgresPool configDbPoolSize --- > withStatsClient configStatsSettings $ \appStatsClient -> do --- > f App{..} +-- > withTracerProvider $ \tracerProvider -> do +-- > withStatsClient configStatsSettings $ \appStatsClient -> do +-- > let appTracer = makeTracer tracerProvider "my-app" tracerOptions +-- > f App{..} -- -- This unlocks @'runDB'@ for your application: -- -- > myAppAction -- > :: ( MonadUnliftIO m +-- > , MonadTracer m -- > , MonadReader env m -- > , HasSqlPool env -- > , HasStatsClient env @@ -171,12 +179,14 @@ module Freckle.App import Freckle.App.Prelude import Blammo.Logging +import Control.Lens (view) import Control.Monad.Catch (MonadCatch, MonadThrow) import Control.Monad.IO.Unlift (MonadUnliftIO (..)) import Control.Monad.Primitive (PrimMonad (..)) import Control.Monad.Reader import Control.Monad.Trans.Resource (MonadResource, ResourceT, runResourceT) import Freckle.App.Database +import qualified Freckle.App.Database.XRay as XRay import Freckle.App.OpenTelemetry import System.IO (BufferMode (..), hSetBuffering, stderr, stdout) @@ -232,7 +242,10 @@ instance PrimMonad m => PrimMonad (AppT app m) where primitive = AppT . lift . lift . lift . primitive {-# INLINE primitive #-} -instance Applicative m => MonadTracer (AppT app m) where +instance (Monad m, HasTracer app) => MonadTracer (AppT app m) where + getTracer = view tracerL + +instance Applicative m => XRay.MonadTracer (AppT app m) where getVaultData = pure Nothing runAppT :: (MonadUnliftIO m, HasLogger app) => AppT app m a -> app -> m a diff --git a/library/Freckle/App/Database.hs b/library/Freckle/App/Database.hs index 59f49974..d5c45c98 100644 --- a/library/Freckle/App/Database.hs +++ b/library/Freckle/App/Database.hs @@ -17,13 +17,16 @@ module Freckle.App.Database , postgresStatementTimeoutMilliseconds , envParseDatabaseConf , envPostgresPasswordSource + + -- * Re-exported constraints required to use 'runDB' + , MonadTracer + , HasStatsClient ) where import Freckle.App.Prelude import Blammo.Logging import qualified Control.Immortal as Immortal -import Control.Monad.IO.Unlift (MonadUnliftIO (..)) import Control.Monad.Reader import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS8 @@ -36,9 +39,10 @@ import Database.Persist.Postgresql , createPostgresqlPoolModified , createSqlPool , openSimpleConn - , runSqlConn , runSqlPool + , runSqlPoolWithExtensibleHooks ) +import Database.Persist.SqlBackend.SqlPoolHooks import Database.PostgreSQL.Simple ( Connection , Only (..) @@ -48,11 +52,10 @@ import Database.PostgreSQL.Simple import Database.PostgreSQL.Simple.SqlQQ (sql) import Freckle.App.Env (Timeout (..)) import qualified Freckle.App.Env as Env -import Freckle.App.OpenTelemetry (MonadTracer (..)) +import Freckle.App.OpenTelemetry import Freckle.App.Stats (HasStatsClient) import qualified Freckle.App.Stats as Stats -import Network.AWS.XRayClient.Persistent -import Network.AWS.XRayClient.WAI +import OpenTelemetry.Instrumentation.Persistent import System.Process.Typed (proc, readProcessStdout_) import UnliftIO.Concurrent (threadDelay) import UnliftIO.Exception (displayException) @@ -78,20 +81,28 @@ makePostgresPool = do makePostgresPoolWith conf -- | Run a Database action with connection stats and tracing +-- +-- This uses OpenTelemetry and 'MonadTracer'. For callstacks in traces to be +-- useful, ensure you have 'HasCallStack' on functions that call this (and +-- functions that call those, for as far as you require to get to a useful +-- source location). runDB :: ( MonadUnliftIO m , MonadTracer m , MonadReader app m , HasSqlPool app , HasStatsClient app + , HasCallStack ) => SqlPersistT m a -> m a runDB action = do pool <- asks getSqlPool - mVaultData <- getVaultData Stats.withGauge Stats.dbConnections $ - maybe runSqlPool (runSqlPoolXRay "runDB") mVaultData action pool + inSpan "runDB" defaultSpanArguments $ + runSqlPoolWithExtensibleHooks action pool Nothing $ + setAlterBackend defaultSqlPoolHooks $ + wrapSqlBackend [] runDBSimple :: (HasSqlPool app, MonadUnliftIO m, MonadReader app m) @@ -101,31 +112,6 @@ runDBSimple action = do pool <- asks getSqlPool runSqlPool action pool --- | @'runSqlPool'@ but with XRay tracing -runSqlPoolXRay - :: (backend ~ SqlBackend, MonadUnliftIO m) - => Text - -- ^ Subsegment name - -- - -- The top-level subsegment will be named @\" runSqlPool\"@ and the, - -- with a lower-level subsegment named @\" query\"@. - -> XRayVaultData - -- ^ Vault data to trace with - -> ReaderT backend m a - -> Pool backend - -> m a -runSqlPoolXRay name vaultData action pool = - traceXRaySubsegment' vaultData (name <> " runSqlPool") id $ - withRunInIO $ - \run -> withResource pool $ \backend -> do - let - sendTrace = atomicallyAddVaultDataSubsegment vaultData - stdGenIORef = xrayVaultDataStdGen vaultData - subsegmentName = name <> " query" - run . runSqlConn action - =<< liftIO - (xraySqlBackend sendTrace stdGenIORef subsegmentName backend) - data PostgresConnectionConf = PostgresConnectionConf { pccHost :: String , pccPort :: Int diff --git a/library/Freckle/App/Database/XRay.hs b/library/Freckle/App/Database/XRay.hs new file mode 100644 index 00000000..0c54d05b --- /dev/null +++ b/library/Freckle/App/Database/XRay.hs @@ -0,0 +1,83 @@ +{-# LANGUAGE ApplicativeDo #-} +{-# LANGUAGE TypeOperators #-} + +-- | Legacy version of "Freckle.App.Database" that still uses XRay +module Freckle.App.Database.XRay + ( MonadTracer (..) + , runDB + , module Freckle.App.Database + ) where + +import Freckle.App.Prelude + +import Control.Monad.IO.Unlift (MonadUnliftIO (..)) +import Control.Monad.Reader +import Data.Pool +import Database.Persist.Postgresql + ( SqlBackend + , SqlPersistT + , runSqlConn + , runSqlPool + ) +import Freckle.App.Database hiding (MonadTracer, runDB) +import qualified Freckle.App.Stats as Stats +import Network.AWS.XRayClient.Persistent +import Network.AWS.XRayClient.WAI + ( XRayVaultData + , atomicallyAddVaultDataSubsegment + , traceXRaySubsegment' + , vaultDataFromRequest + , xrayVaultDataStdGen + ) +import Yesod.Core (HandlerFor, waiRequest) + +-- | Class for reading 'XRayVaultData' +-- +-- This is named the same as the OpenTelemetry class we'll use once we move to +-- that tracing system +class MonadTracer m where + getVaultData :: m (Maybe XRayVaultData) + +instance MonadTracer (HandlerFor app) where + getVaultData = vaultDataFromRequest <$> waiRequest + +-- | Run a Database action with connection stats and tracing +runDB + :: ( MonadUnliftIO m + , MonadTracer m + , MonadReader app m + , HasSqlPool app + , HasStatsClient app + ) + => SqlPersistT m a + -> m a +runDB action = do + pool <- asks getSqlPool + mVaultData <- getVaultData + Stats.withGauge Stats.dbConnections $ + maybe runSqlPool (runSqlPoolXRay "runDB") mVaultData action pool + +-- | @'runSqlPool'@ but with XRay tracing +runSqlPoolXRay + :: (backend ~ SqlBackend, MonadUnliftIO m) + => Text + -- ^ Subsegment name + -- + -- The top-level subsegment will be named @\" runSqlPool\"@ and the, + -- with a lower-level subsegment named @\" query\"@. + -> XRayVaultData + -- ^ Vault data to trace with + -> ReaderT backend m a + -> Pool backend + -> m a +runSqlPoolXRay name vaultData action pool = + traceXRaySubsegment' vaultData (name <> " runSqlPool") id $ + withRunInIO $ + \run -> withResource pool $ \backend -> do + let + sendTrace = atomicallyAddVaultDataSubsegment vaultData + stdGenIORef = xrayVaultDataStdGen vaultData + subsegmentName = name <> " query" + run . runSqlConn action + =<< liftIO + (xraySqlBackend sendTrace stdGenIORef subsegmentName backend) diff --git a/library/Freckle/App/OpenTelemetry.hs b/library/Freckle/App/OpenTelemetry.hs index eae10aa8..d09f48e5 100644 --- a/library/Freckle/App/OpenTelemetry.hs +++ b/library/Freckle/App/OpenTelemetry.hs @@ -1,18 +1,67 @@ +-- | Application tracing via +-- +-- @ +-- data App = App +-- { -- ... +-- , appTracer :: Tracer +-- } +-- +-- instance HasTracer App where +-- tracerL = lens appTracer $ \x y -> x { appTracer = y } +-- +-- loadApp f = do +-- -- ... +-- withTracerProvider $ \tracerProvider -> do +-- let appTracer = makeTracer tracerProvider "my-app" tracerOptions +-- f App {..} +-- @ +-- +-- You may need to do this even if you don't plan to manually trace things, in order to +-- satisfy the 'MonadTracer' constraint required by functions like 'runDB'. If +-- you don't need this feature, and don't plan on running an otel-collector, set +-- @OTEL_TRACES_EXPORTER=none@ in the environment, which makes all tracing a +-- no-op. +-- +-- In the future, it should be possible to use @OTEL_SDK_DISABLED@ for the same +-- purpose. See . module Freckle.App.OpenTelemetry - ( MonadTracer (..) + ( HasTracer (..) + , Tracer + + -- * Effects + , MonadTracer (..) + , inSpan + , defaultSpanArguments + + -- * Querying + , getCurrentTraceId + + -- * Setup + , withTracerProvider + + -- ** 'Tracer' + , makeTracer + , tracerOptions ) where import Freckle.App.Prelude -import Network.AWS.XRayClient.WAI (XRayVaultData, vaultDataFromRequest) -import Yesod.Core (HandlerFor, waiRequest) +import OpenTelemetry.Context (lookupSpan) +import OpenTelemetry.Context.ThreadLocal (getContext) +import OpenTelemetry.Trace hiding (inSpan) +import OpenTelemetry.Trace.Core (getSpanContext) +import qualified OpenTelemetry.Trace.Core as Trace (SpanContext (..)) +import OpenTelemetry.Trace.Id (SpanId, TraceId) +import OpenTelemetry.Trace.Monad +import UnliftIO.Exception (bracket) --- | Class for reading 'XRayVaultData' --- --- This is named the same as the OpenTelemetry class we'll use once we move to --- that tracing system -class MonadTracer m where - getVaultData :: m (Maybe XRayVaultData) +withTracerProvider :: MonadUnliftIO m => (TracerProvider -> m a) -> m a +withTracerProvider = + bracket + (liftIO initializeGlobalTracerProvider) + (liftIO . shutdownTracerProvider) -instance MonadTracer (HandlerFor app) where - getVaultData = vaultDataFromRequest <$> waiRequest +getCurrentTraceId :: MonadIO m => m (Maybe (TraceId, SpanId)) +getCurrentTraceId = do + mSpan <- lookupSpan <$> getContext + traverse (fmap (Trace.traceId &&& Trace.spanId) . getSpanContext) mSpan diff --git a/library/Freckle/App/Test.hs b/library/Freckle/App/Test.hs index 3a640404..329b55a9 100644 --- a/library/Freckle/App/Test.hs +++ b/library/Freckle/App/Test.hs @@ -36,6 +36,7 @@ import Test.Hspec as X import Test.Hspec.Expectations.Lifted as X hiding (expectationFailure) import Blammo.Logging +import Control.Lens (view) import Control.Monad.Base import Control.Monad.Catch import qualified Control.Monad.Fail as Fail @@ -45,6 +46,7 @@ import Control.Monad.Random (MonadRandom (..)) import Control.Monad.Reader import Control.Monad.Trans.Control import Database.Persist.Sql (SqlPersistT, runSqlPool) +import qualified Freckle.App.Database.XRay as XRay import qualified Freckle.App.Dotenv as Dotenv import Freckle.App.OpenTelemetry import qualified Test.Hspec as Hspec hiding (expectationFailure) @@ -117,7 +119,10 @@ instance HasLogger app => Example (AppExample app a) where params ($ ()) -instance MonadTracer (AppExample app) where +instance HasTracer app => MonadTracer (AppExample app) where + getTracer = view tracerL + +instance XRay.MonadTracer (AppExample app) where getVaultData = pure Nothing -- | A type restricted version of id diff --git a/library/Freckle/App/Wai.hs b/library/Freckle/App/Wai.hs index 1edb020a..b3741d76 100644 --- a/library/Freckle/App/Wai.hs +++ b/library/Freckle/App/Wai.hs @@ -10,6 +10,9 @@ module Freckle.App.Wai , requestLogger , addThreadContextFromRequest + -- * Tracing + , newOpenTelemetryWaiMiddleware + -- * Metrics , addThreadContextFromStatsTags , requestStats @@ -19,6 +22,7 @@ import Network.Wai import Network.Wai.Middleware.AddHeaders import Network.Wai.Middleware.Cors import Network.Wai.Middleware.Logging +import Network.Wai.Middleware.OpenTelemetry import Network.Wai.Middleware.Stats -- | Middleware that adds header to disable all caching diff --git a/library/Network/Wai/Middleware/OpenTelemetry.hs b/library/Network/Wai/Middleware/OpenTelemetry.hs new file mode 100644 index 00000000..620706cd --- /dev/null +++ b/library/Network/Wai/Middleware/OpenTelemetry.hs @@ -0,0 +1,66 @@ +module Network.Wai.Middleware.OpenTelemetry + ( newOpenTelemetryWaiMiddleware + , openTelemetryMiddleware + + -- * Exported for testing + , ddTraceId + ) where + +import Freckle.App.Prelude + +import Blammo.Logging (withThreadContext, (.=)) +import Data.Bits (Bits (shift)) +import qualified Data.ByteString.Char8 as BS8 +import qualified Data.ByteString.Short.Internal as SBI +import Data.Primitive.ByteArray (ByteArray (ByteArray), indexByteArray) +import Data.Word (Word64, Word8) +import Freckle.App.OpenTelemetry +import Network.Wai +import Network.Wai.Middleware.AddHeaders +import qualified OpenTelemetry.Instrumentation.Wai as Trace +import OpenTelemetry.Trace.Id (TraceId, traceIdBytes) + +newOpenTelemetryWaiMiddleware :: IO Middleware +newOpenTelemetryWaiMiddleware = do + otel <- Trace.newOpenTelemetryWaiMiddleware + pure $ otel . openTelemetryMiddleware + +-- | Add 'TraceId' information to context and responses +-- +-- - Adds @trace_id@ to the logging context +-- - Adds @X-Datadog-TraceId@ to response headers +-- +-- This is added automatically by our 'newOpenTelemetryWaiMiddleware'. +openTelemetryMiddleware :: Middleware +openTelemetryMiddleware app request respond = do + mTraceId <- getCurrentTraceId + case mTraceId of + Nothing -> app request respond + Just (traceId, _) -> do + let + traceIdInt = ddTraceId traceId + traceIdIntBS = BS8.pack $ show traceIdInt + + withThreadContext ["trace_id" .= traceIdInt] $ + addHeaders + [("X-Datadog-Trace-Id", traceIdIntBS)] + app + request + respond + +-- | +ddTraceId :: TraceId -> Word64 +ddTraceId traceId = indexByteArrayNbo (ByteArray a) 1 + where + !(SBI.SBS a) = SBI.toShort $ traceIdBytes traceId + +-- | +indexByteArrayNbo :: ByteArray -> Int -> Word64 +indexByteArrayNbo ba offset = loop 0 0 + where + loop 8 acc = acc + loop n acc = + loop (n + 1) $ + shift acc 8 + + fromIntegral @Word8 @Word64 + (indexByteArray ba $ 8 * offset + n) diff --git a/package.yaml b/package.yaml index ea7423b9..673f634a 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: freckle-app -version: 1.9.5.1 +version: 1.10.0.0 maintainer: Freckle Education category: Utils github: freckle/freckle-app @@ -94,6 +94,10 @@ library: - extra - filepath - hashable + - hs-opentelemetry-api + - hs-opentelemetry-instrumentation-persistent + - hs-opentelemetry-instrumentation-wai + - hs-opentelemetry-sdk - hspec >= 2.8.1 - hspec-core >= 2.8.1 - hspec-expectations-lifted @@ -116,8 +120,8 @@ library: - persistent-postgresql - postgresql-simple - primitive - - resourcet - resource-pool + - resourcet - retry >= 0.8.1.0 # retryingDynamic - safe - scientist @@ -153,6 +157,7 @@ tests: - conduit - errors - freckle-app + - hs-opentelemetry-api - hspec - http-types - lens diff --git a/tests/Network/Wai/Middleware/OpenTelemetrySpec.hs b/tests/Network/Wai/Middleware/OpenTelemetrySpec.hs new file mode 100644 index 00000000..93cca92f --- /dev/null +++ b/tests/Network/Wai/Middleware/OpenTelemetrySpec.hs @@ -0,0 +1,21 @@ +{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} + +module Network.Wai.Middleware.OpenTelemetrySpec + ( spec + ) where + +import Freckle.App.Prelude + +import Network.Wai.Middleware.OpenTelemetry (ddTraceId) +import OpenTelemetry.Trace.Id (Base(Base16), baseEncodedToTraceId) +import Test.Hspec + +spec :: Spec +spec = do + describe "ddTraceId" $ do + it "converts correctly to Word64" $ do + let + Right traceId = + baseEncodedToTraceId Base16 "4e2ef0fa8943f417f6209f2b6f6ddcea" + -- Example taken from a real test trace + ddTraceId traceId `shouldBe` 17735350341486894314 From de584ef936486e27dcd678fb5a961d06989c213e Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Fri, 22 Sep 2023 14:26:33 -0400 Subject: [PATCH 02/18] Remove unnecessary bcp47 extra-dep --- stack.yaml | 1 - stack.yaml.lock | 7 ------- 2 files changed, 8 deletions(-) diff --git a/stack.yaml b/stack.yaml index d33cac6d..dc1604ac 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,6 +1,5 @@ resolver: lts-20.20 extra-deps: - - bcp47-0.2.0.6 - monad-validate-1.2.0.1 # For OTel diff --git a/stack.yaml.lock b/stack.yaml.lock index a3961711..d7429c0f 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -4,13 +4,6 @@ # https://docs.haskellstack.org/en/stable/lock_files packages: -- completed: - hackage: bcp47-0.2.0.6@sha256:9071d1f97ef249ae62e4554e3cba892cd6059ac263271fd72635157c83743a30,2949 - pantry-tree: - sha256: 3cd17d04bc9d13c8ba7e8e390973fce7d79003b18379533c8ce702f9ad3f82b3 - size: 1498 - original: - hackage: bcp47-0.2.0.6 - completed: hackage: monad-validate-1.2.0.1@sha256:5a100da896f11ca4b7c123da85decbedeb46c37054a097f258ac911e715cb68d,2587 pantry-tree: From 4f383628f1fd45e5d9540982757c85e4456d31d1 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Fri, 22 Sep 2023 14:27:15 -0400 Subject: [PATCH 03/18] Update to latest monad-validate extra-dep --- stack.yaml | 2 +- stack.yaml.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stack.yaml b/stack.yaml index dc1604ac..7fed681e 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,6 +1,6 @@ resolver: lts-20.20 extra-deps: - - monad-validate-1.2.0.1 + - monad-validate-1.3.0.0 # For OTel - hs-opentelemetry-api-0.0.3.6 diff --git a/stack.yaml.lock b/stack.yaml.lock index d7429c0f..3843da65 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -5,12 +5,12 @@ packages: - completed: - hackage: monad-validate-1.2.0.1@sha256:5a100da896f11ca4b7c123da85decbedeb46c37054a097f258ac911e715cb68d,2587 + hackage: monad-validate-1.3.0.0@sha256:eb6ddd5c9cf72ff0563cba604fa00291376e96138fdb4932d00ff3a99d66706e,2605 pantry-tree: - sha256: 034ee4de9765e38b763f5d73b236cc112205728e680cefbfe12d2882accc3264 + sha256: 0b2a3a57be48fcc739708b214fca202f1e95b1cd773dd3bb9589d3007cf8cf5e size: 611 original: - hackage: monad-validate-1.2.0.1 + hackage: monad-validate-1.3.0.0 - completed: hackage: hs-opentelemetry-api-0.0.3.6@sha256:76345dca8efda3040f58e85fa8b17264505177928bd035936132448715437a7c,3428 pantry-tree: From e1d897fd7269ae9d788018be9dbd0d5cbee12ee9 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Fri, 22 Sep 2023 14:32:13 -0400 Subject: [PATCH 04/18] Document extra-dep chains --- stack.yaml | 17 +++++++++++------ stack.yaml.lock | 37 +++++++++++++++---------------------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/stack.yaml b/stack.yaml index 7fed681e..c4144bdb 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,15 +1,20 @@ resolver: lts-20.20 extra-deps: - monad-validate-1.3.0.0 - - # For OTel - hs-opentelemetry-api-0.0.3.6 - - hs-opentelemetry-awsxray-0.1.0.1 - - hs-opentelemetry-exporter-otlp-0.0.1.4 - hs-opentelemetry-instrumentation-persistent-0.0.1.0 - hs-opentelemetry-instrumentation-wai-0.0.1.3 - - hs-opentelemetry-otlp-0.0.1.0 - - hs-opentelemetry-propagator-w3c-0.0.1.2 - hs-opentelemetry-sdk-0.0.3.4 + + # for hs-opentelemetry-sdk + - hs-opentelemetry-exporter-otlp-0.0.1.4 + - hs-opentelemetry-propagator-w3c-0.0.1.2 + + # for hs-opentelemetry-exporter-otlp + - hs-opentelemetry-otlp-0.0.1.0 + + # for hs-opentelemetry-api - thread-utils-context-0.2.0.0 + + # for thread-utils-context - thread-utils-finalizers-0.1.0.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index 3843da65..17ddc79f 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -18,20 +18,6 @@ packages: size: 2907 original: hackage: hs-opentelemetry-api-0.0.3.6 -- completed: - hackage: hs-opentelemetry-awsxray-0.1.0.1@sha256:dec49a81296c91a64a5a7037ac967c0f952974eed6c92de56e58b0eef58561c1,3602 - pantry-tree: - sha256: 0388ea8f8cb3761fb719316b69ebe663c7c978053de231a0aafc305ee43c3e06 - size: 977 - original: - hackage: hs-opentelemetry-awsxray-0.1.0.1 -- completed: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4@sha256:25fcf5c2173f1dd3fe4f288f3232da70e9d8398363430932b7e2a278f78c3765,2150 - pantry-tree: - sha256: 6d2ae7125938614e10d01b317d10bfd4575bb62889360c4476dda2b904766cda - size: 400 - original: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4 - completed: hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0@sha256:5963e5bf98ccf73543955ebd523c2a4776f7e6a2edf0feabbc44664153662caf,1669 pantry-tree: @@ -47,12 +33,19 @@ packages: original: hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 - completed: - hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 + hackage: hs-opentelemetry-sdk-0.0.3.4@sha256:b33cb9e705ea3c591df324976d47ae2b11087af6a0533221840cec2a929db331,3638 pantry-tree: - sha256: e56292fc693805babed3c7ba7fc54e59d2e9adbc38de6bcc659009e8b10b9a1b - size: 2252 + sha256: 7445b1dbd5c88677567712bb9cc4e2caa9ef3923662a2afcbad959c22c9b295e + size: 1430 original: - hackage: hs-opentelemetry-otlp-0.0.1.0 + hackage: hs-opentelemetry-sdk-0.0.3.4 +- completed: + hackage: hs-opentelemetry-exporter-otlp-0.0.1.4@sha256:25fcf5c2173f1dd3fe4f288f3232da70e9d8398363430932b7e2a278f78c3765,2150 + pantry-tree: + sha256: 6d2ae7125938614e10d01b317d10bfd4575bb62889360c4476dda2b904766cda + size: 400 + original: + hackage: hs-opentelemetry-exporter-otlp-0.0.1.4 - completed: hackage: hs-opentelemetry-propagator-w3c-0.0.1.2@sha256:ba1e33ff73bec76ec53b049b0cb3d1a65a6849a60c0da08bbef308f0edc241d1,1751 pantry-tree: @@ -61,12 +54,12 @@ packages: original: hackage: hs-opentelemetry-propagator-w3c-0.0.1.2 - completed: - hackage: hs-opentelemetry-sdk-0.0.3.4@sha256:b33cb9e705ea3c591df324976d47ae2b11087af6a0533221840cec2a929db331,3638 + hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: - sha256: 7445b1dbd5c88677567712bb9cc4e2caa9ef3923662a2afcbad959c22c9b295e - size: 1430 + sha256: e56292fc693805babed3c7ba7fc54e59d2e9adbc38de6bcc659009e8b10b9a1b + size: 2252 original: - hackage: hs-opentelemetry-sdk-0.0.3.4 + hackage: hs-opentelemetry-otlp-0.0.1.0 - completed: hackage: thread-utils-context-0.2.0.0@sha256:7863e568c7a43cd21616342d20484d4c962aaa9710619f104c6fb7ee32273940,1883 pantry-tree: From 97b75774e42e51e36e0ea529b9d5fb7edfc91bc6 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Fri, 22 Sep 2023 14:35:18 -0400 Subject: [PATCH 05/18] Update to latest hs-opentelemetry packages --- library/Freckle/App/Database.hs | 2 +- stack.yaml | 17 ++++----- stack.yaml.lock | 61 ++++++++++++++++++--------------- 3 files changed, 44 insertions(+), 36 deletions(-) diff --git a/library/Freckle/App/Database.hs b/library/Freckle/App/Database.hs index d5c45c98..1911b66a 100644 --- a/library/Freckle/App/Database.hs +++ b/library/Freckle/App/Database.hs @@ -102,7 +102,7 @@ runDB action = do inSpan "runDB" defaultSpanArguments $ runSqlPoolWithExtensibleHooks action pool Nothing $ setAlterBackend defaultSqlPoolHooks $ - wrapSqlBackend [] + wrapSqlBackend mempty runDBSimple :: (HasSqlPool app, MonadUnliftIO m, MonadReader app m) diff --git a/stack.yaml b/stack.yaml index c4144bdb..785bc80b 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,20 +1,21 @@ resolver: lts-20.20 extra-deps: - monad-validate-1.3.0.0 - - hs-opentelemetry-api-0.0.3.6 - - hs-opentelemetry-instrumentation-persistent-0.0.1.0 - - hs-opentelemetry-instrumentation-wai-0.0.1.3 - - hs-opentelemetry-sdk-0.0.3.4 + - hs-opentelemetry-api-0.1.0.0 + - hs-opentelemetry-instrumentation-persistent-0.1.0.0 + - hs-opentelemetry-instrumentation-wai-0.1.0.0 + - hs-opentelemetry-sdk-0.0.3.6 # for hs-opentelemetry-sdk - - hs-opentelemetry-exporter-otlp-0.0.1.4 - - hs-opentelemetry-propagator-w3c-0.0.1.2 + - hs-opentelemetry-exporter-otlp-0.0.1.5 + - hs-opentelemetry-propagator-b3-0.0.1.1 + - hs-opentelemetry-propagator-w3c-0.0.1.3 # for hs-opentelemetry-exporter-otlp - hs-opentelemetry-otlp-0.0.1.0 # for hs-opentelemetry-api - - thread-utils-context-0.2.0.0 + - thread-utils-context-0.3.0.4 # for thread-utils-context - - thread-utils-finalizers-0.1.0.0 + - thread-utils-finalizers-0.1.1.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index 17ddc79f..a63dfbf2 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -12,47 +12,54 @@ packages: original: hackage: monad-validate-1.3.0.0 - completed: - hackage: hs-opentelemetry-api-0.0.3.6@sha256:76345dca8efda3040f58e85fa8b17264505177928bd035936132448715437a7c,3428 + hackage: hs-opentelemetry-api-0.1.0.0@sha256:8af01d0c81dd1af6d3293b105178fd9bfa0057c9eb88ac24d3c440bff660abe3,3705 pantry-tree: - sha256: 6bcb617406e61a2fa68ebc313fad675671ac8acb57a144da41201fa1a75cdaa3 - size: 2907 + sha256: 7c332e7241636097fe199bd87f57db333830bed416296e7ebf944497557f46be + size: 3221 original: - hackage: hs-opentelemetry-api-0.0.3.6 + hackage: hs-opentelemetry-api-0.1.0.0 - completed: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0@sha256:5963e5bf98ccf73543955ebd523c2a4776f7e6a2edf0feabbc44664153662caf,1669 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0@sha256:920e078b1bc141527a10c547e887ddb8d6295b216c49c8d1fe94f243d832eff9,1824 pantry-tree: - sha256: 0cf9da228de66c804c8f945cc90301aa76b85d872011afb0bcaf02569c7b0903 - size: 424 + sha256: 27f0fef99e1c6b58d7fa4a5a3119df612c7ac0687723dbd5cc200747c9fe1829 + size: 426 original: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0 - completed: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3@sha256:417c714052ee94b8b6a7f2b303ee92908c232f6d44a1a1c6232acf17434be753,1767 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0@sha256:6019cf031b3edec6ff0ace0df4c2e41358b9e5d939e6c326e4e1df50726348ee,1852 pantry-tree: - sha256: c1fa4fee66d3cb299276e2a32d1d027ac26ab9a354665e7bc95f6e163922194d + sha256: affe8d2c4c55181c84fc74abef68fde5c11a99581fd29a97e6a8a9fd1e016a43 size: 411 original: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0 - completed: - hackage: hs-opentelemetry-sdk-0.0.3.4@sha256:b33cb9e705ea3c591df324976d47ae2b11087af6a0533221840cec2a929db331,3638 + hackage: hs-opentelemetry-sdk-0.0.3.6@sha256:6776705a4e0c06c6a4bfa16a9bed3ba353901f52d214ac737f57ea7f8e1ed465,3746 pantry-tree: - sha256: 7445b1dbd5c88677567712bb9cc4e2caa9ef3923662a2afcbad959c22c9b295e + sha256: 154663d933a44c350db6c98d2c14db192c14fd04a10c17d0ebb8090707bd359b size: 1430 original: - hackage: hs-opentelemetry-sdk-0.0.3.4 + hackage: hs-opentelemetry-sdk-0.0.3.6 - completed: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4@sha256:25fcf5c2173f1dd3fe4f288f3232da70e9d8398363430932b7e2a278f78c3765,2150 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5@sha256:89b0a6481096a338fa6383fbdf08ccaa0eb7bb009c4cbb340894eac33e55c5de,2214 pantry-tree: - sha256: 6d2ae7125938614e10d01b317d10bfd4575bb62889360c4476dda2b904766cda + sha256: 744146043f5818ad2b7577a32862affcbf6ed400b097723eae9f6941d739365e size: 400 original: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5 - completed: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2@sha256:ba1e33ff73bec76ec53b049b0cb3d1a65a6849a60c0da08bbef308f0edc241d1,1751 + hackage: hs-opentelemetry-propagator-b3-0.0.1.1@sha256:f0e9da77a888b89f81e5f5186788d5ace2a665e8914f6b446712a1c2edf17743,1854 pantry-tree: - sha256: 3f3a81317fe511bf11191d6ea186d7c98c7fd794b32cc358606ee681637b2a0e + sha256: 7ed0b0433837946d86f2ab364ef284dfc17fdcef9b4ea5fc48577a9441deeade + size: 482 + original: + hackage: hs-opentelemetry-propagator-b3-0.0.1.1 +- completed: + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3@sha256:5dc2dbdd6b0a4e434ca5fd949e9ebe5611a5d513ef58009b935e9e810cc85d1b,1852 + pantry-tree: + sha256: 84a8e40facf8df13084682a6e4852d940acc9d9abeaf2d716dbc9415258f4cc5 size: 496 original: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2 + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3 - completed: hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: @@ -61,19 +68,19 @@ packages: original: hackage: hs-opentelemetry-otlp-0.0.1.0 - completed: - hackage: thread-utils-context-0.2.0.0@sha256:7863e568c7a43cd21616342d20484d4c962aaa9710619f104c6fb7ee32273940,1883 + hackage: thread-utils-context-0.3.0.4@sha256:e763da1c6cab3b6d378fb670ca74aa9bf03c9b61b6fcf7628c56363fb0e3e71e,1671 pantry-tree: - sha256: 605ea068880ad39c96fce0d91db9f2d54553ed43dfc41c37845fade8be2e9568 - size: 450 + sha256: 57d909a991b5e0b4c7a28121cb52ee9c2db6c09e0419b89af6c82fae52be88d4 + size: 397 original: - hackage: thread-utils-context-0.2.0.0 + hackage: thread-utils-context-0.3.0.4 - completed: - hackage: thread-utils-finalizers-0.1.0.0@sha256:a8435240bfc0ae96c94704d2986699a11a395c496f9a7f2e5f5d729a0b967549,1381 + hackage: thread-utils-finalizers-0.1.1.0@sha256:24944b71d9f1d01695a5908b4a3b44838fab870883114a323336d537995e0a5b,1381 pantry-tree: - sha256: 7f708d158d5d0e32ffe77f6375a792ceb6f92e4d8dd8b32fc69e7de962e7e518 + sha256: 8c2c2e2e22c20bf3696ee6f30b50b3a9eeae187a22beb536441eefb0a3f9c549 size: 400 original: - hackage: thread-utils-finalizers-0.1.0.0 + hackage: thread-utils-finalizers-0.1.1.0 snapshots: - completed: sha256: 126fa33ceb11f5e85ceb4e86d434756bd9a8439e2e5776d306a15fbc63b01e89 From 1b8433151c017eafbe2dab4d8b750fa47d0c7fc7 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Fri, 22 Sep 2023 15:58:23 -0400 Subject: [PATCH 06/18] Stop re-exporting Freckle.App.Database This makes it harder for clients to decide between the default OTel tracing vs XRay-based. It was always a bit too opinionated anyway. Having to bring in the Database module only if/when you need it is kind of nice anyway. --- library/Freckle/App.hs | 7 +++++-- library/Freckle/App/Test.hs | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/library/Freckle/App.hs b/library/Freckle/App.hs index 0b69f402..080ae787 100644 --- a/library/Freckle/App.hs +++ b/library/Freckle/App.hs @@ -67,6 +67,11 @@ -- -- == Database -- +-- @ +-- import "Freckle.App.Database" +-- import "Freckle.App.OpenTelemetry" +-- @ +-- -- Adding Database access requires a few more instances on your @App@ type: -- -- - @'HasSqlPool'@: so we can, you know, talk to a DB @@ -170,8 +175,6 @@ module Freckle.App , runAppT -- * Re-exports - , module Freckle.App.Database - , module Freckle.App.OpenTelemetry , module Blammo.Logging , module Control.Monad.Reader ) where diff --git a/library/Freckle/App/Test.hs b/library/Freckle/App/Test.hs index 329b55a9..38019552 100644 --- a/library/Freckle/App/Test.hs +++ b/library/Freckle/App/Test.hs @@ -20,7 +20,6 @@ module Freckle.App.Test import Freckle.App.Prelude as X import Data.Pool as X -import Freckle.App.Database as X import Test.Hspec as X ( Expectation , Spec @@ -46,6 +45,7 @@ import Control.Monad.Random (MonadRandom (..)) import Control.Monad.Reader import Control.Monad.Trans.Control import Database.Persist.Sql (SqlPersistT, runSqlPool) +import Freckle.App.Database (HasSqlPool (..)) import qualified Freckle.App.Database.XRay as XRay import qualified Freckle.App.Dotenv as Dotenv import Freckle.App.OpenTelemetry From b3931ba5d7839ef015b8ce307ff6edd93e10a106 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Fri, 22 Sep 2023 15:59:14 -0400 Subject: [PATCH 07/18] Align the export list between Database{.XRay} modules --- library/Freckle/App/Database.hs | 8 +++----- library/Freckle/App/Database/XRay.hs | 14 +++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/library/Freckle/App/Database.hs b/library/Freckle/App/Database.hs index 1911b66a..069b9709 100644 --- a/library/Freckle/App/Database.hs +++ b/library/Freckle/App/Database.hs @@ -4,7 +4,9 @@ -- | Database access for your @App@ module Freckle.App.Database - ( HasSqlPool (..) + ( MonadTracer + , HasStatsClient + , HasSqlPool (..) , SqlPool , makePostgresPool , makePostgresPoolWith @@ -17,10 +19,6 @@ module Freckle.App.Database , postgresStatementTimeoutMilliseconds , envParseDatabaseConf , envPostgresPasswordSource - - -- * Re-exported constraints required to use 'runDB' - , MonadTracer - , HasStatsClient ) where import Freckle.App.Prelude diff --git a/library/Freckle/App/Database/XRay.hs b/library/Freckle/App/Database/XRay.hs index 0c54d05b..d5dee7ff 100644 --- a/library/Freckle/App/Database/XRay.hs +++ b/library/Freckle/App/Database/XRay.hs @@ -4,8 +4,20 @@ -- | Legacy version of "Freckle.App.Database" that still uses XRay module Freckle.App.Database.XRay ( MonadTracer (..) + , HasStatsClient + , HasSqlPool (..) + , SqlPool + , makePostgresPool + , makePostgresPoolWith , runDB - , module Freckle.App.Database + , runDBSimple + , PostgresConnectionConf (..) + , PostgresPasswordSource (..) + , PostgresPassword (..) + , PostgresStatementTimeout + , postgresStatementTimeoutMilliseconds + , envParseDatabaseConf + , envPostgresPasswordSource ) where import Freckle.App.Prelude From 48880e712034da8f4332f233c50dfbf42a4f450b Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 09:13:50 -0400 Subject: [PATCH 08/18] Use upstream for DD trace-id conversion --- freckle-app.cabal | 3 +- .../Network/Wai/Middleware/OpenTelemetry.hs | 30 +++---------------- package.yaml | 2 +- stack.yaml | 6 ++++ stack.yaml.lock | 13 ++++++++ .../Wai/Middleware/OpenTelemetrySpec.hs | 21 ------------- 6 files changed, 25 insertions(+), 50 deletions(-) delete mode 100644 tests/Network/Wai/Middleware/OpenTelemetrySpec.hs diff --git a/freckle-app.cabal b/freckle-app.cabal index d37d5027..e7c67880 100644 --- a/freckle-app.cabal +++ b/freckle-app.cabal @@ -131,6 +131,7 @@ library , hs-opentelemetry-api , hs-opentelemetry-instrumentation-persistent , hs-opentelemetry-instrumentation-wai + , hs-opentelemetry-propagator-datadog , hs-opentelemetry-sdk , hspec >=2.8.1 , hspec-core >=2.8.1 @@ -240,7 +241,6 @@ test-suite spec Freckle.App.Test.Properties.JSONSpec Freckle.App.Test.Properties.PathPieceSpec Freckle.App.WaiSpec - Network.Wai.Middleware.OpenTelemetrySpec Spec Paths_freckle_app hs-source-dirs: @@ -282,7 +282,6 @@ test-suite spec , conduit , errors , freckle-app - , hs-opentelemetry-api , hspec , http-types , lens diff --git a/library/Network/Wai/Middleware/OpenTelemetry.hs b/library/Network/Wai/Middleware/OpenTelemetry.hs index 620706cd..4cd30ac7 100644 --- a/library/Network/Wai/Middleware/OpenTelemetry.hs +++ b/library/Network/Wai/Middleware/OpenTelemetry.hs @@ -1,24 +1,19 @@ module Network.Wai.Middleware.OpenTelemetry ( newOpenTelemetryWaiMiddleware , openTelemetryMiddleware - - -- * Exported for testing - , ddTraceId ) where import Freckle.App.Prelude import Blammo.Logging (withThreadContext, (.=)) -import Data.Bits (Bits (shift)) import qualified Data.ByteString.Char8 as BS8 -import qualified Data.ByteString.Short.Internal as SBI -import Data.Primitive.ByteArray (ByteArray (ByteArray), indexByteArray) -import Data.Word (Word64, Word8) import Freckle.App.OpenTelemetry import Network.Wai import Network.Wai.Middleware.AddHeaders import qualified OpenTelemetry.Instrumentation.Wai as Trace -import OpenTelemetry.Trace.Id (TraceId, traceIdBytes) +import OpenTelemetry.Propagator.Datadog + ( convertOpenTelemetryTraceIdToDatadogTraceId + ) newOpenTelemetryWaiMiddleware :: IO Middleware newOpenTelemetryWaiMiddleware = do @@ -38,7 +33,7 @@ openTelemetryMiddleware app request respond = do Nothing -> app request respond Just (traceId, _) -> do let - traceIdInt = ddTraceId traceId + traceIdInt = convertOpenTelemetryTraceIdToDatadogTraceId traceId traceIdIntBS = BS8.pack $ show traceIdInt withThreadContext ["trace_id" .= traceIdInt] $ @@ -47,20 +42,3 @@ openTelemetryMiddleware app request respond = do app request respond - --- | -ddTraceId :: TraceId -> Word64 -ddTraceId traceId = indexByteArrayNbo (ByteArray a) 1 - where - !(SBI.SBS a) = SBI.toShort $ traceIdBytes traceId - --- | -indexByteArrayNbo :: ByteArray -> Int -> Word64 -indexByteArrayNbo ba offset = loop 0 0 - where - loop 8 acc = acc - loop n acc = - loop (n + 1) $ - shift acc 8 - + fromIntegral @Word8 @Word64 - (indexByteArray ba $ 8 * offset + n) diff --git a/package.yaml b/package.yaml index 673f634a..a960dbed 100644 --- a/package.yaml +++ b/package.yaml @@ -97,6 +97,7 @@ library: - hs-opentelemetry-api - hs-opentelemetry-instrumentation-persistent - hs-opentelemetry-instrumentation-wai + - hs-opentelemetry-propagator-datadog - hs-opentelemetry-sdk - hspec >= 2.8.1 - hspec-core >= 2.8.1 @@ -157,7 +158,6 @@ tests: - conduit - errors - freckle-app - - hs-opentelemetry-api - hspec - http-types - lens diff --git a/stack.yaml b/stack.yaml index 785bc80b..b6567e33 100644 --- a/stack.yaml +++ b/stack.yaml @@ -19,3 +19,9 @@ extra-deps: # for thread-utils-context - thread-utils-finalizers-0.1.1.0 + + # See https://github.com/iand675/hs-opentelemetry/issues/98 + - github: iand675/hs-opentelemetry + commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 + subdirs: + - propagators/datadog diff --git a/stack.yaml.lock b/stack.yaml.lock index a63dfbf2..bd0af2c1 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -81,6 +81,19 @@ packages: size: 400 original: hackage: thread-utils-finalizers-0.1.1.0 +- completed: + name: hs-opentelemetry-propagator-datadog + pantry-tree: + sha256: cab894439e1bbb20a9ef901c3ac14b519ccd74e2712789472564bccdaa67da78 + size: 683 + sha256: 53a6cd3a01447c9a41512de16c44a7f6ba3fde3fab61b765fcd22b6ac33a882e + size: 352144 + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz + version: 0.0.0.0 + original: + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz snapshots: - completed: sha256: 126fa33ceb11f5e85ceb4e86d434756bd9a8439e2e5776d306a15fbc63b01e89 diff --git a/tests/Network/Wai/Middleware/OpenTelemetrySpec.hs b/tests/Network/Wai/Middleware/OpenTelemetrySpec.hs deleted file mode 100644 index 93cca92f..00000000 --- a/tests/Network/Wai/Middleware/OpenTelemetrySpec.hs +++ /dev/null @@ -1,21 +0,0 @@ -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} - -module Network.Wai.Middleware.OpenTelemetrySpec - ( spec - ) where - -import Freckle.App.Prelude - -import Network.Wai.Middleware.OpenTelemetry (ddTraceId) -import OpenTelemetry.Trace.Id (Base(Base16), baseEncodedToTraceId) -import Test.Hspec - -spec :: Spec -spec = do - describe "ddTraceId" $ do - it "converts correctly to Word64" $ do - let - Right traceId = - baseEncodedToTraceId Base16 "4e2ef0fa8943f417f6209f2b6f6ddcea" - -- Example taken from a real test trace - ddTraceId traceId `shouldBe` 17735350341486894314 From 0881eee8a78b2cac7f970fba0199c539f82d6643 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 09:15:56 -0400 Subject: [PATCH 09/18] Clarify naming in OTel query function --- library/Freckle/App/OpenTelemetry.hs | 12 ++++++++---- library/Network/Wai/Middleware/OpenTelemetry.hs | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/library/Freckle/App/OpenTelemetry.hs b/library/Freckle/App/OpenTelemetry.hs index d09f48e5..2dab1499 100644 --- a/library/Freckle/App/OpenTelemetry.hs +++ b/library/Freckle/App/OpenTelemetry.hs @@ -35,6 +35,7 @@ module Freckle.App.OpenTelemetry -- * Querying , getCurrentTraceId + , getCurrentSpanContext -- * Setup , withTracerProvider @@ -51,7 +52,7 @@ import OpenTelemetry.Context.ThreadLocal (getContext) import OpenTelemetry.Trace hiding (inSpan) import OpenTelemetry.Trace.Core (getSpanContext) import qualified OpenTelemetry.Trace.Core as Trace (SpanContext (..)) -import OpenTelemetry.Trace.Id (SpanId, TraceId) +import OpenTelemetry.Trace.Id (TraceId) import OpenTelemetry.Trace.Monad import UnliftIO.Exception (bracket) @@ -61,7 +62,10 @@ withTracerProvider = (liftIO initializeGlobalTracerProvider) (liftIO . shutdownTracerProvider) -getCurrentTraceId :: MonadIO m => m (Maybe (TraceId, SpanId)) -getCurrentTraceId = do +getCurrentTraceId :: MonadIO m => m (Maybe TraceId) +getCurrentTraceId = fmap Trace.traceId <$> getCurrentSpanContext + +getCurrentSpanContext :: MonadIO m => m (Maybe SpanContext) +getCurrentSpanContext = do mSpan <- lookupSpan <$> getContext - traverse (fmap (Trace.traceId &&& Trace.spanId) . getSpanContext) mSpan + traverse getSpanContext mSpan diff --git a/library/Network/Wai/Middleware/OpenTelemetry.hs b/library/Network/Wai/Middleware/OpenTelemetry.hs index 4cd30ac7..ea2f37a8 100644 --- a/library/Network/Wai/Middleware/OpenTelemetry.hs +++ b/library/Network/Wai/Middleware/OpenTelemetry.hs @@ -31,7 +31,7 @@ openTelemetryMiddleware app request respond = do mTraceId <- getCurrentTraceId case mTraceId of Nothing -> app request respond - Just (traceId, _) -> do + Just traceId -> do let traceIdInt = convertOpenTelemetryTraceIdToDatadogTraceId traceId traceIdIntBS = BS8.pack $ show traceIdInt From 337c833d72ba2397e8b420c91b7cd3ebc4eddb1c Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 09:17:05 -0400 Subject: [PATCH 10/18] Tweak CHANGELOG --- CHANGELOG.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5662432..a45c80dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,17 +5,13 @@ - Full support for OpenTelemetry tracing, use it instead of XRay in `runDB` This replaces our bespoke, XRay-based `MonadTracer` class to be that of - hs-opentelemetry. This means `Freckle.App.Database.runDB` now traces using + `hs-opentelemetry.` This means `Freckle.App.Database.runDB` now traces using OpenTelemetry instead of XRay. A compilation error will indicate a missing `HasTracer` instance, which you should implement based on the `Freckle.App.OpenTelemetry` module documentation. Clients who wish to remain on XRay can still upgrade, but must adjust their - imports so they use `Freckle.App.Database.XRay` instead. The - `Freckle.App.Database` module is re-exported through `Freckle.App` and - `Freckle.App.Test`, so there may be some additional `hiding` required. A - compilation error indicating a missing `HasTracer` or `MonadTracer` instance - means your imports are not yet correct. + imports so they use `Freckle.App.Database.XRay`, not `Freckle.App.Database`. ## [v1.9.5.1](https://github.com/freckle/freckle-app/compare/v1.9.5.0...v1.9.5.1) From 88f120ada833a9fc86cb6bedc7f18681ce6cc86b Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 09:23:49 -0400 Subject: [PATCH 11/18] Propagate (get it) extra-dep throughout --- stack-lts-18.28.yaml | 4 +++ stack-lts-18.28.yaml.lock | 27 ++++++++++++++ stack-lts-19.33.yaml | 4 +++ stack-lts-19.33.yaml.lock | 76 +++++++++++++++++++++++++++++++++++++++ stack-nightly.yaml | 4 +++ stack-nightly.yaml.lock | 20 +++++++++++ 6 files changed, 135 insertions(+) diff --git a/stack-lts-18.28.yaml b/stack-lts-18.28.yaml index 059e42d7..9f686972 100644 --- a/stack-lts-18.28.yaml +++ b/stack-lts-18.28.yaml @@ -33,3 +33,7 @@ extra-deps: - random-1.2.1 - thread-utils-context-0.2.0.0 - thread-utils-finalizers-0.1.0.0 + - github: iand675/hs-opentelemetry + commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 + subdirs: + - propagators/datadog diff --git a/stack-lts-18.28.yaml.lock b/stack-lts-18.28.yaml.lock index 6bdc26b2..aaaf556c 100644 --- a/stack-lts-18.28.yaml.lock +++ b/stack-lts-18.28.yaml.lock @@ -32,6 +32,13 @@ packages: size: 248 original: hackage: aws-xray-client-wai-0.1.0.2 +- completed: + hackage: bcp47-0.2.0.6@sha256:9071d1f97ef249ae62e4554e3cba892cd6059ac263271fd72635157c83743a30,2949 + pantry-tree: + sha256: 3cd17d04bc9d13c8ba7e8e390973fce7d79003b18379533c8ce702f9ad3f82b3 + size: 1498 + original: + hackage: bcp47-0.2.0.6 - completed: hackage: bugsnag-1.0.0.0@sha256:0b5454bbf8527fc6e7f6fdbd4f21e0c1ce0387b690ee59175470d648f49a8cdc,4434 pantry-tree: @@ -144,6 +151,13 @@ packages: size: 424 original: hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0 +- completed: + hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3@sha256:417c714052ee94b8b6a7f2b303ee92908c232f6d44a1a1c6232acf17434be753,1767 + pantry-tree: + sha256: c1fa4fee66d3cb299276e2a32d1d027ac26ab9a354665e7bc95f6e163922194d + size: 411 + original: + hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 - completed: hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: @@ -200,6 +214,19 @@ packages: size: 400 original: hackage: thread-utils-finalizers-0.1.0.0 +- completed: + name: hs-opentelemetry-propagator-datadog + pantry-tree: + sha256: cab894439e1bbb20a9ef901c3ac14b519ccd74e2712789472564bccdaa67da78 + size: 683 + sha256: 53a6cd3a01447c9a41512de16c44a7f6ba3fde3fab61b765fcd22b6ac33a882e + size: 352144 + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz + version: 0.0.0.0 + original: + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz snapshots: - completed: sha256: 428ec8d5ce932190d3cbe266b9eb3c175cd81e984babf876b64019e2cbe4ea68 diff --git a/stack-lts-19.33.yaml b/stack-lts-19.33.yaml index 7fe5f46b..28efba8c 100644 --- a/stack-lts-19.33.yaml +++ b/stack-lts-19.33.yaml @@ -24,6 +24,10 @@ extra-deps: - hs-opentelemetry-sdk-0.0.3.4 - thread-utils-context-0.2.0.0 - thread-utils-finalizers-0.1.0.0 + - github: iand675/hs-opentelemetry + commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 + subdirs: + - propagators/datadog # for bcp47 - bcp47-0.2.0.6 diff --git a/stack-lts-19.33.yaml.lock b/stack-lts-19.33.yaml.lock index c00c1aa8..602169e2 100644 --- a/stack-lts-19.33.yaml.lock +++ b/stack-lts-19.33.yaml.lock @@ -109,6 +109,13 @@ packages: size: 424 original: hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0 +- completed: + hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3@sha256:417c714052ee94b8b6a7f2b303ee92908c232f6d44a1a1c6232acf17434be753,1767 + pantry-tree: + sha256: c1fa4fee66d3cb299276e2a32d1d027ac26ab9a354665e7bc95f6e163922194d + size: 411 + original: + hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 - completed: hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: @@ -144,6 +151,75 @@ packages: size: 400 original: hackage: thread-utils-finalizers-0.1.0.0 +- completed: + name: hs-opentelemetry-propagator-datadog + pantry-tree: + sha256: cab894439e1bbb20a9ef901c3ac14b519ccd74e2712789472564bccdaa67da78 + size: 683 + sha256: 53a6cd3a01447c9a41512de16c44a7f6ba3fde3fab61b765fcd22b6ac33a882e + size: 352144 + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz + version: 0.0.0.0 + original: + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz +- completed: + hackage: bcp47-0.2.0.6@sha256:9071d1f97ef249ae62e4554e3cba892cd6059ac263271fd72635157c83743a30,2949 + pantry-tree: + sha256: 3cd17d04bc9d13c8ba7e8e390973fce7d79003b18379533c8ce702f9ad3f82b3 + size: 1498 + original: + hackage: bcp47-0.2.0.6 +- completed: + hackage: country-0.2.2@sha256:681aabb9e0a8d2f94051d0ae566128458be3de4d0e0b6a9cf5875ce12ed403f5,3393 + pantry-tree: + sha256: e2222a7733da6f09432d1ddc688d7b30e95e77692527be6e15840d985aef0706 + size: 1396 + original: + hackage: country-0.2.2 +- completed: + hackage: bytebuild-0.3.10.0@sha256:c0f3bdbb92cfb48193756366c50193cde23aa7f8292994a9e3a744f5307c6fc1,3213 + pantry-tree: + sha256: 00da63e842faa2758fa08e1554f30f7cf69b4b1fc4ce84ebedff64542f1fd00f + size: 1135 + original: + hackage: bytebuild-0.3.10.0 +- completed: + hackage: bytehash-0.1.0.0@sha256:0f7b097d08aed28fa8ede710c73e3da86283f47af23b8d5afff8c9e94b05042d,2109 + pantry-tree: + sha256: 2db58d7929aed9f1cf31dd5b25fb613dd80bc06365fe83fffabd278d3339a372 + size: 587 + original: + hackage: bytehash-0.1.0.0 +- completed: + hackage: byteslice-0.2.7.0@sha256:c8fb65f507badda00bbb260433a9ccc439a5f694eedeaeed750b531a3b38a6bc,2514 + pantry-tree: + sha256: cacdc01255a549372ad8a58bfba4d559ce1e740d5228b3c60242152342184145 + size: 1546 + original: + hackage: byteslice-0.2.7.0 +- completed: + hackage: contiguous-0.6.1.1@sha256:10922abbdf6c61cb4a9e493609871c4fd0c47dcde17dba3a6b6c420ef76fc212,1871 + pantry-tree: + sha256: e17834983b11be7cf05fca6a139987bf970634bf8bcf31621cf09d92aaecdd85 + size: 600 + original: + hackage: contiguous-0.6.1.1 +- completed: + hackage: run-st-0.1.1.0@sha256:a1d0b946fe13ce2dab9efc0e79fab4ed8674363566dd2894501a1194f6279595,927 + pantry-tree: + sha256: b60bed7032d1cacbb53d86759fe7fbd0811bfe249f7a53a2ef51d61fec7ba8a5 + size: 269 + original: + hackage: run-st-0.1.1.0 +- completed: + hackage: zigzag-0.0.1.0@sha256:54baa181badcb470386af790e148483bd1d43951bb2b02ed0684d70aeb4c7395,1130 + pantry-tree: + sha256: 1da8b2de56acc92f20eca121c89bccbca472794603ca1152572b0ac51a8639f4 + size: 321 + original: + hackage: zigzag-0.0.1.0 snapshots: - completed: sha256: 6d1532d40621957a25bad5195bfca7938e8a06d923c91bc52aa0f3c41181f2d4 diff --git a/stack-nightly.yaml b/stack-nightly.yaml index 2270bf4d..bae134e3 100644 --- a/stack-nightly.yaml +++ b/stack-nightly.yaml @@ -14,3 +14,7 @@ extra-deps: - hs-opentelemetry-sdk-0.0.3.4 - thread-utils-context-0.2.0.0 - thread-utils-finalizers-0.1.0.0 + - github: iand675/hs-opentelemetry + commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 + subdirs: + - propagators/datadog diff --git a/stack-nightly.yaml.lock b/stack-nightly.yaml.lock index 3a26a31b..ec326218 100644 --- a/stack-nightly.yaml.lock +++ b/stack-nightly.yaml.lock @@ -4,6 +4,13 @@ # https://docs.haskellstack.org/en/stable/lock_files packages: +- completed: + hackage: bcp47-0.2.0.6@sha256:9071d1f97ef249ae62e4554e3cba892cd6059ac263271fd72635157c83743a30,2949 + pantry-tree: + sha256: 3cd17d04bc9d13c8ba7e8e390973fce7d79003b18379533c8ce702f9ad3f82b3 + size: 1498 + original: + hackage: bcp47-0.2.0.6 - completed: hackage: monad-validate-1.3.0.0@sha256:eb6ddd5c9cf72ff0563cba604fa00291376e96138fdb4932d00ff3a99d66706e,2605 pantry-tree: @@ -81,6 +88,19 @@ packages: size: 400 original: hackage: thread-utils-finalizers-0.1.0.0 +- completed: + name: hs-opentelemetry-propagator-datadog + pantry-tree: + sha256: cab894439e1bbb20a9ef901c3ac14b519ccd74e2712789472564bccdaa67da78 + size: 683 + sha256: 53a6cd3a01447c9a41512de16c44a7f6ba3fde3fab61b765fcd22b6ac33a882e + size: 352144 + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz + version: 0.0.0.0 + original: + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz snapshots: - completed: sha256: 859c14182cd0c4d1f9b0f7ff8baaefb15c778278fb0ea2fa90cfea326bb4e62c From e80ea2a4f01aafb64c3c0b253aa355f1bdee5493 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:19:30 -0400 Subject: [PATCH 12/18] Fix export error on base-4.18 --- library/Freckle/App/Prelude.hs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/Freckle/App/Prelude.hs b/library/Freckle/App/Prelude.hs index 8eb55253..1a009b2f 100644 --- a/library/Freckle/App/Prelude.hs +++ b/library/Freckle/App/Prelude.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE CPP #-} + -- | Those functions and types we can't do without! module Freckle.App.Prelude ( module Prelude @@ -102,6 +104,9 @@ import Prelude hiding , read , tail , (!!) +#if MIN_VERSION_base(4,18,0) + , liftA2 +#endif ) -- Commonly used types (and their commonly used functions) From 34c309aac4724cd6b6203eb72cd3ae2c1e9146e5 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:19:46 -0400 Subject: [PATCH 13/18] Set bound on hw-kafka-client --- freckle-app.cabal | 2 +- package.yaml | 2 +- stack-nightly.yaml | 21 ++++++++++++--------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/freckle-app.cabal b/freckle-app.cabal index e7c67880..3193e366 100644 --- a/freckle-app.cabal +++ b/freckle-app.cabal @@ -141,7 +141,7 @@ library , http-conduit >=2.3.5 , http-link-header , http-types - , hw-kafka-client + , hw-kafka-client <5.0.0 , immortal , lens , memcache diff --git a/package.yaml b/package.yaml index a960dbed..2df60da5 100644 --- a/package.yaml +++ b/package.yaml @@ -107,7 +107,7 @@ library: - http-conduit >= 2.3.5 # addToRequestQueryString - http-link-header - http-types - - hw-kafka-client + - hw-kafka-client < 5.0.0 - immortal - lens - memcache diff --git a/stack-nightly.yaml b/stack-nightly.yaml index bae134e3..bc493ef3 100644 --- a/stack-nightly.yaml +++ b/stack-nightly.yaml @@ -4,17 +4,20 @@ extra-deps: - monad-validate-1.3.0.0 # For OTel - - hs-opentelemetry-api-0.0.3.6 - - hs-opentelemetry-awsxray-0.1.0.1 - - hs-opentelemetry-exporter-otlp-0.0.1.4 - - hs-opentelemetry-instrumentation-persistent-0.0.1.0 - - hs-opentelemetry-instrumentation-wai-0.0.1.3 + - hs-opentelemetry-api-0.1.0.0 + - hs-opentelemetry-exporter-otlp-0.0.1.5 + - hs-opentelemetry-instrumentation-persistent-0.1.0.0 + - hs-opentelemetry-instrumentation-wai-0.1.0.0 - hs-opentelemetry-otlp-0.0.1.0 - - hs-opentelemetry-propagator-w3c-0.0.1.2 - - hs-opentelemetry-sdk-0.0.3.4 - - thread-utils-context-0.2.0.0 - - thread-utils-finalizers-0.1.0.0 + - hs-opentelemetry-propagator-b3-0.0.1.1 + - hs-opentelemetry-propagator-w3c-0.0.1.3 + - hs-opentelemetry-sdk-0.0.3.6 + - thread-utils-context-0.3.0.4 + - thread-utils-finalizers-0.1.1.0 - github: iand675/hs-opentelemetry commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 subdirs: - propagators/datadog + + # Will need to manage the breaking changes in 5.0 + - hw-kafka-client-4.0.3 From e902a469f14bce05676d4191d81ae1bb954dcd13 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:20:05 -0400 Subject: [PATCH 14/18] Fix deprecation error with resoure-pool-4.0 --- library/Freckle/App/Kafka/Producer.hs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/library/Freckle/App/Kafka/Producer.hs b/library/Freckle/App/Kafka/Producer.hs index 97f96638..034f190f 100644 --- a/library/Freckle/App/Kafka/Producer.hs +++ b/library/Freckle/App/Kafka/Producer.hs @@ -89,12 +89,13 @@ createKafkaProducerPool -> KafkaProducerPoolConfig -> IO (Pool KafkaProducer) createKafkaProducerPool addresses KafkaProducerPoolConfig {..} = - Pool.createPool - mkProducer - closeProducer - kafkaProducerPoolConfigStripes - kafkaProducerPoolConfigIdleTimeout - kafkaProducerPoolConfigSize + Pool.newPool $ + Pool.setNumStripes (Just kafkaProducerPoolConfigStripes) $ + Pool.defaultPoolConfig + mkProducer + closeProducer + (realToFrac kafkaProducerPoolConfigIdleTimeout) + kafkaProducerPoolConfigSize where mkProducer = either throw pure =<< newProducer (brokersList $ toList addresses) From 8a0039350c249fe3333d3e8328f7259d483f9e6d Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:20:40 -0400 Subject: [PATCH 15/18] fixup! Set bound on hw-kafka-client --- stack-nightly.yaml.lock | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/stack-nightly.yaml.lock b/stack-nightly.yaml.lock index ec326218..920114aa 100644 --- a/stack-nightly.yaml.lock +++ b/stack-nightly.yaml.lock @@ -101,6 +101,13 @@ packages: original: subdir: propagators/datadog url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz +- completed: + hackage: hw-kafka-client-4.0.3@sha256:20e3614454d5afd2a6acfc0709b9bf00bd6ee9a9bc646c2e2e4ccec1d16831a1,4861 + pantry-tree: + sha256: 709ea6818b3b3beb8eed6f79ea76b8dc13cce9ae165870c17986d5de2d695447 + size: 2057 + original: + hackage: hw-kafka-client-4.0.3 snapshots: - completed: sha256: 859c14182cd0c4d1f9b0f7ff8baaefb15c778278fb0ea2fa90cfea326bb4e62c From 66481d9d386dfbd5e0d68abe5856e4d34cbebf5d Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:20:55 -0400 Subject: [PATCH 16/18] Fixup hs-opentelemetry versions --- stack-lts-18.28.yaml | 18 +++++------ stack-lts-18.28.yaml.lock | 68 +++++++++++++++++++-------------------- stack-lts-19.33.yaml | 18 +++++------ stack-lts-19.33.yaml.lock | 68 +++++++++++++++++++-------------------- stack-nightly.yaml.lock | 68 +++++++++++++++++++-------------------- 5 files changed, 120 insertions(+), 120 deletions(-) diff --git a/stack-lts-18.28.yaml b/stack-lts-18.28.yaml index 9f686972..d6896437 100644 --- a/stack-lts-18.28.yaml +++ b/stack-lts-18.28.yaml @@ -20,19 +20,19 @@ extra-deps: - scientist-0.0.0.0 # For OTel - - hs-opentelemetry-api-0.0.3.6 - - hs-opentelemetry-awsxray-0.1.0.1 - - hs-opentelemetry-exporter-otlp-0.0.1.4 - - hs-opentelemetry-instrumentation-persistent-0.0.1.0 - - hs-opentelemetry-instrumentation-wai-0.0.1.3 + - hs-opentelemetry-api-0.1.0.0 + - hs-opentelemetry-exporter-otlp-0.0.1.5 + - hs-opentelemetry-instrumentation-persistent-0.1.0.0 + - hs-opentelemetry-instrumentation-wai-0.1.0.0 - hs-opentelemetry-otlp-0.0.1.0 - - hs-opentelemetry-propagator-w3c-0.0.1.2 - - hs-opentelemetry-sdk-0.0.3.4 + - hs-opentelemetry-propagator-b3-0.0.1.1 + - hs-opentelemetry-propagator-w3c-0.0.1.3 + - hs-opentelemetry-sdk-0.0.3.6 - proto-lens-0.7.1.0 - proto-lens-runtime-0.7.0.3 - random-1.2.1 - - thread-utils-context-0.2.0.0 - - thread-utils-finalizers-0.1.0.0 + - thread-utils-context-0.3.0.4 + - thread-utils-finalizers-0.1.1.0 - github: iand675/hs-opentelemetry commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 subdirs: diff --git a/stack-lts-18.28.yaml.lock b/stack-lts-18.28.yaml.lock index aaaf556c..bc93c65a 100644 --- a/stack-lts-18.28.yaml.lock +++ b/stack-lts-18.28.yaml.lock @@ -124,40 +124,33 @@ packages: original: hackage: scientist-0.0.0.0 - completed: - hackage: hs-opentelemetry-api-0.0.3.6@sha256:76345dca8efda3040f58e85fa8b17264505177928bd035936132448715437a7c,3428 + hackage: hs-opentelemetry-api-0.1.0.0@sha256:8af01d0c81dd1af6d3293b105178fd9bfa0057c9eb88ac24d3c440bff660abe3,3705 pantry-tree: - sha256: 6bcb617406e61a2fa68ebc313fad675671ac8acb57a144da41201fa1a75cdaa3 - size: 2907 + sha256: 7c332e7241636097fe199bd87f57db333830bed416296e7ebf944497557f46be + size: 3221 original: - hackage: hs-opentelemetry-api-0.0.3.6 + hackage: hs-opentelemetry-api-0.1.0.0 - completed: - hackage: hs-opentelemetry-awsxray-0.1.0.1@sha256:dec49a81296c91a64a5a7037ac967c0f952974eed6c92de56e58b0eef58561c1,3602 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5@sha256:89b0a6481096a338fa6383fbdf08ccaa0eb7bb009c4cbb340894eac33e55c5de,2214 pantry-tree: - sha256: 0388ea8f8cb3761fb719316b69ebe663c7c978053de231a0aafc305ee43c3e06 - size: 977 - original: - hackage: hs-opentelemetry-awsxray-0.1.0.1 -- completed: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4@sha256:25fcf5c2173f1dd3fe4f288f3232da70e9d8398363430932b7e2a278f78c3765,2150 - pantry-tree: - sha256: 6d2ae7125938614e10d01b317d10bfd4575bb62889360c4476dda2b904766cda + sha256: 744146043f5818ad2b7577a32862affcbf6ed400b097723eae9f6941d739365e size: 400 original: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5 - completed: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0@sha256:5963e5bf98ccf73543955ebd523c2a4776f7e6a2edf0feabbc44664153662caf,1669 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0@sha256:920e078b1bc141527a10c547e887ddb8d6295b216c49c8d1fe94f243d832eff9,1824 pantry-tree: - sha256: 0cf9da228de66c804c8f945cc90301aa76b85d872011afb0bcaf02569c7b0903 - size: 424 + sha256: 27f0fef99e1c6b58d7fa4a5a3119df612c7ac0687723dbd5cc200747c9fe1829 + size: 426 original: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0 - completed: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3@sha256:417c714052ee94b8b6a7f2b303ee92908c232f6d44a1a1c6232acf17434be753,1767 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0@sha256:6019cf031b3edec6ff0ace0df4c2e41358b9e5d939e6c326e4e1df50726348ee,1852 pantry-tree: - sha256: c1fa4fee66d3cb299276e2a32d1d027ac26ab9a354665e7bc95f6e163922194d + sha256: affe8d2c4c55181c84fc74abef68fde5c11a99581fd29a97e6a8a9fd1e016a43 size: 411 original: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0 - completed: hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: @@ -166,19 +159,26 @@ packages: original: hackage: hs-opentelemetry-otlp-0.0.1.0 - completed: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2@sha256:ba1e33ff73bec76ec53b049b0cb3d1a65a6849a60c0da08bbef308f0edc241d1,1751 + hackage: hs-opentelemetry-propagator-b3-0.0.1.1@sha256:f0e9da77a888b89f81e5f5186788d5ace2a665e8914f6b446712a1c2edf17743,1854 + pantry-tree: + sha256: 7ed0b0433837946d86f2ab364ef284dfc17fdcef9b4ea5fc48577a9441deeade + size: 482 + original: + hackage: hs-opentelemetry-propagator-b3-0.0.1.1 +- completed: + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3@sha256:5dc2dbdd6b0a4e434ca5fd949e9ebe5611a5d513ef58009b935e9e810cc85d1b,1852 pantry-tree: - sha256: 3f3a81317fe511bf11191d6ea186d7c98c7fd794b32cc358606ee681637b2a0e + sha256: 84a8e40facf8df13084682a6e4852d940acc9d9abeaf2d716dbc9415258f4cc5 size: 496 original: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2 + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3 - completed: - hackage: hs-opentelemetry-sdk-0.0.3.4@sha256:b33cb9e705ea3c591df324976d47ae2b11087af6a0533221840cec2a929db331,3638 + hackage: hs-opentelemetry-sdk-0.0.3.6@sha256:6776705a4e0c06c6a4bfa16a9bed3ba353901f52d214ac737f57ea7f8e1ed465,3746 pantry-tree: - sha256: 7445b1dbd5c88677567712bb9cc4e2caa9ef3923662a2afcbad959c22c9b295e + sha256: 154663d933a44c350db6c98d2c14db192c14fd04a10c17d0ebb8090707bd359b size: 1430 original: - hackage: hs-opentelemetry-sdk-0.0.3.4 + hackage: hs-opentelemetry-sdk-0.0.3.6 - completed: hackage: proto-lens-0.7.1.0@sha256:b151890929e71db5b8c2ad86cd758bcdf1dfcf25f34eb6c9ce19e3d7cd4eae39,2959 pantry-tree: @@ -201,19 +201,19 @@ packages: original: hackage: random-1.2.1 - completed: - hackage: thread-utils-context-0.2.0.0@sha256:7863e568c7a43cd21616342d20484d4c962aaa9710619f104c6fb7ee32273940,1883 + hackage: thread-utils-context-0.3.0.4@sha256:e763da1c6cab3b6d378fb670ca74aa9bf03c9b61b6fcf7628c56363fb0e3e71e,1671 pantry-tree: - sha256: 605ea068880ad39c96fce0d91db9f2d54553ed43dfc41c37845fade8be2e9568 - size: 450 + sha256: 57d909a991b5e0b4c7a28121cb52ee9c2db6c09e0419b89af6c82fae52be88d4 + size: 397 original: - hackage: thread-utils-context-0.2.0.0 + hackage: thread-utils-context-0.3.0.4 - completed: - hackage: thread-utils-finalizers-0.1.0.0@sha256:a8435240bfc0ae96c94704d2986699a11a395c496f9a7f2e5f5d729a0b967549,1381 + hackage: thread-utils-finalizers-0.1.1.0@sha256:24944b71d9f1d01695a5908b4a3b44838fab870883114a323336d537995e0a5b,1381 pantry-tree: - sha256: 7f708d158d5d0e32ffe77f6375a792ceb6f92e4d8dd8b32fc69e7de962e7e518 + sha256: 8c2c2e2e22c20bf3696ee6f30b50b3a9eeae187a22beb536441eefb0a3f9c549 size: 400 original: - hackage: thread-utils-finalizers-0.1.0.0 + hackage: thread-utils-finalizers-0.1.1.0 - completed: name: hs-opentelemetry-propagator-datadog pantry-tree: diff --git a/stack-lts-19.33.yaml b/stack-lts-19.33.yaml index 28efba8c..acf88457 100644 --- a/stack-lts-19.33.yaml +++ b/stack-lts-19.33.yaml @@ -14,16 +14,16 @@ extra-deps: - scientist-0.0.0.0 # For OTel - - hs-opentelemetry-api-0.0.3.6 - - hs-opentelemetry-awsxray-0.1.0.1 - - hs-opentelemetry-exporter-otlp-0.0.1.4 - - hs-opentelemetry-instrumentation-persistent-0.0.1.0 - - hs-opentelemetry-instrumentation-wai-0.0.1.3 + - hs-opentelemetry-api-0.1.0.0 + - hs-opentelemetry-exporter-otlp-0.0.1.5 + - hs-opentelemetry-instrumentation-persistent-0.1.0.0 + - hs-opentelemetry-instrumentation-wai-0.1.0.0 - hs-opentelemetry-otlp-0.0.1.0 - - hs-opentelemetry-propagator-w3c-0.0.1.2 - - hs-opentelemetry-sdk-0.0.3.4 - - thread-utils-context-0.2.0.0 - - thread-utils-finalizers-0.1.0.0 + - hs-opentelemetry-propagator-b3-0.0.1.1 + - hs-opentelemetry-propagator-w3c-0.0.1.3 + - hs-opentelemetry-sdk-0.0.3.6 + - thread-utils-context-0.3.0.4 + - thread-utils-finalizers-0.1.1.0 - github: iand675/hs-opentelemetry commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 subdirs: diff --git a/stack-lts-19.33.yaml.lock b/stack-lts-19.33.yaml.lock index 602169e2..7b08729e 100644 --- a/stack-lts-19.33.yaml.lock +++ b/stack-lts-19.33.yaml.lock @@ -82,40 +82,33 @@ packages: original: hackage: scientist-0.0.0.0 - completed: - hackage: hs-opentelemetry-api-0.0.3.6@sha256:76345dca8efda3040f58e85fa8b17264505177928bd035936132448715437a7c,3428 + hackage: hs-opentelemetry-api-0.1.0.0@sha256:8af01d0c81dd1af6d3293b105178fd9bfa0057c9eb88ac24d3c440bff660abe3,3705 pantry-tree: - sha256: 6bcb617406e61a2fa68ebc313fad675671ac8acb57a144da41201fa1a75cdaa3 - size: 2907 + sha256: 7c332e7241636097fe199bd87f57db333830bed416296e7ebf944497557f46be + size: 3221 original: - hackage: hs-opentelemetry-api-0.0.3.6 + hackage: hs-opentelemetry-api-0.1.0.0 - completed: - hackage: hs-opentelemetry-awsxray-0.1.0.1@sha256:dec49a81296c91a64a5a7037ac967c0f952974eed6c92de56e58b0eef58561c1,3602 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5@sha256:89b0a6481096a338fa6383fbdf08ccaa0eb7bb009c4cbb340894eac33e55c5de,2214 pantry-tree: - sha256: 0388ea8f8cb3761fb719316b69ebe663c7c978053de231a0aafc305ee43c3e06 - size: 977 - original: - hackage: hs-opentelemetry-awsxray-0.1.0.1 -- completed: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4@sha256:25fcf5c2173f1dd3fe4f288f3232da70e9d8398363430932b7e2a278f78c3765,2150 - pantry-tree: - sha256: 6d2ae7125938614e10d01b317d10bfd4575bb62889360c4476dda2b904766cda + sha256: 744146043f5818ad2b7577a32862affcbf6ed400b097723eae9f6941d739365e size: 400 original: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5 - completed: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0@sha256:5963e5bf98ccf73543955ebd523c2a4776f7e6a2edf0feabbc44664153662caf,1669 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0@sha256:920e078b1bc141527a10c547e887ddb8d6295b216c49c8d1fe94f243d832eff9,1824 pantry-tree: - sha256: 0cf9da228de66c804c8f945cc90301aa76b85d872011afb0bcaf02569c7b0903 - size: 424 + sha256: 27f0fef99e1c6b58d7fa4a5a3119df612c7ac0687723dbd5cc200747c9fe1829 + size: 426 original: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0 - completed: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3@sha256:417c714052ee94b8b6a7f2b303ee92908c232f6d44a1a1c6232acf17434be753,1767 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0@sha256:6019cf031b3edec6ff0ace0df4c2e41358b9e5d939e6c326e4e1df50726348ee,1852 pantry-tree: - sha256: c1fa4fee66d3cb299276e2a32d1d027ac26ab9a354665e7bc95f6e163922194d + sha256: affe8d2c4c55181c84fc74abef68fde5c11a99581fd29a97e6a8a9fd1e016a43 size: 411 original: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0 - completed: hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: @@ -124,33 +117,40 @@ packages: original: hackage: hs-opentelemetry-otlp-0.0.1.0 - completed: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2@sha256:ba1e33ff73bec76ec53b049b0cb3d1a65a6849a60c0da08bbef308f0edc241d1,1751 + hackage: hs-opentelemetry-propagator-b3-0.0.1.1@sha256:f0e9da77a888b89f81e5f5186788d5ace2a665e8914f6b446712a1c2edf17743,1854 + pantry-tree: + sha256: 7ed0b0433837946d86f2ab364ef284dfc17fdcef9b4ea5fc48577a9441deeade + size: 482 + original: + hackage: hs-opentelemetry-propagator-b3-0.0.1.1 +- completed: + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3@sha256:5dc2dbdd6b0a4e434ca5fd949e9ebe5611a5d513ef58009b935e9e810cc85d1b,1852 pantry-tree: - sha256: 3f3a81317fe511bf11191d6ea186d7c98c7fd794b32cc358606ee681637b2a0e + sha256: 84a8e40facf8df13084682a6e4852d940acc9d9abeaf2d716dbc9415258f4cc5 size: 496 original: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2 + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3 - completed: - hackage: hs-opentelemetry-sdk-0.0.3.4@sha256:b33cb9e705ea3c591df324976d47ae2b11087af6a0533221840cec2a929db331,3638 + hackage: hs-opentelemetry-sdk-0.0.3.6@sha256:6776705a4e0c06c6a4bfa16a9bed3ba353901f52d214ac737f57ea7f8e1ed465,3746 pantry-tree: - sha256: 7445b1dbd5c88677567712bb9cc4e2caa9ef3923662a2afcbad959c22c9b295e + sha256: 154663d933a44c350db6c98d2c14db192c14fd04a10c17d0ebb8090707bd359b size: 1430 original: - hackage: hs-opentelemetry-sdk-0.0.3.4 + hackage: hs-opentelemetry-sdk-0.0.3.6 - completed: - hackage: thread-utils-context-0.2.0.0@sha256:7863e568c7a43cd21616342d20484d4c962aaa9710619f104c6fb7ee32273940,1883 + hackage: thread-utils-context-0.3.0.4@sha256:e763da1c6cab3b6d378fb670ca74aa9bf03c9b61b6fcf7628c56363fb0e3e71e,1671 pantry-tree: - sha256: 605ea068880ad39c96fce0d91db9f2d54553ed43dfc41c37845fade8be2e9568 - size: 450 + sha256: 57d909a991b5e0b4c7a28121cb52ee9c2db6c09e0419b89af6c82fae52be88d4 + size: 397 original: - hackage: thread-utils-context-0.2.0.0 + hackage: thread-utils-context-0.3.0.4 - completed: - hackage: thread-utils-finalizers-0.1.0.0@sha256:a8435240bfc0ae96c94704d2986699a11a395c496f9a7f2e5f5d729a0b967549,1381 + hackage: thread-utils-finalizers-0.1.1.0@sha256:24944b71d9f1d01695a5908b4a3b44838fab870883114a323336d537995e0a5b,1381 pantry-tree: - sha256: 7f708d158d5d0e32ffe77f6375a792ceb6f92e4d8dd8b32fc69e7de962e7e518 + sha256: 8c2c2e2e22c20bf3696ee6f30b50b3a9eeae187a22beb536441eefb0a3f9c549 size: 400 original: - hackage: thread-utils-finalizers-0.1.0.0 + hackage: thread-utils-finalizers-0.1.1.0 - completed: name: hs-opentelemetry-propagator-datadog pantry-tree: diff --git a/stack-nightly.yaml.lock b/stack-nightly.yaml.lock index 920114aa..df39e22e 100644 --- a/stack-nightly.yaml.lock +++ b/stack-nightly.yaml.lock @@ -19,40 +19,33 @@ packages: original: hackage: monad-validate-1.3.0.0 - completed: - hackage: hs-opentelemetry-api-0.0.3.6@sha256:76345dca8efda3040f58e85fa8b17264505177928bd035936132448715437a7c,3428 + hackage: hs-opentelemetry-api-0.1.0.0@sha256:8af01d0c81dd1af6d3293b105178fd9bfa0057c9eb88ac24d3c440bff660abe3,3705 pantry-tree: - sha256: 6bcb617406e61a2fa68ebc313fad675671ac8acb57a144da41201fa1a75cdaa3 - size: 2907 + sha256: 7c332e7241636097fe199bd87f57db333830bed416296e7ebf944497557f46be + size: 3221 original: - hackage: hs-opentelemetry-api-0.0.3.6 + hackage: hs-opentelemetry-api-0.1.0.0 - completed: - hackage: hs-opentelemetry-awsxray-0.1.0.1@sha256:dec49a81296c91a64a5a7037ac967c0f952974eed6c92de56e58b0eef58561c1,3602 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5@sha256:89b0a6481096a338fa6383fbdf08ccaa0eb7bb009c4cbb340894eac33e55c5de,2214 pantry-tree: - sha256: 0388ea8f8cb3761fb719316b69ebe663c7c978053de231a0aafc305ee43c3e06 - size: 977 - original: - hackage: hs-opentelemetry-awsxray-0.1.0.1 -- completed: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4@sha256:25fcf5c2173f1dd3fe4f288f3232da70e9d8398363430932b7e2a278f78c3765,2150 - pantry-tree: - sha256: 6d2ae7125938614e10d01b317d10bfd4575bb62889360c4476dda2b904766cda + sha256: 744146043f5818ad2b7577a32862affcbf6ed400b097723eae9f6941d739365e size: 400 original: - hackage: hs-opentelemetry-exporter-otlp-0.0.1.4 + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5 - completed: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0@sha256:5963e5bf98ccf73543955ebd523c2a4776f7e6a2edf0feabbc44664153662caf,1669 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0@sha256:920e078b1bc141527a10c547e887ddb8d6295b216c49c8d1fe94f243d832eff9,1824 pantry-tree: - sha256: 0cf9da228de66c804c8f945cc90301aa76b85d872011afb0bcaf02569c7b0903 - size: 424 + sha256: 27f0fef99e1c6b58d7fa4a5a3119df612c7ac0687723dbd5cc200747c9fe1829 + size: 426 original: - hackage: hs-opentelemetry-instrumentation-persistent-0.0.1.0 + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0 - completed: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3@sha256:417c714052ee94b8b6a7f2b303ee92908c232f6d44a1a1c6232acf17434be753,1767 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0@sha256:6019cf031b3edec6ff0ace0df4c2e41358b9e5d939e6c326e4e1df50726348ee,1852 pantry-tree: - sha256: c1fa4fee66d3cb299276e2a32d1d027ac26ab9a354665e7bc95f6e163922194d + sha256: affe8d2c4c55181c84fc74abef68fde5c11a99581fd29a97e6a8a9fd1e016a43 size: 411 original: - hackage: hs-opentelemetry-instrumentation-wai-0.0.1.3 + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0 - completed: hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 pantry-tree: @@ -61,33 +54,40 @@ packages: original: hackage: hs-opentelemetry-otlp-0.0.1.0 - completed: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2@sha256:ba1e33ff73bec76ec53b049b0cb3d1a65a6849a60c0da08bbef308f0edc241d1,1751 + hackage: hs-opentelemetry-propagator-b3-0.0.1.1@sha256:f0e9da77a888b89f81e5f5186788d5ace2a665e8914f6b446712a1c2edf17743,1854 + pantry-tree: + sha256: 7ed0b0433837946d86f2ab364ef284dfc17fdcef9b4ea5fc48577a9441deeade + size: 482 + original: + hackage: hs-opentelemetry-propagator-b3-0.0.1.1 +- completed: + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3@sha256:5dc2dbdd6b0a4e434ca5fd949e9ebe5611a5d513ef58009b935e9e810cc85d1b,1852 pantry-tree: - sha256: 3f3a81317fe511bf11191d6ea186d7c98c7fd794b32cc358606ee681637b2a0e + sha256: 84a8e40facf8df13084682a6e4852d940acc9d9abeaf2d716dbc9415258f4cc5 size: 496 original: - hackage: hs-opentelemetry-propagator-w3c-0.0.1.2 + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3 - completed: - hackage: hs-opentelemetry-sdk-0.0.3.4@sha256:b33cb9e705ea3c591df324976d47ae2b11087af6a0533221840cec2a929db331,3638 + hackage: hs-opentelemetry-sdk-0.0.3.6@sha256:6776705a4e0c06c6a4bfa16a9bed3ba353901f52d214ac737f57ea7f8e1ed465,3746 pantry-tree: - sha256: 7445b1dbd5c88677567712bb9cc4e2caa9ef3923662a2afcbad959c22c9b295e + sha256: 154663d933a44c350db6c98d2c14db192c14fd04a10c17d0ebb8090707bd359b size: 1430 original: - hackage: hs-opentelemetry-sdk-0.0.3.4 + hackage: hs-opentelemetry-sdk-0.0.3.6 - completed: - hackage: thread-utils-context-0.2.0.0@sha256:7863e568c7a43cd21616342d20484d4c962aaa9710619f104c6fb7ee32273940,1883 + hackage: thread-utils-context-0.3.0.4@sha256:e763da1c6cab3b6d378fb670ca74aa9bf03c9b61b6fcf7628c56363fb0e3e71e,1671 pantry-tree: - sha256: 605ea068880ad39c96fce0d91db9f2d54553ed43dfc41c37845fade8be2e9568 - size: 450 + sha256: 57d909a991b5e0b4c7a28121cb52ee9c2db6c09e0419b89af6c82fae52be88d4 + size: 397 original: - hackage: thread-utils-context-0.2.0.0 + hackage: thread-utils-context-0.3.0.4 - completed: - hackage: thread-utils-finalizers-0.1.0.0@sha256:a8435240bfc0ae96c94704d2986699a11a395c496f9a7f2e5f5d729a0b967549,1381 + hackage: thread-utils-finalizers-0.1.1.0@sha256:24944b71d9f1d01695a5908b4a3b44838fab870883114a323336d537995e0a5b,1381 pantry-tree: - sha256: 7f708d158d5d0e32ffe77f6375a792ceb6f92e4d8dd8b32fc69e7de962e7e518 + sha256: 8c2c2e2e22c20bf3696ee6f30b50b3a9eeae187a22beb536441eefb0a3f9c549 size: 400 original: - hackage: thread-utils-finalizers-0.1.0.0 + hackage: thread-utils-finalizers-0.1.1.0 - completed: name: hs-opentelemetry-propagator-datadog pantry-tree: From 91a9748a4287f433181f65c63c20d0604106d34d Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:32:37 -0400 Subject: [PATCH 17/18] Rev nightly, use resource-pool-0.4 everywhere --- freckle-app.cabal | 2 +- package.yaml | 2 +- stack-lts-18.28.yaml | 1 + stack-lts-18.28.yaml.lock | 7 +++++++ stack-lts-19.33.yaml | 1 + stack-lts-19.33.yaml.lock | 7 +++++++ stack-nightly.yaml | 2 +- stack-nightly.yaml.lock | 8 ++++---- 8 files changed, 23 insertions(+), 7 deletions(-) diff --git a/freckle-app.cabal b/freckle-app.cabal index 3193e366..6a058026 100644 --- a/freckle-app.cabal +++ b/freckle-app.cabal @@ -155,7 +155,7 @@ library , persistent-postgresql , postgresql-simple , primitive - , resource-pool + , resource-pool >=0.4.0.0 , resourcet , retry >=0.8.1.0 , safe diff --git a/package.yaml b/package.yaml index 2df60da5..96b37620 100644 --- a/package.yaml +++ b/package.yaml @@ -121,7 +121,7 @@ library: - persistent-postgresql - postgresql-simple - primitive - - resource-pool + - resource-pool >= 0.4.0.0 # defaultPoolConfig, etc - resourcet - retry >= 0.8.1.0 # retryingDynamic - safe diff --git a/stack-lts-18.28.yaml b/stack-lts-18.28.yaml index d6896437..6810e463 100644 --- a/stack-lts-18.28.yaml +++ b/stack-lts-18.28.yaml @@ -17,6 +17,7 @@ extra-deps: - memcache-0.3.0.1 - monad-logger-aeson-0.3.0.2 - monad-validate-1.2.0.1 + - resource-pool-0.4.0.0 - scientist-0.0.0.0 # For OTel diff --git a/stack-lts-18.28.yaml.lock b/stack-lts-18.28.yaml.lock index bc93c65a..5ba44ea2 100644 --- a/stack-lts-18.28.yaml.lock +++ b/stack-lts-18.28.yaml.lock @@ -116,6 +116,13 @@ packages: size: 611 original: hackage: monad-validate-1.2.0.1 +- completed: + hackage: resource-pool-0.4.0.0@sha256:9c1e448a159875e21a7e68697feee2b61a4e584720974fa465a2fa1bc0776c73,1342 + pantry-tree: + sha256: 1008fbb9b6bd9d12925989f2708af612daa3a8ebf3a56763016231461d9e314f + size: 406 + original: + hackage: resource-pool-0.4.0.0 - completed: hackage: scientist-0.0.0.0@sha256:058c629a6805668f3a16c386dbc5dd90c1ce55ff2c7cf5672f0410bdb873d04c,2999 pantry-tree: diff --git a/stack-lts-19.33.yaml b/stack-lts-19.33.yaml index acf88457..ff51aa74 100644 --- a/stack-lts-19.33.yaml +++ b/stack-lts-19.33.yaml @@ -11,6 +11,7 @@ extra-deps: - memcache-0.3.0.1 - monad-logger-aeson-0.3.0.2 - monad-validate-1.2.0.1 + - resource-pool-0.4.0.0 - scientist-0.0.0.0 # For OTel diff --git a/stack-lts-19.33.yaml.lock b/stack-lts-19.33.yaml.lock index 7b08729e..11e21814 100644 --- a/stack-lts-19.33.yaml.lock +++ b/stack-lts-19.33.yaml.lock @@ -74,6 +74,13 @@ packages: size: 611 original: hackage: monad-validate-1.2.0.1 +- completed: + hackage: resource-pool-0.4.0.0@sha256:9c1e448a159875e21a7e68697feee2b61a4e584720974fa465a2fa1bc0776c73,1342 + pantry-tree: + sha256: 1008fbb9b6bd9d12925989f2708af612daa3a8ebf3a56763016231461d9e314f + size: 406 + original: + hackage: resource-pool-0.4.0.0 - completed: hackage: scientist-0.0.0.0@sha256:058c629a6805668f3a16c386dbc5dd90c1ce55ff2c7cf5672f0410bdb873d04c,2999 pantry-tree: diff --git a/stack-nightly.yaml b/stack-nightly.yaml index bc493ef3..45228330 100644 --- a/stack-nightly.yaml +++ b/stack-nightly.yaml @@ -1,4 +1,4 @@ -resolver: nightly-2023-02-27 +resolver: nightly-2023-09-25 extra-deps: - bcp47-0.2.0.6 - monad-validate-1.3.0.0 diff --git a/stack-nightly.yaml.lock b/stack-nightly.yaml.lock index df39e22e..78446473 100644 --- a/stack-nightly.yaml.lock +++ b/stack-nightly.yaml.lock @@ -110,7 +110,7 @@ packages: hackage: hw-kafka-client-4.0.3 snapshots: - completed: - sha256: 859c14182cd0c4d1f9b0f7ff8baaefb15c778278fb0ea2fa90cfea326bb4e62c - size: 598563 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2023/2/27.yaml - original: nightly-2023-02-27 + sha256: 682574fdbde29718a8c5bc4a16e534b2e7c821922bdb46c1daf8adf373b28e55 + size: 669535 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2023/9/25.yaml + original: nightly-2023-09-25 From 9b3750129afecd0f5956200cfeba2f41a8e50179 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Mon, 25 Sep 2023 10:38:30 -0400 Subject: [PATCH 18/18] Rev actions, stack.yamls --- .github/workflows/ci.yml | 14 +++-- stack-lts-20.26.yaml | 28 ++++++++++ stack-lts-20.26.yaml.lock | 109 ++++++++++++++++++++++++++++++++++++++ stack.yaml | 2 +- stack.yaml.lock | 8 +-- 5 files changed, 148 insertions(+), 13 deletions(-) create mode 100644 stack-lts-20.26.yaml create mode 100644 stack-lts-20.26.yaml.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6228d029..7c375fac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,27 +26,25 @@ jobs: strategy: matrix: stack-yaml: - - stack-nightly.yaml # ghc-9.4 - - stack.yaml # ghc-9.2 + - stack-nightly.yaml # ghc-9.6 + - stack.yaml # ghc-9.4 + - stack-lts-20.26.yaml # ghc-9.2 - stack-lts-19.33.yaml # ghc-9.0 - stack-lts-18.28.yaml # ghc-8.10 fail-fast: false steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install rdkafka run: sudo apt-get install --assume-yes --no-install-recommends librdkafka-dev - - uses: freckle/stack-cache-action@v2 - with: - stack-yaml: ${{ matrix.stack-yaml }} - - uses: freckle/stack-action@v3 + - uses: freckle/stack-action@v4 with: stack-yaml: ${{ matrix.stack-yaml }} lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: haskell/actions/hlint-setup@v2 - uses: haskell/actions/hlint-run@v2 with: diff --git a/stack-lts-20.26.yaml b/stack-lts-20.26.yaml new file mode 100644 index 00000000..32311757 --- /dev/null +++ b/stack-lts-20.26.yaml @@ -0,0 +1,28 @@ +resolver: lts-20.20 +extra-deps: + - monad-validate-1.3.0.0 + - hs-opentelemetry-api-0.1.0.0 + - hs-opentelemetry-instrumentation-persistent-0.1.0.0 + - hs-opentelemetry-instrumentation-wai-0.1.0.0 + - hs-opentelemetry-sdk-0.0.3.6 + - resource-pool-0.4.0.0 + + # for hs-opentelemetry-sdk + - hs-opentelemetry-exporter-otlp-0.0.1.5 + - hs-opentelemetry-propagator-b3-0.0.1.1 + - hs-opentelemetry-propagator-w3c-0.0.1.3 + + # for hs-opentelemetry-exporter-otlp + - hs-opentelemetry-otlp-0.0.1.0 + + # for hs-opentelemetry-api + - thread-utils-context-0.3.0.4 + + # for thread-utils-context + - thread-utils-finalizers-0.1.1.0 + + # See https://github.com/iand675/hs-opentelemetry/issues/98 + - github: iand675/hs-opentelemetry + commit: 8fcdc7323cf872abfcc02ff512429b2a3d617085 + subdirs: + - propagators/datadog diff --git a/stack-lts-20.26.yaml.lock b/stack-lts-20.26.yaml.lock new file mode 100644 index 00000000..ebf7ea0e --- /dev/null +++ b/stack-lts-20.26.yaml.lock @@ -0,0 +1,109 @@ +# This file was autogenerated by Stack. +# You should not edit this file by hand. +# For more information, please see the documentation at: +# https://docs.haskellstack.org/en/stable/lock_files + +packages: +- completed: + hackage: monad-validate-1.3.0.0@sha256:eb6ddd5c9cf72ff0563cba604fa00291376e96138fdb4932d00ff3a99d66706e,2605 + pantry-tree: + sha256: 0b2a3a57be48fcc739708b214fca202f1e95b1cd773dd3bb9589d3007cf8cf5e + size: 611 + original: + hackage: monad-validate-1.3.0.0 +- completed: + hackage: hs-opentelemetry-api-0.1.0.0@sha256:8af01d0c81dd1af6d3293b105178fd9bfa0057c9eb88ac24d3c440bff660abe3,3705 + pantry-tree: + sha256: 7c332e7241636097fe199bd87f57db333830bed416296e7ebf944497557f46be + size: 3221 + original: + hackage: hs-opentelemetry-api-0.1.0.0 +- completed: + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0@sha256:920e078b1bc141527a10c547e887ddb8d6295b216c49c8d1fe94f243d832eff9,1824 + pantry-tree: + sha256: 27f0fef99e1c6b58d7fa4a5a3119df612c7ac0687723dbd5cc200747c9fe1829 + size: 426 + original: + hackage: hs-opentelemetry-instrumentation-persistent-0.1.0.0 +- completed: + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0@sha256:6019cf031b3edec6ff0ace0df4c2e41358b9e5d939e6c326e4e1df50726348ee,1852 + pantry-tree: + sha256: affe8d2c4c55181c84fc74abef68fde5c11a99581fd29a97e6a8a9fd1e016a43 + size: 411 + original: + hackage: hs-opentelemetry-instrumentation-wai-0.1.0.0 +- completed: + hackage: hs-opentelemetry-sdk-0.0.3.6@sha256:6776705a4e0c06c6a4bfa16a9bed3ba353901f52d214ac737f57ea7f8e1ed465,3746 + pantry-tree: + sha256: 154663d933a44c350db6c98d2c14db192c14fd04a10c17d0ebb8090707bd359b + size: 1430 + original: + hackage: hs-opentelemetry-sdk-0.0.3.6 +- completed: + hackage: resource-pool-0.4.0.0@sha256:9c1e448a159875e21a7e68697feee2b61a4e584720974fa465a2fa1bc0776c73,1342 + pantry-tree: + sha256: 1008fbb9b6bd9d12925989f2708af612daa3a8ebf3a56763016231461d9e314f + size: 406 + original: + hackage: resource-pool-0.4.0.0 +- completed: + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5@sha256:89b0a6481096a338fa6383fbdf08ccaa0eb7bb009c4cbb340894eac33e55c5de,2214 + pantry-tree: + sha256: 744146043f5818ad2b7577a32862affcbf6ed400b097723eae9f6941d739365e + size: 400 + original: + hackage: hs-opentelemetry-exporter-otlp-0.0.1.5 +- completed: + hackage: hs-opentelemetry-propagator-b3-0.0.1.1@sha256:f0e9da77a888b89f81e5f5186788d5ace2a665e8914f6b446712a1c2edf17743,1854 + pantry-tree: + sha256: 7ed0b0433837946d86f2ab364ef284dfc17fdcef9b4ea5fc48577a9441deeade + size: 482 + original: + hackage: hs-opentelemetry-propagator-b3-0.0.1.1 +- completed: + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3@sha256:5dc2dbdd6b0a4e434ca5fd949e9ebe5611a5d513ef58009b935e9e810cc85d1b,1852 + pantry-tree: + sha256: 84a8e40facf8df13084682a6e4852d940acc9d9abeaf2d716dbc9415258f4cc5 + size: 496 + original: + hackage: hs-opentelemetry-propagator-w3c-0.0.1.3 +- completed: + hackage: hs-opentelemetry-otlp-0.0.1.0@sha256:88bb6b68f172a336f78018b0823f47363fb7408eb19f7301489f81ad4d5c0f33,2307 + pantry-tree: + sha256: e56292fc693805babed3c7ba7fc54e59d2e9adbc38de6bcc659009e8b10b9a1b + size: 2252 + original: + hackage: hs-opentelemetry-otlp-0.0.1.0 +- completed: + hackage: thread-utils-context-0.3.0.4@sha256:e763da1c6cab3b6d378fb670ca74aa9bf03c9b61b6fcf7628c56363fb0e3e71e,1671 + pantry-tree: + sha256: 57d909a991b5e0b4c7a28121cb52ee9c2db6c09e0419b89af6c82fae52be88d4 + size: 397 + original: + hackage: thread-utils-context-0.3.0.4 +- completed: + hackage: thread-utils-finalizers-0.1.1.0@sha256:24944b71d9f1d01695a5908b4a3b44838fab870883114a323336d537995e0a5b,1381 + pantry-tree: + sha256: 8c2c2e2e22c20bf3696ee6f30b50b3a9eeae187a22beb536441eefb0a3f9c549 + size: 400 + original: + hackage: thread-utils-finalizers-0.1.1.0 +- completed: + name: hs-opentelemetry-propagator-datadog + pantry-tree: + sha256: cab894439e1bbb20a9ef901c3ac14b519ccd74e2712789472564bccdaa67da78 + size: 683 + sha256: 53a6cd3a01447c9a41512de16c44a7f6ba3fde3fab61b765fcd22b6ac33a882e + size: 352144 + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz + version: 0.0.0.0 + original: + subdir: propagators/datadog + url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz +snapshots: +- completed: + sha256: 126fa33ceb11f5e85ceb4e86d434756bd9a8439e2e5776d306a15fbc63b01e89 + size: 650041 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/20.yaml + original: lts-20.20 diff --git a/stack.yaml b/stack.yaml index b6567e33..e34e69ce 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-20.20 +resolver: lts-21.13 extra-deps: - monad-validate-1.3.0.0 - hs-opentelemetry-api-0.1.0.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index bd0af2c1..7a592bc4 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -96,7 +96,7 @@ packages: url: https://github.com/iand675/hs-opentelemetry/archive/8fcdc7323cf872abfcc02ff512429b2a3d617085.tar.gz snapshots: - completed: - sha256: 126fa33ceb11f5e85ceb4e86d434756bd9a8439e2e5776d306a15fbc63b01e89 - size: 650041 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/20.yaml - original: lts-20.20 + sha256: 8017c7970c2a8a9510c60cc70ac245d59e0c34eb932b91d37af09fe59855d854 + size: 640038 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/13.yaml + original: lts-21.13