Skip to content

Commit

Permalink
Use StartupTracer to log start time and db validation on startup
Browse files Browse the repository at this point in the history
  • Loading branch information
coot committed Nov 22, 2021
1 parent e2a4b0e commit 7b0fb65
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 8 deletions.
13 changes: 5 additions & 8 deletions cardano-node/src/Cardano/Node/Run.hs
Expand Up @@ -29,7 +29,6 @@ import Data.Text (breakOn, pack, take)
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text
import Data.Time.Clock (getCurrentTime)
import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
import Data.Version (showVersion)
import Network.HostName (getHostName)
import Network.Socket (Socket)
Expand Down Expand Up @@ -241,9 +240,8 @@ handleSimpleNode scp runP p2pMode trace nodeTracers nc onKernel = do
logP2PWarning

let pInfo = Protocol.protocolInfo runP
tracer = toLogObject trace

createTracers nc trace tracer
createTracers nc trace

(publicIPv4SocketOrAddr, publicIPv6SocketOrAddr, localSocketOrPath) <- do
result <- runExceptT (gatherConfiguredSockets nc)
Expand Down Expand Up @@ -387,15 +385,14 @@ handleSimpleNode scp runP p2pMode trace nodeTracers nc onKernel = do
createTracers
:: NodeConfiguration
-> Trace IO Text
-> Tracer IO Text
-> IO ()
createTracers NodeConfiguration { ncValidateDB }
tr tracer = do
tr = do
startTime <- getCurrentTime
traceNodeBasicInfo tr =<< nodeBasicInfo nc scp startTime
traceCounter "nodeStartTime" tr (ceiling $ utcTimeToPOSIXSeconds startTime)

when ncValidateDB $ traceWith tracer "Performing DB validation"
traceWith (startupTracer nodeTracers)
$ StartupTime startTime
when ncValidateDB $ traceWith (startupTracer nodeTracers) StartupDBValidation

traceNodeBasicInfo :: Trace IO Text -> [LogObject Text] -> IO ()
traceNodeBasicInfo tr basicInfoItems =
Expand Down
25 changes: 25 additions & 0 deletions cardano-node/src/Cardano/Tracing/Startup.hs
Expand Up @@ -13,6 +13,8 @@ import Data.Map (Map)
import qualified Data.Map as Map
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Time.Clock (UTCTime)
import Data.Time.Clock.POSIX (POSIXTime, utcTimeToPOSIXSeconds)

import Cardano.Slotting.Slot (SlotNo (..))
import Cardano.Node.Configuration.TopologyP2P (UseLedger (..))
Expand Down Expand Up @@ -48,11 +50,15 @@ data StartupTrace blk =
(Map NodeToClientVersion (BlockNodeToClientVersion blk))

| StartupP2PInfo DiffusionMode

| StartupTime UTCTime

| StartupNetworkMagic NetworkMagic

| StartupSocketConfigError SocketConfigError

| StartupDBValidation

| NetworkConfigUpdate

| NetworkConfigUpdateError Text
Expand Down Expand Up @@ -100,11 +106,21 @@ instance ( Show (BlockNodeToNodeVersion blk)
]
toObject _verb (StartupP2PInfo diffusionMode)
= mkObject [ "diffusionMode" .= String (Text.pack . show $ diffusionMode) ]
toObject _verb (StartupTime time) =
mkObject [ "startupTime" .= String ( Text.pack
. show
. (ceiling :: POSIXTime -> Int)
. utcTimeToPOSIXSeconds
$ time
)
]
toObject _verb (StartupNetworkMagic networkMagic) =
mkObject [ "networkMagic" .= String ( Text.pack . show . unNetworkMagic
$ networkMagic) ]
toObject _verb (StartupSocketConfigError err) =
mkObject [ "error" .= String (Text.pack . show $ err) ]
toObject _verb StartupDBValidation =
mkObject [ "message" .= String "start db validation" ]
toObject _verb NetworkConfigUpdate =
mkObject [ "message" .= String "ntework configuration update" ]
toObject _verb (NetworkConfigUpdateError err) =
Expand Down Expand Up @@ -154,12 +170,21 @@ ppStartupInfoTrace (StartupP2PInfo diffusionMode) =
InitiatorAndResponderDiffusionMode -> "initiator and responder diffusion mode"
InitiatorOnlyDiffusionMode -> "initaitor only diffusion mode"

ppStartupInfoTrace (StartupTime time) =
Text.pack $ "startup time: "
++ ( show
. (ceiling :: POSIXTime -> Int)
. utcTimeToPOSIXSeconds
$ time
)
ppStartupInfoTrace (StartupNetworkMagic networkMagic) =
"network magic: " <> Text.pack (show $ unNetworkMagic networkMagic)

ppStartupInfoTrace (StartupSocketConfigError err) =
Text.pack $ renderSocketConfigError err

ppStartupInfoTrace StartupDBValidation = "Performing DB validation"

ppStartupInfoTrace NetworkConfigUpdate = "Performing topology configuration update"
ppStartupInfoTrace (NetworkConfigUpdateError err) = err
ppStartupInfoTrace (NetworkConfig localRoots publicRoots useLedgerAfter) =
Expand Down

0 comments on commit 7b0fb65

Please sign in to comment.