-
Notifications
You must be signed in to change notification settings - Fork 5k
[DSIP-80][Scheduler] Fix scheduler duplicate fired #16816
Copy link
Copy link
Open
Labels
Description
Search before asking
- I had searched in the DSIP and found no similar DSIP.
Motivation
I sometimes find the scheduler might be duplicate triggered.

This might happen when ProcessScheduleTask has a bad performance or the isolation levels is incorrect or we use incorrect quartz parameters.
The said thing is that we don't have any metrics to monitor whether there exist duplicate fired.
Design Detail
Add a new table t_ds_schedule_instance to record the scheduler fired instance.
CREATE TABLE `t_ds_schedule_instance` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'key',
`schedule_id` int NOT NULL,
`workflow_instance_id` int NOT NULL,
`expect_fire_time` bigint NOT NULL,
`actual_fire_time` bigint NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_t_ds_schedule_si_eft` (`schedule_id`,`expect_fire_time`)
) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8mb3Each record in this table represend a success fired of quartz.
Once the scheduler triggered success we will insert a ScheduleInstance, if there exist duplicate record will throw exception from db.
Compatibility, Deprecation, and Migration Plan
Compatibility with previous version, since the table is newly created.
Test Plan
Test by IT.
Code of Conduct
- I agree to follow this project's Code of Conduct
Reactions are currently unavailable
