Loading server/leaderboard_rank_cache.go +5 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,11 @@ func NewLocalLeaderboardRankCache(ctx context.Context, startupLogger *zap.Logger expiryUnix = leaderboard.EndTime } if expiryUnix <= nowTime.Unix() { // Last scores for this leaderboard have expired, do not cache them. continue } // Prepare structure to receive rank data. key := LeaderboardWithExpiry{LeaderboardId: leaderboard.Id, Expiry: expiryUnix} cache.Lock() Loading server/leaderboard_scheduler.go +18 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ type LocalLeaderboardScheduler struct { func NewLocalLeaderboardScheduler(logger *zap.Logger, db *sql.DB, config Config, cache LeaderboardCache, rankCache LeaderboardRankCache) LeaderboardScheduler { ctx, ctxCancelFn := context.WithCancel(context.Background()) return &LocalLeaderboardScheduler{ s := &LocalLeaderboardScheduler{ logger: logger, db: db, config: config, Loading @@ -86,6 +86,23 @@ func NewLocalLeaderboardScheduler(logger *zap.Logger, db *sql.DB, config Config, ctx: ctx, ctxCancelFn: ctxCancelFn, } // Ensure trimming of expired scores that don't have resets or functions attached. go func() { ticker := time.NewTicker(1 * time.Hour) defer ticker.Stop() for { select { case <-ctx.Done(): return case t := <-ticker.C: s.rankCache.TrimExpired(t.Unix()) } } }() return s } func (ls *LocalLeaderboardScheduler) Start(runtime *Runtime) { Loading Loading
server/leaderboard_rank_cache.go +5 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,11 @@ func NewLocalLeaderboardRankCache(ctx context.Context, startupLogger *zap.Logger expiryUnix = leaderboard.EndTime } if expiryUnix <= nowTime.Unix() { // Last scores for this leaderboard have expired, do not cache them. continue } // Prepare structure to receive rank data. key := LeaderboardWithExpiry{LeaderboardId: leaderboard.Id, Expiry: expiryUnix} cache.Lock() Loading
server/leaderboard_scheduler.go +18 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ type LocalLeaderboardScheduler struct { func NewLocalLeaderboardScheduler(logger *zap.Logger, db *sql.DB, config Config, cache LeaderboardCache, rankCache LeaderboardRankCache) LeaderboardScheduler { ctx, ctxCancelFn := context.WithCancel(context.Background()) return &LocalLeaderboardScheduler{ s := &LocalLeaderboardScheduler{ logger: logger, db: db, config: config, Loading @@ -86,6 +86,23 @@ func NewLocalLeaderboardScheduler(logger *zap.Logger, db *sql.DB, config Config, ctx: ctx, ctxCancelFn: ctxCancelFn, } // Ensure trimming of expired scores that don't have resets or functions attached. go func() { ticker := time.NewTicker(1 * time.Hour) defer ticker.Stop() for { select { case <-ctx.Done(): return case t := <-ticker.C: s.rankCache.TrimExpired(t.Unix()) } } }() return s } func (ls *LocalLeaderboardScheduler) Start(runtime *Runtime) { Loading