diff --git a/internal/taskManager/commitJobService.go b/internal/taskManager/commitJobService.go new file mode 100644 index 0000000..7749348 --- /dev/null +++ b/internal/taskManager/commitJobService.go @@ -0,0 +1,35 @@ +// Copyright (C) NHR@FAU, University Erlangen-Nuremberg. +// All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. +package taskManager + +import ( + "time" + + "github.com/ClusterCockpit/cc-backend/internal/config" + "github.com/ClusterCockpit/cc-backend/internal/repository" + "github.com/ClusterCockpit/cc-backend/pkg/log" + "github.com/go-co-op/gocron/v2" +) + +func RegisterCommitJobService() { + var frequency string + if config.Keys.CronFrequency != nil && config.Keys.CronFrequency.CommitJobWorker != "" { + frequency = config.Keys.CronFrequency.CommitJobWorker + } else { + frequency = "2m" + } + d, _ := time.ParseDuration(frequency) + log.Infof("Register commitJob service with %s interval", frequency) + + s.NewJob(gocron.DurationJob(d), + gocron.NewTask( + func() { + start := time.Now() + log.Printf("Jobcache sync started at %s", start.Format(time.RFC3339)) + jobRepo.SyncJobs() + repository.CallJobStartHooks() + log.Printf("Jobcache sync is done and took %s", time.Since(start)) + })) +} diff --git a/internal/taskManager/taskManager.go b/internal/taskManager/taskManager.go index 2004e0d..7d9a3a2 100644 --- a/internal/taskManager/taskManager.go +++ b/internal/taskManager/taskManager.go @@ -81,6 +81,7 @@ func Start() { RegisterFootprintWorker() RegisterUpdateDurationWorker() + RegisterCommitJobService() s.Start() } diff --git a/pkg/schema/config.go b/pkg/schema/config.go index 27d11be..a5caa61 100644 --- a/pkg/schema/config.go +++ b/pkg/schema/config.go @@ -89,6 +89,8 @@ type ResampleConfig struct { } type CronFrequency struct { + // Duration Update Worker [Defaults to '2m'] + CommitJobWorker string `json:"commit-job-worker"` // Duration Update Worker [Defaults to '5m'] DurationWorker string `json:"duration-worker"` // Metric-Footprint Update Worker [Defaults to '10m'] @@ -150,7 +152,7 @@ type ProgramConfig struct { // If overwritten, at least all the options in the defaults below must // be provided! Most options here can be overwritten by the user. - UiDefaults map[string]interface{} `json:"ui-defaults"` + UiDefaults map[string]any `json:"ui-defaults"` // If exists, will enable dynamic zoom in frontend metric plots using the configured values EnableResampling *ResampleConfig `json:"enable-resampling"`