From 0b277937ddf292ed1878c4d280fe681ab981200b Mon Sep 17 00:00:00 2001 From: Sanne Raymaekers Date: Fri, 19 Apr 2024 16:30:26 +0200 Subject: [PATCH] worker/server: make worker timeout configurable --- cmd/osbuild-composer/composer.go | 5 +++++ cmd/osbuild-composer/config.go | 14 ++++++++------ cmd/osbuild-composer/config_test.go | 13 +++++++------ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/cmd/osbuild-composer/composer.go b/cmd/osbuild-composer/composer.go index efd4d2d6c..49f6a0219 100644 --- a/cmd/osbuild-composer/composer.go +++ b/cmd/osbuild-composer/composer.go @@ -60,6 +60,7 @@ func NewComposer(config *ComposerConfigFile, stateDir, cacheDir string) (*Compos BasePath: config.Worker.BasePath, JWTEnabled: config.Worker.EnableJWT, TenantProviderFields: config.Worker.JWTTenantProviderFields, + WorkerWatchFreq: time.Minute * 5, } var err error @@ -121,6 +122,10 @@ func NewComposer(config *ComposerConfigFile, stateDir, cacheDir string) (*Compos if err != nil { return nil, fmt.Errorf("Unable to parse request job timeout: %v", err) } + workerConfig.WorkerTimeout, err = time.ParseDuration(config.Worker.WorkerHeartbeatTimeout) + if err != nil { + return nil, fmt.Errorf("Unable to parse request worker heartbeat timeout: %v", err) + } c.workers = worker.NewServer(c.logger, jobs, workerConfig) diff --git a/cmd/osbuild-composer/config.go b/cmd/osbuild-composer/config.go index dd70dfcd9..ad55398d2 100644 --- a/cmd/osbuild-composer/config.go +++ b/cmd/osbuild-composer/config.go @@ -57,6 +57,7 @@ type WorkerAPIConfig struct { JWTKeysCA string `toml:"jwt_ca_file"` JWTACLFile string `toml:"jwt_acl_file"` JWTTenantProviderFields []string `toml:"jwt_tenant_provider_fields"` + WorkerHeartbeatTimeout string `toml:"worker_heartbeat_timeout"` } type WeldrAPIConfig struct { @@ -93,12 +94,13 @@ func GetDefaultConfig() *ComposerConfigFile { EnableJWT: false, }, Worker: WorkerAPIConfig{ - RequestJobTimeout: "0", - BasePath: "/api/worker/v1", - EnableArtifacts: true, - EnableTLS: true, - EnableMTLS: true, - EnableJWT: false, + RequestJobTimeout: "0", + BasePath: "/api/worker/v1", + EnableArtifacts: true, + EnableTLS: true, + EnableMTLS: true, + EnableJWT: false, + WorkerHeartbeatTimeout: "1h", }, WeldrAPI: WeldrAPIConfig{ map[string]WeldrDistroConfig{ diff --git a/cmd/osbuild-composer/config_test.go b/cmd/osbuild-composer/config_test.go index 4671becd0..c5b1d2d7a 100644 --- a/cmd/osbuild-composer/config_test.go +++ b/cmd/osbuild-composer/config_test.go @@ -37,12 +37,13 @@ func TestDefaultConfig(t *testing.T) { }, defaultConfig.Koji) require.Equal(t, WorkerAPIConfig{ - RequestJobTimeout: "0", - BasePath: "/api/worker/v1", - EnableArtifacts: true, - EnableTLS: true, - EnableMTLS: true, - EnableJWT: false, + RequestJobTimeout: "0", + BasePath: "/api/worker/v1", + EnableArtifacts: true, + EnableTLS: true, + EnableMTLS: true, + EnableJWT: false, + WorkerHeartbeatTimeout: "1h", }, defaultConfig.Worker) expectedWeldrAPIConfig := WeldrAPIConfig{