diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/base/JobExecutionConfiguration.java b/fe/fe-core/src/main/java/org/apache/doris/job/base/JobExecutionConfiguration.java index 55b4ff7911..46bc2c71ea 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/base/JobExecutionConfiguration.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/base/JobExecutionConfiguration.java @@ -96,7 +96,7 @@ public class JobExecutionConfiguration { return; } if (timerDefinition.getStartTimeMs() < System.currentTimeMillis()) { - throw new IllegalArgumentException("startTimeMs cannot be less than current time"); + throw new IllegalArgumentException("startTimeMs must be greater than current time"); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/base/TimerDefinition.java b/fe/fe-core/src/main/java/org/apache/doris/job/base/TimerDefinition.java index 978538e607..bcff4216c6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/base/TimerDefinition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/base/TimerDefinition.java @@ -39,9 +39,6 @@ public class TimerDefinition { public void checkParams(boolean immediate) { - if (null != startTimeMs && startTimeMs < System.currentTimeMillis()) { - throw new IllegalArgumentException("startTimeMs must be greater than current time"); - } if (null != startTimeMs && immediate) { throw new IllegalArgumentException("startTimeMs must be null when immediate is true"); } @@ -52,7 +49,7 @@ public class TimerDefinition { startTimeMs = System.currentTimeMillis() + intervalUnit.getIntervalMs(interval); } if (null != endTimeMs && endTimeMs < startTimeMs) { - throw new IllegalArgumentException("end time cannot be less than start time"); + throw new IllegalArgumentException("endTimeMs must be greater than the start time"); } if (null != intervalUnit) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/job/base/JobExecutionConfigurationTest.java b/fe/fe-core/src/test/java/org/apache/doris/job/base/JobExecutionConfigurationTest.java index 33a1178561..6d01f09c5e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/job/base/JobExecutionConfigurationTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/job/base/JobExecutionConfigurationTest.java @@ -65,6 +65,9 @@ public class JobExecutionConfigurationTest { delayTimes = configuration.getTriggerDelayTimes( 1001000L, 0L, 1000000L); Assertions.assertEquals(1, delayTimes.size()); + timerDefinition.setStartTimeMs(2000L); + timerDefinition.setIntervalUnit(IntervalUnit.SECOND); + Assertions.assertArrayEquals(new Long[]{2L, 12L}, configuration.getTriggerDelayTimes(100000L, 100000L, 120000L).toArray()); } @Test diff --git a/regression-test/suites/job_p0/test_base_insert_job.groovy b/regression-test/suites/job_p0/test_base_insert_job.groovy index 3f5cd5692f..d66266d8d6 100644 --- a/regression-test/suites/job_p0/test_base_insert_job.groovy +++ b/regression-test/suites/job_p0/test_base_insert_job.groovy @@ -145,9 +145,21 @@ suite("test_base_insert_job") { Thread.sleep(5000) def pressJob = sql """ select * from jobs("type"="insert") where name='press' """ println pressJob - + sql """ + DROP JOB IF EXISTS where jobname = 'past_start_time' + """ + sql """ + CREATE JOB past_start_time ON SCHEDULE every 10 hour starts '2023-11-13 14:18:07' comment 'test for test&68686781jbjbhj//ncsa' DO insert into ${tableName} values ('2023-07-19', 99, 99); + """ + + def past_start_time_job = sql """ select status from jobs("type"="insert") where name='past_start_time'""" + println past_start_time_job + assert past_start_time_job.get(0).get(0) == "RUNNING" def recurringTableDatas = sql """ select count(1) from ${tableName} where user_id=99 and type=99 """ assert recurringTableDatas.get(0).get(0) == 1 + sql """ + DROP JOB IF EXISTS where jobname = 'past_start_time' + """ sql """ DROP JOB IF EXISTS where jobname = '${jobName}' """ @@ -190,6 +202,7 @@ suite("test_base_insert_job") { CREATE JOB ${jobName} ON SCHEDULE at '2023-11-13 14:18:07' comment 'test' DO insert into ${tableName} (timestamp, type, user_id) values ('2023-03-18','1','12213'); """ } catch (Exception e) { + println e.getMessage() assert e.getMessage().contains("startTimeMs must be greater than current time") } // assert end time less than start time @@ -213,7 +226,7 @@ suite("test_base_insert_job") { CREATE JOB test_error_starts ON SCHEDULE every 1 second ends '2023-11-13 14:18:07' comment 'test' DO insert into ${tableName} (timestamp, type, user_id) values ('2023-03-18','1','12213'); """ } catch (Exception e) { - assert e.getMessage().contains("end time cannot be less than start time") + assert e.getMessage().contains("endTimeMs must be greater than the start time") } // assert interval time unit can not be years try {