diff --git a/server/src/main/kotlin/suwayomi/tachidesk/util/HAScheduler.kt b/server/src/main/kotlin/suwayomi/tachidesk/util/HAScheduler.kt index 83cf205036..b12f7260a3 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/util/HAScheduler.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/util/HAScheduler.kt @@ -128,9 +128,10 @@ object HAScheduler { ) } - private fun createTimerTask(interval: Long, execute: () -> Unit): TimerTask { + private fun createTimerTask(interval: Long, execute: () -> Unit, initialDelay: Long = interval): TimerTask { return object : TimerTask() { - var lastExecutionTime: Long = 0 + val elapsedIntervalTime = interval + initialDelay + var lastExecutionTime: Long = System.currentTimeMillis() - elapsedIntervalTime override fun run() { // If a task scheduled via "Timer::scheduleAtFixedRate" is delayed for some reason, the Timer will @@ -173,12 +174,11 @@ object HAScheduler { fun reschedule(taskId: String, interval: Long) { val task = deschedule(taskId) ?: return - val timerTask = createTimerTask(interval, task.execute) - val timeToNextExecution = task.getTimeToNextExecution() val intervalDifference = interval - task.interval val remainingTimeTillNextExecution = (timeToNextExecution + intervalDifference).coerceAtLeast(0) + val timerTask = createTimerTask(interval, task.execute, initialDelay = remainingTimeTillNextExecution) scheduledTasks.add(HATask(taskId, interval, task.execute, timerTask, task.name, initialDelay = remainingTimeTillNextExecution)) timer.scheduleAtFixedRate(timerTask, remainingTimeTillNextExecution, interval) }