From: Tom Clegg Date: Tue, 2 Mar 2021 14:55:16 +0000 (-0500) Subject: 16745: Don't store nil in an atomic.Value (panic). X-Git-Tag: 2.2.0~114^2~4 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/7d3775f7dcd87bb5c210e33ff099460074080749 16745: Don't store nil in an atomic.Value (panic). Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/services/keep-web/cache.go b/services/keep-web/cache.go index af143c77ed..ec48be6090 100644 --- a/services/keep-web/cache.go +++ b/services/keep-web/cache.go @@ -218,6 +218,7 @@ func (c *cache) GetSession(token string) (arvados.CustomFileSystem, error) { now := time.Now() ent, _ := c.sessions.Get(token) sess, _ := ent.(*cachedSession) + expired := false if sess == nil { c.metrics.sessionMisses.Inc() sess = &cachedSession{ @@ -226,13 +227,13 @@ func (c *cache) GetSession(token string) (arvados.CustomFileSystem, error) { c.sessions.Add(token, sess) } else if sess.expire.Before(now) { c.metrics.sessionMisses.Inc() - sess.fs.Store(nil) + expired = true } else { c.metrics.sessionHits.Inc() } go c.pruneSessions() fs, _ := sess.fs.Load().(arvados.CustomFileSystem) - if fs != nil { + if fs != nil && !expired { return fs, nil } ac, err := arvados.NewClientFromConfig(c.cluster)