Skip to content

Commit adfd782

Browse files
committed
feat: Add provisionerd force cancel flag
1 parent da05bbb commit adfd782

File tree

5 files changed

+206
-179
lines changed

5 files changed

+206
-179
lines changed

cli/deployment/config.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,14 @@ func newConfig() *codersdk.DeploymentConfig {
359359
Flag: "user-workspace-quota",
360360
Enterprise: true,
361361
},
362+
Provisionerd: &codersdk.ProvisionerdConfig{
363+
ForceCancelInterval: &codersdk.DeploymentConfigField[time.Duration]{
364+
Name: "Force Cancel Interval",
365+
Usage: "Time to force cancel provisioning tasks that are stuck.",
366+
Flag: "provisionerd-force-cancel-interval",
367+
Default: 10 * time.Minute,
368+
},
369+
},
362370
}
363371
}
364372

cli/server.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ func Server(vip *viper.Viper, newAPI func(context.Context, *coderd.Options) (*co
563563
}()
564564
provisionerdMetrics := provisionerd.NewMetrics(options.PrometheusRegistry)
565565
for i := 0; i < cfg.ProvisionerDaemons.Value; i++ {
566-
daemon, err := newProvisionerDaemon(ctx, coderAPI, provisionerdMetrics, logger, cfg.CacheDirectory.Value, errCh, false)
566+
daemon, err := newProvisionerDaemon(ctx, coderAPI, provisionerdMetrics, logger, cfg, errCh, false)
567567
if err != nil {
568568
return xerrors.Errorf("create provisioner daemon: %w", err)
569569
}
@@ -832,7 +832,7 @@ func newProvisionerDaemon(
832832
coderAPI *coderd.API,
833833
metrics provisionerd.Metrics,
834834
logger slog.Logger,
835-
cacheDir string,
835+
cfg *codersdk.DeploymentConfig,
836836
errCh chan error,
837837
dev bool,
838838
) (srv *provisionerd.Server, err error) {
@@ -843,9 +843,9 @@ func newProvisionerDaemon(
843843
}
844844
}()
845845

846-
err = os.MkdirAll(cacheDir, 0o700)
846+
err = os.MkdirAll(cfg.CacheDirectory.Value, 0o700)
847847
if err != nil {
848-
return nil, xerrors.Errorf("mkdir %q: %w", cacheDir, err)
848+
return nil, xerrors.Errorf("mkdir %q: %w", cfg.CacheDirectory.Value, err)
849849
}
850850

851851
terraformClient, terraformServer := provisionersdk.TransportPipe()
@@ -861,7 +861,7 @@ func newProvisionerDaemon(
861861
ServeOptions: &provisionersdk.ServeOptions{
862862
Listener: terraformServer,
863863
},
864-
CachePath: cacheDir,
864+
CachePath: cfg.CacheDirectory.Value,
865865
Logger: logger,
866866
})
867867
if err != nil && !xerrors.Is(err, context.Canceled) {
@@ -902,13 +902,14 @@ func newProvisionerDaemon(
902902
provisioners[string(database.ProvisionerTypeEcho)] = proto.NewDRPCProvisionerClient(provisionersdk.Conn(echoClient))
903903
}
904904
return provisionerd.New(coderAPI.ListenProvisionerDaemon, &provisionerd.Options{
905-
Logger: logger,
906-
PollInterval: 500 * time.Millisecond,
907-
UpdateInterval: 500 * time.Millisecond,
908-
Provisioners: provisioners,
909-
WorkDirectory: tempDir,
910-
TracerProvider: coderAPI.TracerProvider,
911-
Metrics: &metrics,
905+
Logger: logger,
906+
PollInterval: 500 * time.Millisecond,
907+
UpdateInterval: 500 * time.Millisecond,
908+
ForceCancelInterval: cfg.Provisionerd.ForceCancelInterval.Value,
909+
Provisioners: provisioners,
910+
WorkDirectory: tempDir,
911+
TracerProvider: coderAPI.TracerProvider,
912+
Metrics: &metrics,
912913
}), nil
913914
}
914915

0 commit comments

Comments
 (0)