From: Ondrej Fabry Date: Tue, 16 Apr 2019 13:13:18 +0000 (+0200) Subject: Fix crash in stats for removed interfaces/nodes X-Git-Tag: v0.1.0~17 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=e24215b47ad5cd6599973c3a76a375b99ad75d44;p=govpp.git Fix crash in stats for removed interfaces/nodes Change-Id: I36b4cd2625c7f0c5846fe402be7b2aeece4707f8 Signed-off-by: Ondrej Fabry --- diff --git a/adapter/vppapiclient/stat_client.go b/adapter/vppapiclient/stat_client.go index a2a9826..55705bd 100644 --- a/adapter/vppapiclient/stat_client.go +++ b/adapter/vppapiclient/stat_client.go @@ -285,10 +285,11 @@ func (c *statClient) DumpStats(patterns ...string) (stats []*adapter.StatEntry, var vector []adapter.Name for k := 0; k < length; k++ { s := C.govpp_stat_segment_data_get_name_vector_index(&v, C.int(k)) - if s == nil { - continue + var name adapter.Name + if s != nil { + name = adapter.Name(C.GoString(s)) } - vector = append(vector, adapter.Name(C.GoString(s))) + vector = append(vector, name) } stat.Data = adapter.NameStat(vector) diff --git a/core/stats.go b/core/stats.go index 4cbd9f2..48b516c 100644 --- a/core/stats.go +++ b/core/stats.go @@ -196,6 +196,9 @@ func (c *StatsConnection) GetNodeStats() (*api.NodeStats, error) { } } for i, v := range perNode { + if len(nodeStats.Nodes) <= i { + break + } nodeCounters := nodeStats.Nodes[i] fn(&nodeCounters, v) nodeStats.Nodes[i] = nodeCounters @@ -257,6 +260,9 @@ func (c *StatsConnection) GetInterfaceStats() (*api.InterfaceStats, error) { } } for i, v := range perIf { + if len(ifStats.Interfaces) <= i { + break + } ifCounters := ifStats.Interfaces[i] fn(&ifCounters, v) ifStats.Interfaces[i] = ifCounters