Remove all remaining occurences of fakeApp (#17661)
* Remove all remaining occurences of fakeApp Migrated any remaining methods under server. And for everything else, renamed fakeApp to app. The word fakeApp is confusing and we should just call it for what it is - an app. https://focalboard-community.octo.mattermost.com/workspace/zyoahc9uapdn3xdptac6jb69ic?id=285b80a3-257d-41f6-8cf4-ed80ca9d92e5&v=495cdb4d-c13a-4992-8eb9-80cfee2819a4&c=639a0bc1-4401-43d5-81ec-0dd54e796d9a ```release-note NONE ``` * fix tests
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
0bc065d147
Коммит
a4f7df6f6e
@@ -294,9 +294,6 @@ type AppIface interface {
|
|||||||
SendAdminUpgradeRequestEmail(username string, subscription *model.Subscription, action string) *model.AppError
|
SendAdminUpgradeRequestEmail(username string, subscription *model.Subscription, action string) *model.AppError
|
||||||
// SendNoCardPaymentFailedEmail
|
// SendNoCardPaymentFailedEmail
|
||||||
SendNoCardPaymentFailedEmail() *model.AppError
|
SendNoCardPaymentFailedEmail() *model.AppError
|
||||||
// ServePluginPublicRequest serves public plugin files
|
|
||||||
// at the URL http(s)://$SITE_URL/plugins/$PLUGIN_ID/public/{anything}
|
|
||||||
ServePluginPublicRequest(w http.ResponseWriter, r *http.Request)
|
|
||||||
// SessionHasPermissionToManageBot returns nil if the session has access to manage the given bot.
|
// SessionHasPermissionToManageBot returns nil if the session has access to manage the given bot.
|
||||||
// This function deviates from other authorization checks in returning an error instead of just
|
// This function deviates from other authorization checks in returning an error instead of just
|
||||||
// a boolean, allowing the permission failure to be exposed with more granularity.
|
// a boolean, allowing the permission failure to be exposed with more granularity.
|
||||||
@@ -973,7 +970,6 @@ type AppIface interface {
|
|||||||
SendPasswordReset(email string, siteURL string) (bool, *model.AppError)
|
SendPasswordReset(email string, siteURL string) (bool, *model.AppError)
|
||||||
SendPaymentFailedEmail(failedPayment *model.FailedPayment) *model.AppError
|
SendPaymentFailedEmail(failedPayment *model.FailedPayment) *model.AppError
|
||||||
ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string)
|
ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string)
|
||||||
ServePluginRequest(w http.ResponseWriter, r *http.Request)
|
|
||||||
SessionCacheLength() int
|
SessionCacheLength() int
|
||||||
SessionHasPermissionTo(session model.Session, permission *model.Permission) bool
|
SessionHasPermissionTo(session model.Session, permission *model.Permission) bool
|
||||||
SessionHasPermissionToAny(session model.Session, permissions []*model.Permission) bool
|
SessionHasPermissionToAny(session model.Session, permissions []*model.Permission) bool
|
||||||
|
|||||||
@@ -412,7 +412,7 @@ func (a *App) doPluginRequest(c *request.Context, method, rawURL string, values
|
|||||||
params["plugin_id"] = pluginID
|
params["plugin_id"] = pluginID
|
||||||
r = mux.SetURLVars(r, params)
|
r = mux.SetURLVars(r, params)
|
||||||
|
|
||||||
a.ServePluginRequest(w, r)
|
a.srv.ServePluginRequest(w, r)
|
||||||
|
|
||||||
resp := &http.Response{
|
resp := &http.Response{
|
||||||
StatusCode: w.status,
|
StatusCode: w.status,
|
||||||
|
|||||||
@@ -262,13 +262,9 @@ func (a *App) UpdateMobileAppBadge(userID string) {
|
|||||||
|
|
||||||
func (s *Server) createPushNotificationsHub() {
|
func (s *Server) createPushNotificationsHub() {
|
||||||
buffer := *s.Config().EmailSettings.PushNotificationBuffer
|
buffer := *s.Config().EmailSettings.PushNotificationBuffer
|
||||||
// XXX: This can be _almost_ removed except that there is a dependency with
|
|
||||||
// a.ClearSessionCacheForUser(session.UserId) which invalidates caches,
|
|
||||||
// which then takes to web_hub code. It's a bit complicated, so leaving as is for now.
|
|
||||||
fakeApp := New(ServerConnector(s))
|
|
||||||
hub := PushNotificationsHub{
|
hub := PushNotificationsHub{
|
||||||
notificationsChan: make(chan PushNotification, buffer),
|
notificationsChan: make(chan PushNotification, buffer),
|
||||||
app: fakeApp,
|
app: New(ServerConnector(s)),
|
||||||
wg: new(sync.WaitGroup),
|
wg: new(sync.WaitGroup),
|
||||||
semaWg: new(sync.WaitGroup),
|
semaWg: new(sync.WaitGroup),
|
||||||
sema: make(chan struct{}, runtime.NumCPU()*8), // numCPU * 8 is a good amount of concurrency.
|
sema: make(chan struct{}, runtime.NumCPU()*8), // numCPU * 8 is a good amount of concurrency.
|
||||||
|
|||||||
@@ -14272,36 +14272,6 @@ func (a *OpenTracingAppLayer) ServeInterPluginRequest(w http.ResponseWriter, r *
|
|||||||
a.app.ServeInterPluginRequest(w, r, sourcePluginId, destinationPluginId)
|
a.app.ServeInterPluginRequest(w, r, sourcePluginId, destinationPluginId)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) ServePluginPublicRequest(w http.ResponseWriter, r *http.Request) {
|
|
||||||
origCtx := a.ctx
|
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.ServePluginPublicRequest")
|
|
||||||
|
|
||||||
a.ctx = newCtx
|
|
||||||
a.app.Srv().Store.SetContext(newCtx)
|
|
||||||
defer func() {
|
|
||||||
a.app.Srv().Store.SetContext(origCtx)
|
|
||||||
a.ctx = origCtx
|
|
||||||
}()
|
|
||||||
|
|
||||||
defer span.Finish()
|
|
||||||
a.app.ServePluginPublicRequest(w, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) ServePluginRequest(w http.ResponseWriter, r *http.Request) {
|
|
||||||
origCtx := a.ctx
|
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.ServePluginRequest")
|
|
||||||
|
|
||||||
a.ctx = newCtx
|
|
||||||
a.app.Srv().Store.SetContext(newCtx)
|
|
||||||
defer func() {
|
|
||||||
a.app.Srv().Store.SetContext(origCtx)
|
|
||||||
a.ctx = origCtx
|
|
||||||
}()
|
|
||||||
|
|
||||||
defer span.Finish()
|
|
||||||
a.app.ServePluginRequest(w, r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) SessionCacheLength() int {
|
func (a *OpenTracingAppLayer) SessionCacheLength() int {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.SessionCacheLength")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.SessionCacheLength")
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ import (
|
|||||||
"github.com/mattermost/mattermost-server/v5/utils"
|
"github.com/mattermost/mattermost-server/v5/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (a *App) ServePluginRequest(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) ServePluginRequest(w http.ResponseWriter, r *http.Request) {
|
||||||
pluginsEnvironment := a.GetPluginsEnvironment()
|
pluginsEnvironment := s.GetPluginsEnvironment()
|
||||||
if pluginsEnvironment == nil {
|
if pluginsEnvironment == nil {
|
||||||
err := model.NewAppError("ServePluginRequest", "app.plugin.disabled.app_error", nil, "Enable plugins to serve plugin requests", http.StatusNotImplemented)
|
err := model.NewAppError("ServePluginRequest", "app.plugin.disabled.app_error", nil, "Enable plugins to serve plugin requests", http.StatusNotImplemented)
|
||||||
a.Log().Error(err.Error())
|
s.Log.Error(err.Error())
|
||||||
w.WriteHeader(err.StatusCode)
|
w.WriteHeader(err.StatusCode)
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
w.Write([]byte(err.ToJson()))
|
w.Write([]byte(err.ToJson()))
|
||||||
@@ -34,7 +34,7 @@ func (a *App) ServePluginRequest(w http.ResponseWriter, r *http.Request) {
|
|||||||
params := mux.Vars(r)
|
params := mux.Vars(r)
|
||||||
hooks, err := pluginsEnvironment.HooksForPlugin(params["plugin_id"])
|
hooks, err := pluginsEnvironment.HooksForPlugin(params["plugin_id"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.Log().Error("Access to route for non-existent plugin",
|
s.Log.Error("Access to route for non-existent plugin",
|
||||||
mlog.String("missing_plugin_id", params["plugin_id"]),
|
mlog.String("missing_plugin_id", params["plugin_id"]),
|
||||||
mlog.String("url", r.URL.String()),
|
mlog.String("url", r.URL.String()),
|
||||||
mlog.Err(err))
|
mlog.Err(err))
|
||||||
@@ -42,7 +42,7 @@ func (a *App) ServePluginRequest(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
a.servePluginRequest(w, r, hooks.ServeHTTP)
|
s.servePluginRequest(w, r, hooks.ServeHTTP)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string) {
|
func (a *App) ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string) {
|
||||||
@@ -81,7 +81,7 @@ func (a *App) ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, so
|
|||||||
|
|
||||||
// ServePluginPublicRequest serves public plugin files
|
// ServePluginPublicRequest serves public plugin files
|
||||||
// at the URL http(s)://$SITE_URL/plugins/$PLUGIN_ID/public/{anything}
|
// at the URL http(s)://$SITE_URL/plugins/$PLUGIN_ID/public/{anything}
|
||||||
func (a *App) ServePluginPublicRequest(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) ServePluginPublicRequest(w http.ResponseWriter, r *http.Request) {
|
||||||
if strings.HasSuffix(r.URL.Path, "/") {
|
if strings.HasSuffix(r.URL.Path, "/") {
|
||||||
http.NotFound(w, r)
|
http.NotFound(w, r)
|
||||||
return
|
return
|
||||||
@@ -91,7 +91,7 @@ func (a *App) ServePluginPublicRequest(w http.ResponseWriter, r *http.Request) {
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
pluginID := vars["plugin_id"]
|
pluginID := vars["plugin_id"]
|
||||||
|
|
||||||
pluginsEnv := a.GetPluginsEnvironment()
|
pluginsEnv := s.GetPluginsEnvironment()
|
||||||
|
|
||||||
// Check if someone has nullified the pluginsEnv in the meantime
|
// Check if someone has nullified the pluginsEnv in the meantime
|
||||||
if pluginsEnv == nil {
|
if pluginsEnv == nil {
|
||||||
@@ -115,11 +115,11 @@ func (a *App) ServePluginPublicRequest(w http.ResponseWriter, r *http.Request) {
|
|||||||
http.ServeFile(w, r, publicFile)
|
http.ServeFile(w, r, publicFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) servePluginRequest(w http.ResponseWriter, r *http.Request, handler func(*plugin.Context, http.ResponseWriter, *http.Request)) {
|
func (s *Server) servePluginRequest(w http.ResponseWriter, r *http.Request, handler func(*plugin.Context, http.ResponseWriter, *http.Request)) {
|
||||||
token := ""
|
token := ""
|
||||||
context := &plugin.Context{
|
context := &plugin.Context{
|
||||||
RequestId: model.NewId(),
|
RequestId: model.NewId(),
|
||||||
IpAddress: utils.GetIPAddress(r, a.Config().ServiceSettings.TrustedProxyIPHeader),
|
IpAddress: utils.GetIPAddress(r, s.Config().ServiceSettings.TrustedProxyIPHeader),
|
||||||
AcceptLanguage: r.Header.Get("Accept-Language"),
|
AcceptLanguage: r.Header.Get("Accept-Language"),
|
||||||
UserAgent: r.UserAgent(),
|
UserAgent: r.UserAgent(),
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,7 @@ func (a *App) servePluginRequest(w http.ResponseWriter, r *http.Request, handler
|
|||||||
|
|
||||||
r.Header.Del("Mattermost-User-Id")
|
r.Header.Del("Mattermost-User-Id")
|
||||||
if token != "" {
|
if token != "" {
|
||||||
session, err := a.GetSession(token)
|
session, err := New(ServerConnector(s)).GetSession(token)
|
||||||
defer ReturnSessionToPool(session)
|
defer ReturnSessionToPool(session)
|
||||||
|
|
||||||
csrfCheckPassed := false
|
csrfCheckPassed := false
|
||||||
@@ -184,10 +184,10 @@ func (a *App) servePluginRequest(w http.ResponseWriter, r *http.Request, handler
|
|||||||
mlog.String("user_id", userID),
|
mlog.String("user_id", userID),
|
||||||
}
|
}
|
||||||
|
|
||||||
if *a.Config().ServiceSettings.ExperimentalStrictCSRFEnforcement {
|
if *s.Config().ServiceSettings.ExperimentalStrictCSRFEnforcement {
|
||||||
a.Log().Warn(csrfErrorMessage, fields...)
|
s.Log.Warn(csrfErrorMessage, fields...)
|
||||||
} else {
|
} else {
|
||||||
a.Log().Debug(csrfErrorMessage, fields...)
|
s.Log.Debug(csrfErrorMessage, fields...)
|
||||||
csrfCheckPassed = true
|
csrfCheckPassed = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ func (a *App) servePluginRequest(w http.ResponseWriter, r *http.Request, handler
|
|||||||
|
|
||||||
params := mux.Vars(r)
|
params := mux.Vars(r)
|
||||||
|
|
||||||
subpath, _ := utils.GetSubpathFromConfig(a.Config())
|
subpath, _ := utils.GetSubpathFromConfig(s.Config())
|
||||||
|
|
||||||
newQuery := r.URL.Query()
|
newQuery := r.URL.Query()
|
||||||
newQuery.Del("access_token")
|
newQuery.Del("access_token")
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ func TestServePluginPublicRequest(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
rr := httptest.NewRecorder()
|
rr := httptest.NewRecorder()
|
||||||
handler := http.HandlerFunc(app.ServePluginPublicRequest)
|
handler := http.HandlerFunc(srv.ServePluginPublicRequest)
|
||||||
handler.ServeHTTP(rr, req)
|
handler.ServeHTTP(rr, req)
|
||||||
|
|
||||||
assert.Equal(t, http.StatusNotFound, rr.Code)
|
assert.Equal(t, http.StatusNotFound, rr.Code)
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ func TestServePluginRequest(t *testing.T) {
|
|||||||
|
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
r := httptest.NewRequest("GET", "/plugins/foo/bar", nil)
|
r := httptest.NewRequest("GET", "/plugins/foo/bar", nil)
|
||||||
th.App.ServePluginRequest(w, r)
|
th.App.srv.ServePluginRequest(w, r)
|
||||||
assert.Equal(t, http.StatusNotImplemented, w.Result().StatusCode)
|
assert.Equal(t, http.StatusNotImplemented, w.Result().StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@ func TestPrivateServePluginRequest(t *testing.T) {
|
|||||||
|
|
||||||
request = mux.SetURLVars(request, map[string]string{"plugin_id": "id"})
|
request = mux.SetURLVars(request, map[string]string{"plugin_id": "id"})
|
||||||
|
|
||||||
th.App.servePluginRequest(recorder, request, handler)
|
th.App.srv.servePluginRequest(recorder, request, handler)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,7 +409,7 @@ func TestHandlePluginRequest(t *testing.T) {
|
|||||||
var assertions func(*http.Request)
|
var assertions func(*http.Request)
|
||||||
router := mux.NewRouter()
|
router := mux.NewRouter()
|
||||||
router.HandleFunc("/plugins/{plugin_id:[A-Za-z0-9\\_\\-\\.]+}/{anything:.*}", func(_ http.ResponseWriter, r *http.Request) {
|
router.HandleFunc("/plugins/{plugin_id:[A-Za-z0-9\\_\\-\\.]+}/{anything:.*}", func(_ http.ResponseWriter, r *http.Request) {
|
||||||
th.App.servePluginRequest(nil, r, func(_ *plugin.Context, _ http.ResponseWriter, r *http.Request) {
|
th.App.srv.servePluginRequest(nil, r, func(_ *plugin.Context, _ http.ResponseWriter, r *http.Request) {
|
||||||
assertions(r)
|
assertions(r)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -248,8 +248,8 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
|
|
||||||
// It is important to initialize the hub only after the global logger is set
|
// It is important to initialize the hub only after the global logger is set
|
||||||
// to avoid race conditions while logging from inside the hub.
|
// to avoid race conditions while logging from inside the hub.
|
||||||
fakeApp := New(ServerConnector(s))
|
app := New(ServerConnector(s))
|
||||||
fakeApp.HubStart()
|
app.HubStart()
|
||||||
|
|
||||||
if *s.Config().LogSettings.EnableDiagnostics && *s.Config().LogSettings.EnableSentry {
|
if *s.Config().LogSettings.EnableDiagnostics && *s.Config().LogSettings.EnableSentry {
|
||||||
if strings.Contains(SentryDSN, "placeholder") {
|
if strings.Contains(SentryDSN, "placeholder") {
|
||||||
@@ -489,11 +489,10 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
}
|
}
|
||||||
s.Router = s.RootRouter.PathPrefix(subpath).Subrouter()
|
s.Router = s.RootRouter.PathPrefix(subpath).Subrouter()
|
||||||
|
|
||||||
// FakeApp: remove this when we have the ServePluginRequest and ServePluginPublicRequest migrated in the server
|
|
||||||
pluginsRoute := s.Router.PathPrefix("/plugins/{plugin_id:[A-Za-z0-9\\_\\-\\.]+}").Subrouter()
|
pluginsRoute := s.Router.PathPrefix("/plugins/{plugin_id:[A-Za-z0-9\\_\\-\\.]+}").Subrouter()
|
||||||
pluginsRoute.HandleFunc("", fakeApp.ServePluginRequest)
|
pluginsRoute.HandleFunc("", s.ServePluginRequest)
|
||||||
pluginsRoute.HandleFunc("/public/{public_file:.*}", fakeApp.ServePluginPublicRequest)
|
pluginsRoute.HandleFunc("/public/{public_file:.*}", s.ServePluginPublicRequest)
|
||||||
pluginsRoute.HandleFunc("/{anything:.*}", fakeApp.ServePluginRequest)
|
pluginsRoute.HandleFunc("/{anything:.*}", s.ServePluginRequest)
|
||||||
|
|
||||||
// If configured with a subpath, redirect 404s at the root back into the subpath.
|
// If configured with a subpath, redirect 404s at the root back into the subpath.
|
||||||
if subpath != "/" {
|
if subpath != "/" {
|
||||||
@@ -505,7 +504,7 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
|
|
||||||
s.WebSocketRouter = &WebSocketRouter{
|
s.WebSocketRouter = &WebSocketRouter{
|
||||||
handlers: make(map[string]webSocketHandler),
|
handlers: make(map[string]webSocketHandler),
|
||||||
app: fakeApp,
|
app: app,
|
||||||
}
|
}
|
||||||
|
|
||||||
mailConfig := s.MailServiceConfig()
|
mailConfig := s.MailServiceConfig()
|
||||||
@@ -634,7 +633,7 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
// if enabled - perform initial product notices fetch
|
// if enabled - perform initial product notices fetch
|
||||||
if *s.Config().AnnouncementSettings.AdminNoticesEnabled || *s.Config().AnnouncementSettings.UserNoticesEnabled {
|
if *s.Config().AnnouncementSettings.AdminNoticesEnabled || *s.Config().AnnouncementSettings.UserNoticesEnabled {
|
||||||
go func() {
|
go func() {
|
||||||
if err := fakeApp.UpdateProductNotices(); err != nil {
|
if err := app.UpdateProductNotices(); err != nil {
|
||||||
mlog.Warn("Failied to perform initial product notices fetch", mlog.Err(err))
|
mlog.Warn("Failied to perform initial product notices fetch", mlog.Err(err))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@@ -647,7 +646,7 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
c := request.EmptyContext()
|
c := request.EmptyContext()
|
||||||
s.AddConfigListener(func(oldConfig *model.Config, newConfig *model.Config) {
|
s.AddConfigListener(func(oldConfig *model.Config, newConfig *model.Config) {
|
||||||
if *oldConfig.GuestAccountsSettings.Enable && !*newConfig.GuestAccountsSettings.Enable {
|
if *oldConfig.GuestAccountsSettings.Enable && !*newConfig.GuestAccountsSettings.Enable {
|
||||||
if appErr := fakeApp.DeactivateGuests(c); appErr != nil {
|
if appErr := app.DeactivateGuests(c); appErr != nil {
|
||||||
mlog.Error("Unable to deactivate guest accounts", mlog.Err(appErr))
|
mlog.Error("Unable to deactivate guest accounts", mlog.Err(appErr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -655,7 +654,7 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
|
|
||||||
// Disable active guest accounts on first run if guest accounts are disabled
|
// Disable active guest accounts on first run if guest accounts are disabled
|
||||||
if !*s.Config().GuestAccountsSettings.Enable {
|
if !*s.Config().GuestAccountsSettings.Enable {
|
||||||
if appErr := fakeApp.DeactivateGuests(c); appErr != nil {
|
if appErr := app.DeactivateGuests(c); appErr != nil {
|
||||||
mlog.Error("Unable to deactivate guest accounts", mlog.Err(appErr))
|
mlog.Error("Unable to deactivate guest accounts", mlog.Err(appErr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -663,8 +662,8 @@ func NewServer(options ...Option) (*Server, error) {
|
|||||||
if s.runEssentialJobs {
|
if s.runEssentialJobs {
|
||||||
s.Go(func() {
|
s.Go(func() {
|
||||||
s.runLicenseExpirationCheckJob()
|
s.runLicenseExpirationCheckJob()
|
||||||
runCheckAdminSupportStatusJob(fakeApp, c)
|
runCheckAdminSupportStatusJob(app, c)
|
||||||
runCheckWarnMetricStatusJob(fakeApp, c)
|
runCheckWarnMetricStatusJob(app, c)
|
||||||
})
|
})
|
||||||
s.runJobs()
|
s.runJobs()
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user