aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-04-04 18:03:34 +0800
committerGitHub <noreply@github.com>2017-04-04 18:03:34 +0800
commite50a5b77712d891ff409aa942a5cbc24e721b332 (patch)
tree422bfe1451c979fe76deff45b6d903a8f7629cfb
parent105b37f1b4f77a50625dc997eaab9d71c52495df (diff)
parentfb98a8c6c2964f59ef2be7677c81260181074db7 (diff)
downloadgo-tangerine-e50a5b77712d891ff409aa942a5cbc24e721b332.tar.gz
go-tangerine-e50a5b77712d891ff409aa942a5cbc24e721b332.tar.zst
go-tangerine-e50a5b77712d891ff409aa942a5cbc24e721b332.zip
Merge pull request #13856 from karalabe/ethstats-sanity-checks
ethstats: sanity check ethstats history queries
-rw-r--r--ethstats/ethstats.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go
index 10f611c79..aec8eb8bf 100644
--- a/ethstats/ethstats.go
+++ b/ethstats/ethstats.go
@@ -537,15 +537,29 @@ func (s *Service) reportHistory(conn *websocket.Conn, list []uint64) error {
// Gather the batch of blocks to report
history := make([]*blockStats, len(indexes))
for i, number := range indexes {
+ // Retrieve the next block if it's known to us
+ var block *types.Block
if s.eth != nil {
- history[len(history)-1-i] = s.assembleBlockStats(s.eth.BlockChain().GetBlockByNumber(number))
+ block = s.eth.BlockChain().GetBlockByNumber(number)
} else {
- history[len(history)-1-i] = s.assembleBlockStats(types.NewBlockWithHeader(s.les.BlockChain().GetHeaderByNumber(number)))
+ if header := s.les.BlockChain().GetHeaderByNumber(number); header != nil {
+ block = types.NewBlockWithHeader(header)
+ }
+ }
+ // If we do have the block, add to the history and continue
+ if block != nil {
+ history[len(history)-1-i] = s.assembleBlockStats(block)
+ continue
}
+ // Ran out of blocks, cut the report short and send
+ history = history[len(history)-i:]
}
// Assemble the history report and send it to the server
- log.Trace("Sending historical blocks to ethstats", "first", history[0].Number, "last", history[len(history)-1].Number)
-
+ if len(history) > 0 {
+ log.Trace("Sending historical blocks to ethstats", "first", history[0].Number, "last", history[len(history)-1].Number)
+ } else {
+ log.Trace("No history to send to stats server")
+ }
stats := map[string]interface{}{
"id": s.node,
"history": history,