Просмотр исходного кода

Merge pull request #11238 from grafana/11155-mysql-issue

middleware: recover and retry on session start
Carl Bergquist 7 лет назад
Родитель
Сommit
a8918047a2
1 измененных файлов с 12 добавлено и 0 удалено
  1. 12 0
      pkg/services/session/session.go

+ 12 - 0
pkg/services/session/session.go

@@ -105,6 +105,18 @@ type SessionWrapper struct {
 }
 
 func (s *SessionWrapper) Start(c *macaron.Context) error {
+	// See https://github.com/grafana/grafana/issues/11155 for details on why
+	// a recover and retry is needed
+	defer func() error {
+		if err := recover(); err != nil {
+			var retryErr error
+			s.session, retryErr = s.manager.Start(c)
+			return retryErr
+		}
+
+		return nil
+	}()
+
 	var err error
 	s.session, err = s.manager.Start(c)
 	return err