import { throttle } from 'lodash'
-import { retryTransactionWrapper } from '@server/helpers/database-utils'
+import { retryTransactionWrapper, saveInTransactionWithRetries } from '@server/helpers/database-utils'
import { logger, loggerTagsFactory } from '@server/helpers/logger'
import { RUNNER_JOBS } from '@server/initializers/constants'
import { sequelizeTypescript } from '@server/initializers/database'
RunnerJobLiveRTMPHLSTranscodingPayload,
RunnerJobLiveRTMPHLSTranscodingPrivatePayload,
RunnerJobState,
+ RunnerJobStudioTranscodingPayload,
RunnerJobSuccessPayload,
RunnerJobType,
RunnerJobUpdatePayload,
- RunnerJobVideoEditionTranscodingPayload,
- RunnerJobVideoEditionTranscodingPrivatePayload,
+ RunnerJobVideoStudioTranscodingPrivatePayload,
RunnerJobVODAudioMergeTranscodingPayload,
RunnerJobVODAudioMergeTranscodingPrivatePayload,
RunnerJobVODHLSTranscodingPayload,
privatePayload: RunnerJobLiveRTMPHLSTranscodingPrivatePayload
} |
{
- type: Extract<RunnerJobType, 'video-edition-transcoding'>
- payload: RunnerJobVideoEditionTranscodingPayload
- privatePayload: RunnerJobVideoEditionTranscodingPrivatePayload
+ type: Extract<RunnerJobType, 'video-studio-transcoding'>
+ payload: RunnerJobStudioTranscodingPayload
+ privatePayload: RunnerJobVideoStudioTranscodingPrivatePayload
}
export abstract class AbstractJobHandler <C, U extends RunnerJobUpdatePayload, S extends RunnerJobSuccessPayload> {
}) {
const { runnerJob } = options
+ runnerJob.state = RunnerJobState.COMPLETING
+ await saveInTransactionWithRetries(runnerJob)
+
try {
await this.specificComplete(options)
runnerJob.progress = null
runnerJob.finishedAt = new Date()
- await retryTransactionWrapper(() => {
- return sequelizeTypescript.transaction(async transaction => {
- await runnerJob.save({ transaction })
- })
- })
+ await saveInTransactionWithRetries(runnerJob)
const [ affectedCount ] = await RunnerJobModel.updateDependantJobsOf(runnerJob)