From c4b3efeb9d87b9795f0a0a05a4755f938632b7b9 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Fri, 26 Sep 2025 15:12:13 +0800 Subject: [PATCH] fix: Fix the issue where cronjob expressions do not support commas (#10493) Refs #9748 --- agent/app/service/cronjob.go | 2 +- agent/init/migration/migrate.go | 1 + agent/init/migration/migrations/init.go | 21 +++++++++++++++++++ frontend/src/views/cronjob/cronjob/index.vue | 6 +++--- .../views/cronjob/cronjob/operate/index.vue | 6 +++--- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/agent/app/service/cronjob.go b/agent/app/service/cronjob.go index 365626e02..289363b52 100644 --- a/agent/app/service/cronjob.go +++ b/agent/app/service/cronjob.go @@ -604,7 +604,7 @@ func (u *CronjobService) StartJob(cronjob *model.Cronjob, isUpdate bool) (string global.Cron.Remove(cron.EntryID(idItem)) } } - specs := strings.Split(cronjob.Spec, ",") + specs := strings.Split(cronjob.Spec, "&&") var ids []string for _, spec := range specs { cronjob.Spec = spec diff --git a/agent/init/migration/migrate.go b/agent/init/migration/migrate.go index 4189815dc..a803b83eb 100644 --- a/agent/init/migration/migrate.go +++ b/agent/init/migration/migrate.go @@ -44,6 +44,7 @@ func InitAgentDB() { migrations.InitRecordStatus, migrations.AddShowNameForQuickJump, migrations.AddTimeoutForClam, + migrations.UpdataCronjobSpec, }) if err := m.Migrate(); err != nil { global.LOG.Error(err) diff --git a/agent/init/migration/migrations/init.go b/agent/init/migration/migrations/init.go index d19b17acf..ca3a26168 100644 --- a/agent/init/migration/migrations/init.go +++ b/agent/init/migration/migrations/init.go @@ -6,6 +6,7 @@ import ( "os" "os/user" "path" + "strings" "time" "github.com/1Panel-dev/1Panel/agent/app/dto" @@ -596,3 +597,23 @@ var AddTimeoutForClam = &gormigrate.Migration{ return nil }, } + +var UpdataCronjobSpec = &gormigrate.Migration{ + ID: "20250925-update-cronjob-spec", + Migrate: func(tx *gorm.DB) error { + var cronjobs []model.Cronjob + if err := tx.Where("1 == 1").Find(&cronjobs).Error; err != nil { + return err + } + for _, item := range cronjobs { + if !strings.Contains(item.Spec, ",") { + continue + } + if err := tx.Model(&model.Cronjob{}).Where("id = ?", item.ID).Updates( + map[string]interface{}{"spec": strings.ReplaceAll(item.Spec, ",", "&&")}).Error; err != nil { + return err + } + } + return nil + }, +} diff --git a/frontend/src/views/cronjob/cronjob/index.vue b/frontend/src/views/cronjob/cronjob/index.vue index 22af84ae5..e34c2356b 100644 --- a/frontend/src/views/cronjob/cronjob/index.vue +++ b/frontend/src/views/cronjob/cronjob/index.vue @@ -104,19 +104,19 @@