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:
Cian Johnston
2023-08-14 12:43:45 +01:00
committed by GitHub
parent 72575cc462
commit ef9d84c723
2 changed files with 136 additions and 1 deletions

View File

@@ -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 {