MM-21898 - Part 1: Generate and use an interface instead of *A… (#13840)
* Generate and use an interface instead of *App
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
66fc096768
Коммит
17523fa5d9
@@ -71,7 +71,7 @@ func (worker *Worker) runAdvancedPermissionsPhase2Migration(lastDone string) (bo
|
||||
|
||||
if progress.CurrentTable == "TeamMembers" {
|
||||
// Run a TeamMembers migration batch.
|
||||
if result, err := worker.app.Srv.Store.Team().MigrateTeamMembers(progress.LastTeamId, progress.LastUserId); err != nil {
|
||||
if result, err := worker.app.Srv().Store.Team().MigrateTeamMembers(progress.LastTeamId, progress.LastUserId); err != nil {
|
||||
return false, progress.ToJson(), err
|
||||
} else {
|
||||
if result == nil {
|
||||
@@ -86,7 +86,7 @@ func (worker *Worker) runAdvancedPermissionsPhase2Migration(lastDone string) (bo
|
||||
}
|
||||
} else if progress.CurrentTable == "ChannelMembers" {
|
||||
// Run a ChannelMembers migration batch.
|
||||
if data, err := worker.app.Srv.Store.Channel().MigrateChannelMembers(progress.LastChannelId, progress.LastUserId); err != nil {
|
||||
if data, err := worker.app.Srv().Store.Channel().MigrateChannelMembers(progress.LastChannelId, progress.LastUserId); err != nil {
|
||||
return false, progress.ToJson(), err
|
||||
} else {
|
||||
if data == nil {
|
||||
|
||||
@@ -65,7 +65,7 @@ func setupTestHelper(enterprise bool) *TestHelper {
|
||||
|
||||
th.App.DoAppMigrations()
|
||||
|
||||
th.App.Srv.Store.MarkSystemRanUnitTests()
|
||||
th.App.Srv().Store.MarkSystemRanUnitTests()
|
||||
|
||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true })
|
||||
|
||||
@@ -267,14 +267,14 @@ func (me *TestHelper) ResetRoleMigration() {
|
||||
}
|
||||
|
||||
func (me *TestHelper) DeleteAllJobsByTypeAndMigrationKey(jobType string, migrationKey string) {
|
||||
jobs, err := me.App.Srv.Store.Job().GetAllByType(model.JOB_TYPE_MIGRATIONS)
|
||||
jobs, err := me.App.Srv().Store.Job().GetAllByType(model.JOB_TYPE_MIGRATIONS)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
for _, job := range jobs {
|
||||
if key, ok := job.Data[JOB_DATA_KEY_MIGRATION]; ok && key == migrationKey {
|
||||
if _, err = me.App.Srv.Store.Job().Delete(job.Id); err != nil {
|
||||
if _, err = me.App.Srv().Store.Job().Delete(job.Id); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ func TestGetMigrationState(t *testing.T) {
|
||||
th.DeleteAllJobsByTypeAndMigrationKey(model.JOB_TYPE_MIGRATIONS, migrationKey)
|
||||
|
||||
// Test with no job yet.
|
||||
state, job, err := GetMigrationState(migrationKey, th.App.Srv.Store)
|
||||
state, job, err := GetMigrationState(migrationKey, th.App.Srv().Store)
|
||||
assert.Nil(t, err)
|
||||
assert.Nil(t, job)
|
||||
assert.Equal(t, "unscheduled", state)
|
||||
@@ -34,15 +34,15 @@ func TestGetMigrationState(t *testing.T) {
|
||||
Name: migrationKey,
|
||||
Value: "true",
|
||||
}
|
||||
err = th.App.Srv.Store.System().Save(&system)
|
||||
err = th.App.Srv().Store.System().Save(&system)
|
||||
assert.Nil(t, err)
|
||||
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv.Store)
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv().Store)
|
||||
assert.Nil(t, err)
|
||||
assert.Nil(t, job)
|
||||
assert.Equal(t, "completed", state)
|
||||
|
||||
_, err = th.App.Srv.Store.System().PermanentDeleteByName(migrationKey)
|
||||
_, err = th.App.Srv().Store.System().PermanentDeleteByName(migrationKey)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// Test with a job scheduled in "pending" state.
|
||||
@@ -56,10 +56,10 @@ func TestGetMigrationState(t *testing.T) {
|
||||
Type: model.JOB_TYPE_MIGRATIONS,
|
||||
}
|
||||
|
||||
j1, err = th.App.Srv.Store.Job().Save(j1)
|
||||
j1, err = th.App.Srv().Store.Job().Save(j1)
|
||||
require.Nil(t, err)
|
||||
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv.Store)
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv().Store)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, j1.Id, job.Id)
|
||||
assert.Equal(t, "in_progress", state)
|
||||
@@ -75,10 +75,10 @@ func TestGetMigrationState(t *testing.T) {
|
||||
Type: model.JOB_TYPE_MIGRATIONS,
|
||||
}
|
||||
|
||||
j2, err = th.App.Srv.Store.Job().Save(j2)
|
||||
j2, err = th.App.Srv().Store.Job().Save(j2)
|
||||
require.Nil(t, err)
|
||||
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv.Store)
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv().Store)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, j2.Id, job.Id)
|
||||
assert.Equal(t, "in_progress", state)
|
||||
@@ -94,10 +94,10 @@ func TestGetMigrationState(t *testing.T) {
|
||||
Type: model.JOB_TYPE_MIGRATIONS,
|
||||
}
|
||||
|
||||
j3, err = th.App.Srv.Store.Job().Save(j3)
|
||||
j3, err = th.App.Srv().Store.Job().Save(j3)
|
||||
require.Nil(t, err)
|
||||
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv.Store)
|
||||
state, job, err = GetMigrationState(migrationKey, th.App.Srv().Store)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, j3.Id, job.Id)
|
||||
assert.Equal(t, "unscheduled", state)
|
||||
|
||||
@@ -51,7 +51,7 @@ func (scheduler *Scheduler) ScheduleJob(cfg *model.Config, pendingJobs bool, las
|
||||
|
||||
// Work through the list of migrations in order. Schedule the first one that isn't done (assuming it isn't in progress already).
|
||||
for _, key := range MakeMigrationsList() {
|
||||
state, job, err := GetMigrationState(key, scheduler.App.Srv.Store)
|
||||
state, job, err := GetMigrationState(key, scheduler.App.Srv().Store)
|
||||
if err != nil {
|
||||
mlog.Error("Failed to determine status of migration: ", mlog.String("scheduler", scheduler.Name()), mlog.String("migration_key", key), mlog.String("error", err.Error()))
|
||||
return nil, nil
|
||||
@@ -61,10 +61,10 @@ func (scheduler *Scheduler) ScheduleJob(cfg *model.Config, pendingJobs bool, las
|
||||
// Check the migration job isn't wedged.
|
||||
if job != nil && job.LastActivityAt < model.GetMillis()-MIGRATION_JOB_WEDGED_TIMEOUT_MILLISECONDS && job.CreateAt < model.GetMillis()-MIGRATION_JOB_WEDGED_TIMEOUT_MILLISECONDS {
|
||||
mlog.Warn("Job appears to be wedged. Rescheduling another instance.", mlog.String("scheduler", scheduler.Name()), mlog.String("wedged_job_id", job.Id), mlog.String("migration_key", key))
|
||||
if err := scheduler.App.Srv.Jobs.SetJobError(job, nil); err != nil {
|
||||
if err := scheduler.App.Srv().Jobs.SetJobError(job, nil); err != nil {
|
||||
mlog.Error("Worker: Failed to set job error", mlog.String("scheduler", scheduler.Name()), mlog.String("job_id", job.Id), mlog.String("error", err.Error()))
|
||||
}
|
||||
return scheduler.createJob(key, job, scheduler.App.Srv.Store)
|
||||
return scheduler.createJob(key, job, scheduler.App.Srv().Store)
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
@@ -77,7 +77,7 @@ func (scheduler *Scheduler) ScheduleJob(cfg *model.Config, pendingJobs bool, las
|
||||
|
||||
if state == MIGRATION_STATE_UNSCHEDULED {
|
||||
mlog.Debug("Scheduling a new job for migration.", mlog.String("scheduler", scheduler.Name()), mlog.String("migration_key", key))
|
||||
return scheduler.createJob(key, job, scheduler.App.Srv.Store)
|
||||
return scheduler.createJob(key, job, scheduler.App.Srv().Store)
|
||||
}
|
||||
|
||||
mlog.Error("Unknown migration state. Not doing anything.", mlog.String("migration_state", state))
|
||||
@@ -102,7 +102,7 @@ func (scheduler *Scheduler) createJob(migrationKey string, lastJob *model.Job, s
|
||||
JOB_DATA_KEY_MIGRATION_LAST_DONE: lastDone,
|
||||
}
|
||||
|
||||
if job, err := scheduler.App.Srv.Jobs.CreateJob(model.JOB_TYPE_MIGRATIONS, data); err != nil {
|
||||
if job, err := scheduler.App.Srv().Jobs.CreateJob(model.JOB_TYPE_MIGRATIONS, data); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return job, nil
|
||||
|
||||
@@ -33,7 +33,7 @@ func (m *MigrationsJobInterfaceImpl) MakeWorker() model.Worker {
|
||||
stop: make(chan bool, 1),
|
||||
stopped: make(chan bool, 1),
|
||||
jobs: make(chan model.Job),
|
||||
jobServer: m.App.Srv.Jobs,
|
||||
jobServer: m.App.Srv().Jobs,
|
||||
app: m.App,
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ func (worker *Worker) DoJob(job *model.Job) {
|
||||
|
||||
cancelCtx, cancelCancelWatcher := context.WithCancel(context.Background())
|
||||
cancelWatcherChan := make(chan interface{}, 1)
|
||||
go worker.app.Srv.Jobs.CancellationWatcher(cancelCtx, job.Id, cancelWatcherChan)
|
||||
go worker.app.Srv().Jobs.CancellationWatcher(cancelCtx, job.Id, cancelWatcherChan)
|
||||
|
||||
defer cancelCancelWatcher()
|
||||
|
||||
@@ -111,7 +111,7 @@ func (worker *Worker) DoJob(job *model.Job) {
|
||||
return
|
||||
} else {
|
||||
job.Data[JOB_DATA_KEY_MIGRATION_LAST_DONE] = progress
|
||||
if err := worker.app.Srv.Jobs.UpdateInProgressJobData(job); err != nil {
|
||||
if err := worker.app.Srv().Jobs.UpdateInProgressJobData(job); err != nil {
|
||||
mlog.Error("Worker: Failed to update migration status data for job", mlog.String("worker", worker.name), mlog.String("job_id", job.Id), mlog.String("error", err.Error()))
|
||||
worker.setJobError(job, err)
|
||||
return
|
||||
@@ -122,20 +122,20 @@ func (worker *Worker) DoJob(job *model.Job) {
|
||||
}
|
||||
|
||||
func (worker *Worker) setJobSuccess(job *model.Job) {
|
||||
if err := worker.app.Srv.Jobs.SetJobSuccess(job); err != nil {
|
||||
if err := worker.app.Srv().Jobs.SetJobSuccess(job); err != nil {
|
||||
mlog.Error("Worker: Failed to set success for job", mlog.String("worker", worker.name), mlog.String("job_id", job.Id), mlog.String("error", err.Error()))
|
||||
worker.setJobError(job, err)
|
||||
}
|
||||
}
|
||||
|
||||
func (worker *Worker) setJobError(job *model.Job, appError *model.AppError) {
|
||||
if err := worker.app.Srv.Jobs.SetJobError(job, appError); err != nil {
|
||||
if err := worker.app.Srv().Jobs.SetJobError(job, appError); err != nil {
|
||||
mlog.Error("Worker: Failed to set job error", mlog.String("worker", worker.name), mlog.String("job_id", job.Id), mlog.String("error", err.Error()))
|
||||
}
|
||||
}
|
||||
|
||||
func (worker *Worker) setJobCanceled(job *model.Job) {
|
||||
if err := worker.app.Srv.Jobs.SetJobCanceled(job); err != nil {
|
||||
if err := worker.app.Srv().Jobs.SetJobCanceled(job); err != nil {
|
||||
mlog.Error("Worker: Failed to mark job as canceled", mlog.String("worker", worker.name), mlog.String("job_id", job.Id), mlog.String("error", err.Error()))
|
||||
}
|
||||
}
|
||||
@@ -157,7 +157,7 @@ func (worker *Worker) runMigration(key string, lastDone string) (bool, string, *
|
||||
}
|
||||
|
||||
if done {
|
||||
if saveErr := worker.app.Srv.Store.System().Save(&model.System{Name: key, Value: "true"}); saveErr != nil {
|
||||
if saveErr := worker.app.Srv().Store.System().Save(&model.System{Name: key, Value: "true"}); saveErr != nil {
|
||||
return false, "", saveErr
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user