diff --git a/server/core/lib/live/live-manager.ts b/server/core/lib/live/live-manager.ts index 21781dd01..3e20d33e6 100644 --- a/server/core/lib/live/live-manager.ts +++ b/server/core/lib/live/live-manager.ts @@ -523,7 +523,7 @@ class LiveManager { } private async handleBrokenLives () { - await RunnerJobModel.cancelAllJobs({ type: 'live-rtmp-hls-transcoding' }) + await RunnerJobModel.cancelAllNonFinishedJobs({ type: 'live-rtmp-hls-transcoding' }) const videoUUIDs = await VideoModel.listPublishedLiveUUIDs() diff --git a/server/core/models/runner/runner-job.ts b/server/core/models/runner/runner-job.ts index 5c466518d..e4d4c09f7 100644 --- a/server/core/models/runner/runner-job.ts +++ b/server/core/models/runner/runner-job.ts @@ -278,9 +278,12 @@ export class RunnerJobModel extends SequelizeModel { return RunnerJobModel.update({ state: RunnerJobState.PENDING }, { where }) } - static cancelAllJobs (options: { type: RunnerJobType }) { + static cancelAllNonFinishedJobs (options: { type: RunnerJobType }) { const where = { - type: options.type + type: options.type, + state: { + [Op.in]: [ RunnerJobState.COMPLETING, RunnerJobState.PENDING, RunnerJobState.PROCESSING, RunnerJobState.WAITING_FOR_PARENT_JOB ] + } } return RunnerJobModel.update({ state: RunnerJobState.CANCELLED }, { where })