core-telemetry 0.2.3.0 → 0.2.3.2
raw patch · 5 files changed
+29/−27 lines, 5 filesdep −chronologiquedep ~core-datadep ~core-programdep ~core-textPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: chronologique
Dependency ranges changed: core-data, core-program, core-text
API changes (from Hackage documentation)
- Core.Telemetry.Identifiers: createIdentifierSpan :: TimeStamp -> Word16 -> Span
+ Core.Telemetry.Identifiers: createIdentifierSpan :: Time -> Word16 -> Span
- Core.Telemetry.Identifiers: createIdentifierTrace :: TimeStamp -> Word16 -> MAC -> Trace
+ Core.Telemetry.Identifiers: createIdentifierTrace :: Time -> Word16 -> MAC -> Trace
- Core.Telemetry.Observability: setStartTime :: TimeStamp -> Program τ ()
+ Core.Telemetry.Observability: setStartTime :: Time -> Program τ ()
Files
- core-telemetry.cabal +4/−5
- lib/Core/Telemetry/Console.hs +3/−2
- lib/Core/Telemetry/Honeycomb.hs +12/−11
- lib/Core/Telemetry/Identifiers.hs +7/−6
- lib/Core/Telemetry/Observability.hs +3/−3
core-telemetry.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: core-telemetry-version: 0.2.3.0+version: 0.2.3.2 synopsis: Advanced telemetry description: This is part of a library to help build command-line programs, both tools and longer-running daemons.@@ -52,10 +52,9 @@ async , base >=4.11 && <5 , bytestring- , chronologique- , core-data >=0.3.2.2- , core-program >=0.4.6.1- , core-text >=0.3.6.0+ , core-data >=0.3.3+ , core-program >=0.5.0+ , core-text >=0.3.7 , exceptions , http-streams , io-streams
lib/Core/Telemetry/Console.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-}+{-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE OverloadedStrings #-} {- |@@ -23,16 +24,16 @@ import Control.Concurrent.STM (atomically) import Control.Concurrent.STM.TQueue (TQueue, writeTQueue)+import Core.Data.Clock import Core.Data.Structures (fromMap) import Core.Encoding.Json import Core.Program.Arguments import Core.Program.Context import Core.Program.Logging-import Core.System.External (getCurrentTimeNanoseconds) import Core.Text.Colour import Core.Text.Rope import Core.Text.Utilities-import qualified Data.List as List+import Data.List qualified as List {- | Output metrics to the terminal. This is mostly useful for debugging, but it
lib/Core/Telemetry/Honeycomb.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-}+{-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-}@@ -34,30 +35,30 @@ honeycombExporter, ) where +import Control.Exception.Safe qualified as Safe (catch, finally, throw)+import Core.Data.Clock (Time, unTime, getCurrentTimeNanoseconds) import Core.Data.Structures (Map, fromMap, insertKeyValue, intoMap, lookupKeyValue) import Core.Encoding.Json import Core.Program.Arguments import Core.Program.Context import Core.Program.Logging-import Core.System-import Core.System.Base (stdout)-import Core.System.External (TimeStamp (unTimeStamp), getCurrentTimeNanoseconds)+import Core.System.Base (SomeException, liftIO, stdout) import Core.Text.Bytes import Core.Text.Colour import Core.Text.Rope import Core.Text.Utilities import Data.ByteString (ByteString)-import qualified Data.ByteString as B (ByteString)-import qualified Data.ByteString.Char8 as C (append, null, putStrLn)-import qualified Data.ByteString.Lazy as L (ByteString)+import Data.ByteString qualified as B (ByteString)+import Data.ByteString.Char8 qualified as C (append, null, putStrLn)+import Data.ByteString.Lazy qualified as L (ByteString) import Data.Fixed import Data.IORef (IORef, newIORef, readIORef, writeIORef)-import qualified Data.List as List+import Data.List qualified as List import Network.Http.Client import System.Environment (lookupEnv) import System.Exit (ExitCode (..)) import System.IO.Streams (InputStream)-import qualified System.Posix.Process as Posix (exitImmediately)+import System.Posix.Process qualified as Posix (exitImmediately) {- | Indicate which \"dataset\" spans and events will be posted into@@ -221,7 +222,7 @@ cleanupConnection :: IORef (Maybe Connection) -> IO () cleanupConnection r = do- finally+ Safe.finally ( do possible <- readIORef r case possible of@@ -236,7 +237,7 @@ postEventToHoneycombAPI r apikey dataset json = attempt False where attempt retrying = do- catch+ Safe.catch ( do c <- acquireConnection r @@ -252,7 +253,7 @@ False -> do putStrLn "Reattempting" attempt True- True -> throw e+ True -> Safe.throw e ) q = buildRequest1 $ do
lib/Core/Telemetry/Identifiers.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-}+{-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-}@@ -34,11 +35,11 @@ ) where import Control.Concurrent.MVar (modifyMVar_, readMVar)+import Core.Data.Clock import Core.Program.Context import Core.Program.Logging import Core.System (unsafePerformIO) import Core.System.Base (liftIO)-import Core.System.External (TimeStamp (unTimeStamp)) import Core.Text.Rope import Core.Text.Utilities (breakPieces) import Data.Bits (shiftL, shiftR, (.&.), (.|.))@@ -82,9 +83,9 @@ @since 0.1.9 -}-createIdentifierTrace :: TimeStamp -> Word16 -> MAC -> Trace+createIdentifierTrace :: Time -> Word16 -> MAC -> Trace createIdentifierTrace time rand address =- let p1 = packRope (toHexReversed64 (fromIntegral time))+ let p1 = packRope (toHexReversed64 (fromIntegral (unTime time))) p2 = packRope (toHexNormal16 rand) p3 = packRope (convertMACToHex address) in Trace@@ -211,14 +212,14 @@ {- | Generate an identifier for a span. We only have 8 bytes to work with. We use-the nanosecond prescision timestamp with the nibbles reversed, and then+the nanosecond prescision Time with the nibbles reversed, and then overwrite the last two bytes with the supplied random value. @since 0.1.9 -}-createIdentifierSpan :: TimeStamp -> Word16 -> Span+createIdentifierSpan :: Time -> Word16 -> Span createIdentifierSpan time rand =- let t = fromIntegral (unTimeStamp time) :: Word64+ let t = fromIntegral (unTime time) :: Word64 r = fromIntegral rand :: Word64 w = (t .&. 0x0000ffffffffffff) .|. (shiftL r 48) in Span
lib/Core/Telemetry/Observability.hs view
@@ -170,9 +170,9 @@ import Core.Encoding.Json import Core.Program.Arguments import Core.Program.Context+import Core.Data.Clock import Core.Program.Logging import Core.System.Base (SomeException, liftIO)-import Core.System.External (TimeStamp (unTimeStamp), getCurrentTimeNanoseconds) import Core.Telemetry.Identifiers import Core.Text.Rope import Core.Text.Utilities (oxford, quote)@@ -442,7 +442,7 @@ datum2 <- readMVar v2 let datum2' = datum2- { durationFrom = Just (unTimeStamp finish - unTimeStamp start)+ { durationFrom = Just (unTime finish - unTime start) } let tel = telemetryChannelFrom context@@ -707,7 +707,7 @@ are designed to be used live; traces and spans should be created in real time in your code. -}-setStartTime :: TimeStamp -> Program τ ()+setStartTime :: Time -> Program τ () setStartTime time = do context <- getContext