From a0327eedb0136c4ba7358df80b75cc56bd25ffb8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 19 Mar 2019 17:00:08 +0100 Subject: [PATCH] Rename video-file job to video-transcoding --- scripts/create-transcoding-job.ts | 2 +- server/controllers/api/videos/index.ts | 2 +- server/initializers/constants.ts | 10 +++++++--- server/lib/job-queue/handlers/video-import.ts | 2 +- .../{video-file.ts => video-transcoding.ts} | 18 +++++++++--------- server/lib/job-queue/job-queue.ts | 16 +++++++++++----- shared/models/server/job.model.ts | 2 +- 7 files changed, 31 insertions(+), 21 deletions(-) rename server/lib/job-queue/handlers/{video-file.ts => video-transcoding.ts} (92%) diff --git a/scripts/create-transcoding-job.ts b/scripts/create-transcoding-job.ts index 7e5b687bb..4a677eacb 100755 --- a/scripts/create-transcoding-job.ts +++ b/scripts/create-transcoding-job.ts @@ -42,6 +42,6 @@ async function run () { } await JobQueue.Instance.init() - await JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) + await JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput }) console.log('Transcoding job for video %s created.', video.uuid) } diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index db4f4c96f..08bee97d3 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -283,7 +283,7 @@ async function addVideo (req: express.Request, res: express.Response) { isNewVideo: true } - await JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) + await JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput }) } return res.json({ diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 54cd57619..ff0ade17a 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -100,36 +100,40 @@ const REMOTE_SCHEME = { WS: 'wss' } -const JOB_ATTEMPTS: { [ id in JobType ]: number } = { +// TODO: remove 'video-file' +const JOB_ATTEMPTS: { [ id in (JobType | 'video-file') ]: number } = { 'activitypub-http-broadcast': 5, 'activitypub-http-unicast': 5, 'activitypub-http-fetcher': 5, 'activitypub-follow': 5, 'video-file-import': 1, + 'video-transcoding': 1, 'video-file': 1, 'video-import': 1, 'email': 5, 'videos-views': 1, 'activitypub-refresher': 1 } -const JOB_CONCURRENCY: { [ id in JobType ]: number } = { +const JOB_CONCURRENCY: { [ id in (JobType | 'video-file') ]: number } = { 'activitypub-http-broadcast': 1, 'activitypub-http-unicast': 5, 'activitypub-http-fetcher': 1, 'activitypub-follow': 3, 'video-file-import': 1, + 'video-transcoding': 1, 'video-file': 1, 'video-import': 1, 'email': 5, 'videos-views': 1, 'activitypub-refresher': 1 } -const JOB_TTL: { [ id in JobType ]: number } = { +const JOB_TTL: { [ id in (JobType | 'video-file') ]: number } = { 'activitypub-http-broadcast': 60000 * 10, // 10 minutes 'activitypub-http-unicast': 60000 * 10, // 10 minutes 'activitypub-http-fetcher': 60000 * 10, // 10 minutes 'activitypub-follow': 60000 * 10, // 10 minutes 'video-file-import': 1000 * 3600, // 1 hour + 'video-transcoding': 1000 * 3600 * 48, // 2 days, transcoding could be long 'video-file': 1000 * 3600 * 48, // 2 days, transcoding could be long 'video-import': 1000 * 3600 * 2, // hours 'email': 60000 * 10, // 10 minutes diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts index 12004dcd7..d96bfdf43 100644 --- a/server/lib/job-queue/handlers/video-import.ts +++ b/server/lib/job-queue/handlers/video-import.ts @@ -207,7 +207,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide isNewVideo: true } - await JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) + await JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput }) } } catch (err) { diff --git a/server/lib/job-queue/handlers/video-file.ts b/server/lib/job-queue/handlers/video-transcoding.ts similarity index 92% rename from server/lib/job-queue/handlers/video-file.ts rename to server/lib/job-queue/handlers/video-transcoding.ts index 3a867b77f..ceee83f13 100644 --- a/server/lib/job-queue/handlers/video-file.ts +++ b/server/lib/job-queue/handlers/video-transcoding.ts @@ -11,7 +11,7 @@ import { computeResolutionsToTranscode } from '../../../helpers/ffmpeg-utils' import { generateHlsPlaylist, importVideoFile, optimizeVideofile, transcodeOriginalVideofile } from '../../video-transcoding' import { Notifier } from '../../notifier' -export type VideoFilePayload = { +export type VideoTranscodingPayload = { videoUUID: string resolution?: VideoResolution isNewVideo?: boolean @@ -41,8 +41,8 @@ async function processVideoFileImport (job: Bull.Job) { return video } -async function processVideoFile (job: Bull.Job) { - const payload = job.data as VideoFilePayload +async function processVideoTranscoding (job: Bull.Job) { + const payload = job.data as VideoTranscodingPayload logger.info('Processing video file in job %d.', job.id) const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) @@ -83,7 +83,7 @@ async function onHlsPlaylistGenerationSuccess (video: VideoModel) { }) } -async function onVideoFileTranscoderOrImportSuccess (video: VideoModel, payload?: VideoFilePayload) { +async function onVideoFileTranscoderOrImportSuccess (video: VideoModel, payload?: VideoTranscodingPayload) { if (video === undefined) return undefined const { videoDatabase, videoPublished } = await sequelizeTypescript.transaction(async t => { @@ -118,7 +118,7 @@ async function onVideoFileTranscoderOrImportSuccess (video: VideoModel, payload? await createHlsJobIfEnabled(payload) } -async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: VideoFilePayload) { +async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: VideoTranscodingPayload) { if (videoArg === undefined) return undefined // Outside the transaction (IO on disk) @@ -148,7 +148,7 @@ async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: Video resolution } - const p = JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) + const p = JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput }) tasks.push(p) } @@ -182,13 +182,13 @@ async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: Video // --------------------------------------------------------------------------- export { - processVideoFile, + processVideoTranscoding, processVideoFileImport } // --------------------------------------------------------------------------- -function createHlsJobIfEnabled (payload?: VideoFilePayload) { +function createHlsJobIfEnabled (payload?: VideoTranscodingPayload) { // Generate HLS playlist? if (payload && CONFIG.TRANSCODING.HLS.ENABLED) { const hlsTranscodingPayload = { @@ -199,6 +199,6 @@ function createHlsJobIfEnabled (payload?: VideoFilePayload) { generateHlsPlaylist: true } - return JobQueue.Instance.createJob({ type: 'video-file', payload: hlsTranscodingPayload }) + return JobQueue.Instance.createJob({ type: 'video-transcoding', payload: hlsTranscodingPayload }) } } diff --git a/server/lib/job-queue/job-queue.ts b/server/lib/job-queue/job-queue.ts index ba9cbe0d9..e73042163 100644 --- a/server/lib/job-queue/job-queue.ts +++ b/server/lib/job-queue/job-queue.ts @@ -7,7 +7,12 @@ import { ActivitypubHttpBroadcastPayload, processActivityPubHttpBroadcast } from import { ActivitypubHttpFetcherPayload, processActivityPubHttpFetcher } from './handlers/activitypub-http-fetcher' import { ActivitypubHttpUnicastPayload, processActivityPubHttpUnicast } from './handlers/activitypub-http-unicast' import { EmailPayload, processEmail } from './handlers/email' -import { processVideoFile, processVideoFileImport, VideoFileImportPayload, VideoFilePayload } from './handlers/video-file' +import { + processVideoFileImport, + processVideoTranscoding, + VideoFileImportPayload, + VideoTranscodingPayload +} from './handlers/video-transcoding' import { ActivitypubFollowPayload, processActivityPubFollow } from './handlers/activitypub-follow' import { processVideoImport, VideoImportPayload } from './handlers/video-import' import { processVideosViews } from './handlers/video-views' @@ -19,19 +24,20 @@ type CreateJobArgument = { type: 'activitypub-http-fetcher', payload: ActivitypubHttpFetcherPayload } | { type: 'activitypub-follow', payload: ActivitypubFollowPayload } | { type: 'video-file-import', payload: VideoFileImportPayload } | - { type: 'video-file', payload: VideoFilePayload } | + { type: 'video-transcoding', payload: VideoTranscodingPayload } | { type: 'email', payload: EmailPayload } | { type: 'video-import', payload: VideoImportPayload } | { type: 'activitypub-refresher', payload: RefreshPayload } | { type: 'videos-views', payload: {} } -const handlers: { [ id in JobType ]: (job: Bull.Job) => Promise} = { +const handlers: { [ id in (JobType | 'video-file') ]: (job: Bull.Job) => Promise} = { 'activitypub-http-broadcast': processActivityPubHttpBroadcast, 'activitypub-http-unicast': processActivityPubHttpUnicast, 'activitypub-http-fetcher': processActivityPubHttpFetcher, 'activitypub-follow': processActivityPubFollow, 'video-file-import': processVideoFileImport, - 'video-file': processVideoFile, + 'video-transcoding': processVideoTranscoding, + 'video-file': processVideoTranscoding, // TODO: remove it (changed in 1.3) 'email': processEmail, 'video-import': processVideoImport, 'videos-views': processVideosViews, @@ -44,7 +50,7 @@ const jobTypes: JobType[] = [ 'activitypub-http-fetcher', 'activitypub-http-unicast', 'email', - 'video-file', + 'video-transcoding', 'video-file-import', 'video-import', 'videos-views', diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts index 85bc9541b..1b9aa8a07 100644 --- a/shared/models/server/job.model.ts +++ b/shared/models/server/job.model.ts @@ -5,7 +5,7 @@ export type JobType = 'activitypub-http-unicast' | 'activitypub-http-fetcher' | 'activitypub-follow' | 'video-file-import' | - 'video-file' | + 'video-transcoding' | 'email' | 'video-import' | 'videos-views' | -- 2.41.0