mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: add provisioner job hang detector (#7927)
This commit is contained in:
@@ -3,7 +3,6 @@ package db2sdk
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
|
||||
@@ -81,6 +80,9 @@ func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk
|
||||
}
|
||||
|
||||
func ProvisionerJobStatus(provisionerJob database.ProvisionerJob) codersdk.ProvisionerJobStatus {
|
||||
// The case where jobs are hung is handled by the unhang package. We can't
|
||||
// just return Failed here when it's hung because that doesn't reflect in
|
||||
// the database.
|
||||
switch {
|
||||
case provisionerJob.CanceledAt.Valid:
|
||||
if !provisionerJob.CompletedAt.Valid {
|
||||
@@ -97,8 +99,6 @@ func ProvisionerJobStatus(provisionerJob database.ProvisionerJob) codersdk.Provi
|
||||
return codersdk.ProvisionerJobSucceeded
|
||||
}
|
||||
return codersdk.ProvisionerJobFailed
|
||||
case database.Now().Sub(provisionerJob.UpdatedAt) > 30*time.Second:
|
||||
return codersdk.ProvisionerJobFailed
|
||||
default:
|
||||
return codersdk.ProvisionerJobRunning
|
||||
}
|
||||
|
||||
@@ -96,17 +96,6 @@ func TestProvisionerJobStatus(t *testing.T) {
|
||||
},
|
||||
status: codersdk.ProvisionerJobFailed,
|
||||
},
|
||||
{
|
||||
name: "not_updated",
|
||||
job: database.ProvisionerJob{
|
||||
StartedAt: sql.NullTime{
|
||||
Time: database.Now().Add(-time.Minute),
|
||||
Valid: true,
|
||||
},
|
||||
UpdatedAt: database.Now().Add(-31 * time.Second),
|
||||
},
|
||||
status: codersdk.ProvisionerJobFailed,
|
||||
},
|
||||
{
|
||||
name: "updated",
|
||||
job: database.ProvisionerJob{
|
||||
|
||||
Reference in New Issue
Block a user