From ab235df56155ebc65d76e0b9f3be1271365a3df0 Mon Sep 17 00:00:00 2001 From: Hao Duan Date: Tue, 26 May 2020 18:09:00 +0800 Subject: [PATCH] ethstats: avoid blocking chan when received invalid stats request #21073 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ethstats: avoid blocking chan when received invalid stats request * ethstats: minor code polishes Co-authored-by: Péter Szilágyi --- ethstats/ethstats.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go index 0e69a00251c0..fe326fb54630 100644 --- a/ethstats/ethstats.go +++ b/ethstats/ethstats.go @@ -393,9 +393,12 @@ func (s *Service) readLoop(conn *connWrapper) { // Make sure the request is valid and doesn't crash us request, ok := msg["emit"][1].(map[string]interface{}) if !ok { - log.Debug("Invalid stats history request", "msg", msg["emit"][1]) - s.histCh <- nil - continue // Ethstats sometime sends invalid history requests, ignore those + log.Warn("Invalid stats history request", "msg", msg["emit"][1]) + select { + case s.histCh <- nil: // Treat it as an no indexes request + default: + } + continue } list, ok := request["list"].([]interface{}) if !ok { @@ -423,7 +426,7 @@ func (s *Service) readLoop(conn *connWrapper) { } } -// nodeInfo is the collection of metainformation about a node that is displayed +// nodeInfo is the collection of meta information about a node that is displayed // on the monitoring page. type nodeInfo struct { Name string `json:"name"`