From 61a90136ca5fcfaf230eeb279264ae85dcc1afa2 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Aug 2021 12:05:14 +0200 Subject: [PATCH] proto: add boot_timestamp to Heartbeat Allows for precise uptime calculation. Change-Id: I57d022ec10a56df57a4a1f79ae892eb8899f7154 --- bridge/pkg/p2p/p2p.go | 15 +++++++++------ proto/gossip/v1/gossip.proto | 3 +++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/bridge/pkg/p2p/p2p.go b/bridge/pkg/p2p/p2p.go index d04fbba0..e00b786b 100644 --- a/bridge/pkg/p2p/p2p.go +++ b/bridge/pkg/p2p/p2p.go @@ -176,6 +176,8 @@ func Run(obsvC chan *gossipv1.SignedObservation, sendC chan []byte, rawHeartbeat logger.Info("Node has been started", zap.String("peer_id", h.ID().String()), zap.String("addrs", fmt.Sprintf("%v", h.Addrs()))) + bootTime := time.Now() + go func() { ctr := int64(0) tick := time.NewTicker(15 * time.Second) @@ -193,12 +195,13 @@ func Run(obsvC chan *gossipv1.SignedObservation, sendC chan []byte, rawHeartbeat } heartbeat := &gossipv1.Heartbeat{ - NodeName: nodeName, - Counter: ctr, - Timestamp: time.Now().UnixNano(), - Networks: networks, - Version: version.Version(), - GuardianAddr: DefaultRegistry.guardianAddress, + NodeName: nodeName, + Counter: ctr, + Timestamp: time.Now().UnixNano(), + Networks: networks, + Version: version.Version(), + GuardianAddr: DefaultRegistry.guardianAddress, + BootTimestamp: bootTime.UnixNano(), } ourAddr := ethcrypto.PubkeyToAddress(gk.PublicKey) diff --git a/proto/gossip/v1/gossip.proto b/proto/gossip/v1/gossip.proto index 86ccbc24..88e69724 100644 --- a/proto/gossip/v1/gossip.proto +++ b/proto/gossip/v1/gossip.proto @@ -50,6 +50,9 @@ message Heartbeat { // Human-readable representation of the guardian key's address. string guardian_addr = 6; + + // UNIX boot timestamp. + int64 boot_timestamp = 7; } // A SignedObservation is a signed statement by a given guardian node