From 27abe90183ead191c08a941cecf9c52570b2cd8a Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Fri, 30 Aug 2019 21:29:43 +0200 Subject: [PATCH] Fix panic in Redis key metricset (#13426) (#13434) If a key is removed during a fetch, `FetchKeyInfo` returns a nil object, this nil object should be ignored, if passed to `eventMapping` it panics. (cherry picked from commit 318a041f61dab3c495ff36d0074bd87d6935dfef) --- CHANGELOG.next.asciidoc | 1 + metricbeat/module/redis/key/key.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index c2a6acbbf93..ff41fe2fb71 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -183,6 +183,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Fix redis key metricset dashboard references to index pattern. {pull}13303[13303] - Check if fields in DBInstance is nil in rds metricset. {pull}13294[13294] {issue}13037[13037] - Fix silent failures in kafka and prometheus module. {pull}13353[13353] {issue}13252[13252] +- Fix panic in Redis Key metricset when collecting information from a removed key. {pull}13426[13426] *Packetbeat* diff --git a/metricbeat/module/redis/key/key.go b/metricbeat/module/redis/key/key.go index d82e994621e..6eab8d0aeaa 100644 --- a/metricbeat/module/redis/key/key.go +++ b/metricbeat/module/redis/key/key.go @@ -112,6 +112,10 @@ func (m *MetricSet) Fetch(r mb.ReporterV2) error { r.Error(err) continue } + if keyInfo == nil { + m.Logger().Debugf("Ignoring removed key %s from keyspace %d", key, keyspace) + continue + } event := eventMapping(keyspace, keyInfo) if !r.Event(event) { m.Logger().Debug("Failed to report event, interrupting fetch")