[AI assisted]: Improve system console statistics performance (#29899)
```release-note NONE ``` Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6046a304b2
Коммит
ae9e6174e5
25
server/channels/jobs/refresh_materialized_views/scheduler.go
Обычный файл
25
server/channels/jobs/refresh_materialized_views/scheduler.go
Обычный файл
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package refresh_materialized_views
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/mattermost/server/public/model"
|
||||
"github.com/mattermost/mattermost/server/v8/channels/jobs"
|
||||
)
|
||||
|
||||
func MakeScheduler(jobServer *jobs.JobServer, sqlDriverName string) *jobs.DailyScheduler {
|
||||
startTime := func(cfg *model.Config) *time.Time {
|
||||
parsedTime, err := time.Parse("15:04", *cfg.ServiceSettings.RefreshPostStatsRunTime)
|
||||
if err == nil {
|
||||
return &parsedTime
|
||||
}
|
||||
return nil
|
||||
}
|
||||
isEnabled := func(cfg *model.Config) bool {
|
||||
return sqlDriverName == model.DatabaseDriverPostgres
|
||||
}
|
||||
return jobs.NewDailyScheduler(jobServer, model.JobTypeRefreshMaterializedViews, startTime, isEnabled)
|
||||
}
|
||||
34
server/channels/jobs/refresh_materialized_views/worker.go
Обычный файл
34
server/channels/jobs/refresh_materialized_views/worker.go
Обычный файл
@@ -0,0 +1,34 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package refresh_materialized_views
|
||||
|
||||
import (
|
||||
"github.com/mattermost/mattermost/server/public/model"
|
||||
"github.com/mattermost/mattermost/server/public/shared/mlog"
|
||||
"github.com/mattermost/mattermost/server/v8/channels/jobs"
|
||||
)
|
||||
|
||||
const jobName = "RefreshMaterializedViews"
|
||||
|
||||
func MakeWorker(jobServer *jobs.JobServer, sqlDriverName string) *jobs.SimpleWorker {
|
||||
isEnabled := func(cfg *model.Config) bool {
|
||||
return sqlDriverName == model.DatabaseDriverPostgres
|
||||
}
|
||||
execute := func(logger mlog.LoggerIFace, job *model.Job) error {
|
||||
defer jobServer.HandleJobPanic(logger, job)
|
||||
|
||||
if err := jobServer.Store.Post().RefreshPostStats(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := jobServer.Store.FileInfo().RefreshFileStats(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return jobServer.Store.User().RefreshPostStatsForUsers()
|
||||
}
|
||||
|
||||
worker := jobs.NewSimpleWorker(jobName, jobServer, execute, isEnabled)
|
||||
return worker
|
||||
}
|
||||
Ссылка в новой задаче
Block a user