From 9a45572ce2771437f4da318e5941cfe96280cd65 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 16 Nov 2022 19:20:52 +0800 Subject: [PATCH] Support bot site --- models/bots/run.go | 14 +++++++++----- models/bots/task.go | 6 +++--- models/dbfs/dbfile.go | 12 ++++++------ modules/bots/job_emitter.go | 4 ++-- routers/web/repo/builds/view.go | 4 ++-- services/bots/clear_tasks.go | 4 ++-- 6 files changed, 24 insertions(+), 20 deletions(-) diff --git a/models/bots/run.go b/models/bots/run.go index 98019a4935..428696f293 100644 --- a/models/bots/run.go +++ b/models/bots/run.go @@ -136,17 +136,21 @@ func updateRepoRunsNumbers(ctx context.Context, repo *repo_model.Repository) err // InsertRun inserts a bot run func InsertRun(run *Run, jobs []*jobparser.SingleWorkflow) error { - index, err := db.GetNextResourceIndex("bots_run_index", run.RepoID) + ctx, commiter, err := db.TxContext(db.DefaultContext) + if err != nil { + return err + } + defer commiter.Close() + + index, err := db.GetNextResourceIndex(ctx, "bots_run_index", run.RepoID) if err != nil { return err } run.Index = index - ctx, commiter, err := db.TxContext() - if err != nil { - return err + if run.Status == StatusUnknown { + run.Status = StatusWaiting } - defer commiter.Close() if err := db.Insert(ctx, run); err != nil { return err diff --git a/models/bots/task.go b/models/bots/task.go index c09015644c..26631dc885 100644 --- a/models/bots/task.go +++ b/models/bots/task.go @@ -291,7 +291,7 @@ func GetTaskByToken(ctx context.Context, token string) (*Task, error) { } func CreateTaskForRunner(ctx context.Context, runner *Runner) (*Task, bool, error) { - dbCtx, commiter, err := db.TxContext() + dbCtx, commiter, err := db.TxContext(ctx) if err != nil { return nil, false, err } @@ -422,7 +422,7 @@ func UpdateTaskByState(state *runnerv1.TaskState) (*Task, error) { stepStates[v.Id] = v } - ctx, commiter, err := db.TxContext() + ctx, commiter, err := db.TxContext(db.DefaultContext) if err != nil { return nil, err } @@ -485,7 +485,7 @@ func UpdateTaskByState(state *runnerv1.TaskState) (*Task, error) { } func StopTask(ctx context.Context, task *Task, result runnerv1.Result) (*Task, error) { - ctx, commiter, err := db.TxContext() + ctx, commiter, err := db.TxContext(ctx) if err != nil { return nil, err } diff --git a/models/dbfs/dbfile.go b/models/dbfs/dbfile.go index ba118182e5..5aef625018 100644 --- a/models/dbfs/dbfile.go +++ b/models/dbfs/dbfile.go @@ -285,7 +285,7 @@ func (f *file) truncate() error { if f.metaID == 0 { return os.ErrNotExist } - return db.WithTx(func(ctx context.Context) error { + return db.WithTx(f.ctx, func(ctx context.Context) error { if _, err := db.GetEngine(ctx).Exec("UPDATE file_meta SET file_size = 0 WHERE id = ?", f.metaID); err != nil { return err } @@ -293,7 +293,7 @@ func (f *file) truncate() error { return err } return nil - }, f.ctx) + }) } func (f *file) renameTo(newPath string) error { @@ -301,19 +301,19 @@ func (f *file) renameTo(newPath string) error { return os.ErrNotExist } newPath = buildPath(newPath) - return db.WithTx(func(ctx context.Context) error { + return db.WithTx(f.ctx, func(ctx context.Context) error { if _, err := db.GetEngine(ctx).Exec("UPDATE file_meta SET full_path = ? WHERE id = ?", newPath, f.metaID); err != nil { return err } return nil - }, f.ctx) + }) } func (f *file) delete() error { if f.metaID == 0 { return os.ErrNotExist } - return db.WithTx(func(ctx context.Context) error { + return db.WithTx(f.ctx, func(ctx context.Context) error { if _, err := db.GetEngine(ctx).Delete(&FileMeta{ID: f.metaID}); err != nil { return err } @@ -321,7 +321,7 @@ func (f *file) delete() error { return err } return nil - }, f.ctx) + }) } func (f *file) size() (int64, error) { diff --git a/modules/bots/job_emitter.go b/modules/bots/job_emitter.go index b236b7ffce..d8a9aa257e 100644 --- a/modules/bots/job_emitter.go +++ b/modules/bots/job_emitter.go @@ -46,7 +46,7 @@ func jobEmitterQueueHandle(data ...queue.Data) []queue.Data { } func checkJobsOfRun(ctx context.Context, runID int64) error { - return db.WithTx(func(ctx context.Context) error { + return db.WithTx(ctx, func(ctx context.Context) error { jobs, _, err := bots_model.FindRunJobs(ctx, bots_model.FindRunJobOptions{RunID: runID}) if err != nil { return err @@ -68,7 +68,7 @@ func checkJobsOfRun(ctx context.Context, runID int64) error { } } return nil - }, ctx) + }) } type jobStatusResolver struct { diff --git a/routers/web/repo/builds/view.go b/routers/web/repo/builds/view.go index 14d27912c9..527cc70c2e 100644 --- a/routers/web/repo/builds/view.go +++ b/routers/web/repo/builds/view.go @@ -210,10 +210,10 @@ func Rerun(ctx *context_module.Context) { job.Started = 0 job.Stopped = 0 - if err := db.WithTx(func(ctx context.Context) error { + if err := db.WithTx(ctx, func(ctx context.Context) error { _, err := bots_model.UpdateRunJob(ctx, job, builder.Eq{"status": status}, "task_id", "status", "started", "stopped") return err - }, ctx); err != nil { + }); err != nil { ctx.Error(http.StatusInternalServerError, err.Error()) return } diff --git a/services/bots/clear_tasks.go b/services/bots/clear_tasks.go index e6f091d52e..4237e5f859 100644 --- a/services/bots/clear_tasks.go +++ b/services/bots/clear_tasks.go @@ -77,10 +77,10 @@ func CancelAbandonedJobs(ctx context.Context) error { for _, job := range jobs { job.Status = bots_model.StatusCancelled job.Stopped = now - if err := db.WithTx(func(ctx context.Context) error { + if err := db.WithTx(ctx, func(ctx context.Context) error { _, err := bots_model.UpdateRunJob(ctx, job, nil, "status", "stopped") return err - }, ctx); err != nil { + }); err != nil { log.Warn("cancel abandoned job %v: %v", job.ID, err) // go on }