diff --git a/pkg/middleware/stored_session.go b/pkg/middleware/stored_session.go index c9770380..0fb1e645 100644 --- a/pkg/middleware/stored_session.go +++ b/pkg/middleware/stored_session.go @@ -145,15 +145,7 @@ func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.R err := session.ObtainLock(req.Context(), SessionLockExpireTime) if err != nil { logger.Errorf("Unable to obtain lock: %v", err) - wasRefreshed, err := s.checkForConcurrentRefresh(session, req) - if err != nil { - logger.Errorf("Unable to wait for obtained lock: %v", err) - return err - } - if !wasRefreshed { - return errors.New("unable to obtain lock and session was also not refreshed via concurrent request") - } - return nil + return s.handleObtainLockError(req, session) } defer func() { err = session.ReleaseLock(req.Context()) @@ -195,6 +187,18 @@ func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.R return err } +func (s *storedSessionLoader) handleObtainLockError(req *http.Request, session *sessionsapi.SessionState) error { + wasRefreshed, err := s.checkForConcurrentRefresh(session, req) + if err != nil { + logger.Errorf("Unable to wait for obtained lock: %v", err) + return err + } + if !wasRefreshed { + return errors.New("unable to obtain lock and session was also not refreshed via concurrent request") + } + return nil +} + func (s *storedSessionLoader) updateSessionFromStore(req *http.Request, session *sessionsapi.SessionState) error { sessionStored, err := s.store.Load(req) if err != nil {