From b734de16e67b31e5d5942a3fe933e4f6c071a30b Mon Sep 17 00:00:00 2001 From: Kevin Kreitner Date: Mon, 8 Nov 2021 16:51:11 +0100 Subject: [PATCH] Refactor refreshSession method to reduce number of return --- pkg/middleware/stored_session.go | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) 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 {