Protect part of emitMetrics from panic behavior during post-seal (#10708)

* vault/core_metrics.go

* changelog

* comments
This commit is contained in:
Hridoy Roy 2021-01-19 14:06:50 -08:00 committed by GitHub
parent 0e3bddf295
commit 0becd555cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 0 deletions

3
changelog/10708.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
metrics: Protect emitMetrics from panicking during post-seal
```

View File

@ -259,6 +259,13 @@ func (c *Core) findKvMounts() []*kvMount {
c.mountsLock.RLock() c.mountsLock.RLock()
defer c.mountsLock.RUnlock() defer c.mountsLock.RUnlock()
// emitMetrics doesn't grab the statelock, so this code might run during or after the seal process.
// Therefore, we need to check if c.mounts is nil. If we do not, emitMetrics will panic if this is
// run after seal.
if c.mounts == nil {
return mounts
}
for _, entry := range c.mounts.Entries { for _, entry := range c.mounts.Entries {
if entry.Type == "kv" { if entry.Type == "kv" {
version, ok := entry.Options["version"] version, ok := entry.Options["version"]