Commit c3202d3f by Torkel Ödegaard

sessions: start session gc at startup but only after between 10 - 180 seconds

parent ebdd35d7
package middleware package middleware
import ( import (
"math/rand"
"time" "time"
"github.com/go-macaron/session" "github.com/go-macaron/session"
...@@ -8,6 +9,7 @@ import ( ...@@ -8,6 +9,7 @@ import (
_ "github.com/go-macaron/session/mysql" _ "github.com/go-macaron/session/mysql"
_ "github.com/go-macaron/session/postgres" _ "github.com/go-macaron/session/postgres"
_ "github.com/go-macaron/session/redis" _ "github.com/go-macaron/session/redis"
"github.com/grafana/grafana/pkg/log"
"gopkg.in/macaron.v1" "gopkg.in/macaron.v1"
) )
...@@ -22,10 +24,12 @@ var sessionManager *session.Manager ...@@ -22,10 +24,12 @@ var sessionManager *session.Manager
var sessionOptions *session.Options var sessionOptions *session.Options
var startSessionGC func() var startSessionGC func()
var getSessionCount func() int var getSessionCount func() int
var sessionLogger = log.New("session")
func init() { func init() {
startSessionGC = func() { startSessionGC = func() {
sessionManager.GC() sessionManager.GC()
sessionLogger.Debug("Session GC")
time.AfterFunc(time.Duration(sessionOptions.Gclifetime)*time.Second, startSessionGC) time.AfterFunc(time.Duration(sessionOptions.Gclifetime)*time.Second, startSessionGC)
} }
getSessionCount = func() int { getSessionCount = func() int {
...@@ -67,7 +71,9 @@ func Sessioner(options *session.Options) macaron.Handler { ...@@ -67,7 +71,9 @@ func Sessioner(options *session.Options) macaron.Handler {
panic(err) panic(err)
} }
go startSessionGC() // start GC threads after some random seconds
rndSeconds := 10 + rand.Int63n(180)
time.AfterFunc(time.Duration(rndSeconds)*time.Second, startSessionGC)
return func(ctx *Context) { return func(ctx *Context) {
ctx.Next() ctx.Next()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment