packages feed

core-telemetry 0.2.3.2 → 0.2.3.4

raw patch · 2 files changed

+25/−10 lines, 2 filesdep +zlibdep ~core-datadep ~core-programdep ~core-textPVP ok

version bump matches the API change (PVP)

Dependencies added: zlib

Dependency ranges changed: core-data, core-program, core-text

API changes (from Hackage documentation)

Files

core-telemetry.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           core-telemetry-version:        0.2.3.2+version:        0.2.3.4 synopsis:       Advanced telemetry description:    This is part of a library to help build command-line programs, both tools and                 longer-running daemons.@@ -52,9 +52,9 @@       async     , base >=4.11 && <5     , bytestring-    , core-data >=0.3.3-    , core-program >=0.5.0-    , core-text >=0.3.7+    , core-data >=0.3.3.1+    , core-program >=0.5.0.2+    , core-text >=0.3.7.1     , exceptions     , http-streams     , io-streams@@ -67,4 +67,5 @@     , template-haskell >=2.14 && <3     , text     , unix+    , zlib   default-language: Haskell2010
lib/Core/Telemetry/Honeycomb.hs view
@@ -35,8 +35,9 @@     honeycombExporter, ) where +import Codec.Compression.GZip qualified as GZip (compress) import Control.Exception.Safe qualified as Safe (catch, finally, throw)-import Core.Data.Clock (Time, unTime, getCurrentTimeNanoseconds)+import Core.Data.Clock (Time, getCurrentTimeNanoseconds, unTime) import Core.Data.Structures (Map, fromMap, insertKeyValue, intoMap, lookupKeyValue) import Core.Encoding.Json import Core.Program.Arguments@@ -49,6 +50,8 @@ import Core.Text.Utilities import Data.ByteString (ByteString) import Data.ByteString qualified as B (ByteString)+import Data.ByteString.Builder (Builder)+import Data.ByteString.Builder qualified as Builder (lazyByteString) import Data.ByteString.Char8 qualified as C (append, null, putStrLn) import Data.ByteString.Lazy qualified as L (ByteString) import Data.Fixed@@ -57,7 +60,8 @@ import Network.Http.Client import System.Environment (lookupEnv) import System.Exit (ExitCode (..))-import System.IO.Streams (InputStream)+import System.IO.Streams (InputStream, OutputStream)+import System.IO.Streams qualified as Streams (write) import System.Posix.Process qualified as Posix (exitImmediately)  {- |@@ -233,6 +237,13 @@             writeIORef r Nothing         ) +compressBody :: Bytes -> OutputStream Builder -> IO ()+compressBody bytes o = do+    let x = fromBytes bytes+    let x' = GZip.compress x+    let b = Builder.lazyByteString x'+    Streams.write (Just b) o+ postEventToHoneycombAPI :: IORef (Maybe Connection) -> ApiKey -> Dataset -> JsonValue -> IO () postEventToHoneycombAPI r apikey dataset json = attempt False   where@@ -242,7 +253,7 @@                 c <- acquireConnection r                  -- actually transmit telemetry to Honeycomb-                sendRequest c q (simpleBody (fromBytes (encodeToUTF8 json)))+                sendRequest c q (compressBody (encodeToUTF8 json))                 receiveResponse c handler             )             ( \(e :: SomeException) -> do@@ -251,14 +262,17 @@                 cleanupConnection r                 case retrying of                     False -> do-                        putStrLn "Reattempting"+                        putStrLn "internal: Reconnecting to Honeycomb"                         attempt True-                    True -> Safe.throw e+                    True -> do+                        putStrLn "internal: Failed to re-establish connection to Honeycomb"+                        Safe.throw e             )      q = buildRequest1 $ do         http POST (fromRope ("/1/batch/" <> dataset))         setContentType "application/json"+        setHeader "Content-Encoding" "gzip"         setHeader "X-Honeycomb-Team" (fromRope (apikey))      {-@@ -285,7 +299,7 @@                                     pure ()                                 _ -> do                                     -- some other status!-                                    putStrLn "Unexpected status returned;"+                                    putStrLn "internal: Unexpected status returned;"                                     C.putStrLn body                             _ -> putStrLn "internal: wtf?"                     _ -> do