From 47c3aac1b21309c463c60be50afb5d0686226784 Mon Sep 17 00:00:00 2001 From: James Maes Date: Wed, 14 Oct 2026 14:59:12 -0500 Subject: [PATCH] fix: no cron time zone on repeat-seconds worker schedules OutboundProcesses.process set cronTimeZoneId("UTC") on every schedule. Core instance validation refuses a time zone on a non-cron schedule, so a host that configures a scheduler (kof22) failed validation at start. Only cron schedules get UTC now; OutboundTest covers both. Co-Authored-By: Claude Opus 5.5 --- .../qbits/edi/processes/OutboundProcesses.java | 6 +++++- .../com/kingsrook/qbits/edi/OutboundTest.java | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kingsrook/qbits/edi/processes/OutboundProcesses.java b/src/main/java/com/kingsrook/qbits/edi/processes/OutboundProcesses.java index 76f081f..9c81d9c 100644 --- a/src/main/java/com/kingsrook/qbits/edi/processes/OutboundProcesses.java +++ b/src/main/java/com/kingsrook/qbits/edi/processes/OutboundProcesses.java @@ -61,7 +61,11 @@ public class OutboundProcesses implements BackendStep .withStep(new QBackendStepMetaData().withName("execute").withCode(new QCodeReference(OutboundProcesses.class))); if(config.getSchedulerName() != null && (seconds != null || cron != null)) { - process.withSchedule(new QScheduleMetaData().withSchedulerName(config.getSchedulerName()).withRepeatSeconds(seconds).withCronExpression(cron).withCronTimeZoneId("UTC")); + ////////////////////////////////////////////////////////////////////////// + // core validation refuses a cron time zone on a repeat schedule // + ////////////////////////////////////////////////////////////////////////// + process.withSchedule(new QScheduleMetaData().withSchedulerName(config.getSchedulerName()).withRepeatSeconds(seconds).withCronExpression(cron) + .withCronTimeZoneId(cron == null ? null : "UTC")); } return (process); } diff --git a/src/test/java/com/kingsrook/qbits/edi/OutboundTest.java b/src/test/java/com/kingsrook/qbits/edi/OutboundTest.java index 979684f..06ece5a 100644 --- a/src/test/java/com/kingsrook/qbits/edi/OutboundTest.java +++ b/src/test/java/com/kingsrook/qbits/edi/OutboundTest.java @@ -329,4 +329,20 @@ class OutboundTest { return (SystemWrites.call(() -> EdiRecords.query(table, new QQueryFilter()))); } + + + /******************************************************************************* + ** Repeat-seconds worker schedules carry no cron time zone (core instance + ** validation refuses one on a non-cron schedule); cron schedules use UTC. + *******************************************************************************/ + @Test + void repeatSchedulesHaveNoCronTimeZone() + { + com.kingsrook.qbits.edi.EdiQBitConfig config = new com.kingsrook.qbits.edi.EdiQBitConfig().withSchedulerName("scheduler"); + var repeat = com.kingsrook.qbits.edi.processes.OutboundProcesses.process("edi_test_repeat", config, 15, null).getSchedule(); + assertThat(repeat.getRepeatSeconds()).isEqualTo(15); + assertThat(repeat.getCronTimeZoneId()).isNull(); + var cron = com.kingsrook.qbits.edi.processes.OutboundProcesses.process("edi_test_cron", config, null, "0 0 * * * ?").getSchedule(); + assertThat(cron.getCronTimeZoneId()).isEqualTo("UTC"); + } } -- 2.54.0