mirror of
https://github.com/coder/coder.git
synced 2025-07-30 22:19:53 +00:00
fix(scaletest): cleanup: attempt to cancel in-progress jobs (#9080)
This change modifies the cleanup behaviour to make a best-effort attempt to cancel the in-progress scaletest workspace build jobs before deleting them.
This commit is contained in:
@@ -112,7 +112,30 @@ func (r *CleanupRunner) Run(ctx context.Context, _ string, logs io.Writer) error
|
||||
ctx, span := tracing.StartSpan(ctx)
|
||||
defer span.End()
|
||||
|
||||
build, err := r.client.CreateWorkspaceBuild(ctx, r.workspaceID, codersdk.CreateWorkspaceBuildRequest{
|
||||
logs = loadtestutil.NewSyncWriter(logs)
|
||||
logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
|
||||
r.client.SetLogger(logger)
|
||||
r.client.SetLogBodies(true)
|
||||
|
||||
ws, err := r.client.Workspace(ctx, r.workspaceID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
build, err := r.client.WorkspaceBuild(ctx, ws.LatestBuild.ID)
|
||||
if err == nil && build.Job.Status.Active() {
|
||||
// mark the build as canceled
|
||||
if err = r.client.CancelWorkspaceBuild(ctx, build.ID); err == nil {
|
||||
// Wait for the job to cancel before we delete it
|
||||
_ = waitForBuild(ctx, logs, r.client, build.ID) // it will return a "build canceled" error
|
||||
} else {
|
||||
logger.Warn(ctx, "failed to cancel workspace build, attempting to delete anyway", slog.Error(err))
|
||||
}
|
||||
} else {
|
||||
logger.Warn(ctx, "unable to lookup latest workspace build, attempting to delete anyway", slog.Error(err))
|
||||
}
|
||||
|
||||
build, err = r.client.CreateWorkspaceBuild(ctx, r.workspaceID, codersdk.CreateWorkspaceBuildRequest{
|
||||
Transition: codersdk.WorkspaceTransitionDelete,
|
||||
})
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user