Rename video-file job to video-transcoding

This commit is contained in:
Chocobozzz 2019-03-19 17:00:08 +01:00
parent 1ed9b8ee69
commit a0327eedb0
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
7 changed files with 31 additions and 21 deletions

View File

@ -42,6 +42,6 @@ async function run () {
} }
await JobQueue.Instance.init() 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) console.log('Transcoding job for video %s created.', video.uuid)
} }

View File

@ -283,7 +283,7 @@ async function addVideo (req: express.Request, res: express.Response) {
isNewVideo: true isNewVideo: true
} }
await JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) await JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput })
} }
return res.json({ return res.json({

View File

@ -100,36 +100,40 @@ const REMOTE_SCHEME = {
WS: 'wss' 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-broadcast': 5,
'activitypub-http-unicast': 5, 'activitypub-http-unicast': 5,
'activitypub-http-fetcher': 5, 'activitypub-http-fetcher': 5,
'activitypub-follow': 5, 'activitypub-follow': 5,
'video-file-import': 1, 'video-file-import': 1,
'video-transcoding': 1,
'video-file': 1, 'video-file': 1,
'video-import': 1, 'video-import': 1,
'email': 5, 'email': 5,
'videos-views': 1, 'videos-views': 1,
'activitypub-refresher': 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-broadcast': 1,
'activitypub-http-unicast': 5, 'activitypub-http-unicast': 5,
'activitypub-http-fetcher': 1, 'activitypub-http-fetcher': 1,
'activitypub-follow': 3, 'activitypub-follow': 3,
'video-file-import': 1, 'video-file-import': 1,
'video-transcoding': 1,
'video-file': 1, 'video-file': 1,
'video-import': 1, 'video-import': 1,
'email': 5, 'email': 5,
'videos-views': 1, 'videos-views': 1,
'activitypub-refresher': 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-broadcast': 60000 * 10, // 10 minutes
'activitypub-http-unicast': 60000 * 10, // 10 minutes 'activitypub-http-unicast': 60000 * 10, // 10 minutes
'activitypub-http-fetcher': 60000 * 10, // 10 minutes 'activitypub-http-fetcher': 60000 * 10, // 10 minutes
'activitypub-follow': 60000 * 10, // 10 minutes 'activitypub-follow': 60000 * 10, // 10 minutes
'video-file-import': 1000 * 3600, // 1 hour '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-file': 1000 * 3600 * 48, // 2 days, transcoding could be long
'video-import': 1000 * 3600 * 2, // hours 'video-import': 1000 * 3600 * 2, // hours
'email': 60000 * 10, // 10 minutes 'email': 60000 * 10, // 10 minutes

View File

@ -207,7 +207,7 @@ async function processFile (downloader: () => Promise<string>, videoImport: Vide
isNewVideo: true isNewVideo: true
} }
await JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) await JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput })
} }
} catch (err) { } catch (err) {

View File

@ -11,7 +11,7 @@ import { computeResolutionsToTranscode } from '../../../helpers/ffmpeg-utils'
import { generateHlsPlaylist, importVideoFile, optimizeVideofile, transcodeOriginalVideofile } from '../../video-transcoding' import { generateHlsPlaylist, importVideoFile, optimizeVideofile, transcodeOriginalVideofile } from '../../video-transcoding'
import { Notifier } from '../../notifier' import { Notifier } from '../../notifier'
export type VideoFilePayload = { export type VideoTranscodingPayload = {
videoUUID: string videoUUID: string
resolution?: VideoResolution resolution?: VideoResolution
isNewVideo?: boolean isNewVideo?: boolean
@ -41,8 +41,8 @@ async function processVideoFileImport (job: Bull.Job) {
return video return video
} }
async function processVideoFile (job: Bull.Job) { async function processVideoTranscoding (job: Bull.Job) {
const payload = job.data as VideoFilePayload const payload = job.data as VideoTranscodingPayload
logger.info('Processing video file in job %d.', job.id) logger.info('Processing video file in job %d.', job.id)
const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) 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 if (video === undefined) return undefined
const { videoDatabase, videoPublished } = await sequelizeTypescript.transaction(async t => { const { videoDatabase, videoPublished } = await sequelizeTypescript.transaction(async t => {
@ -118,7 +118,7 @@ async function onVideoFileTranscoderOrImportSuccess (video: VideoModel, payload?
await createHlsJobIfEnabled(payload) await createHlsJobIfEnabled(payload)
} }
async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: VideoFilePayload) { async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: VideoTranscodingPayload) {
if (videoArg === undefined) return undefined if (videoArg === undefined) return undefined
// Outside the transaction (IO on disk) // Outside the transaction (IO on disk)
@ -148,7 +148,7 @@ async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: Video
resolution resolution
} }
const p = JobQueue.Instance.createJob({ type: 'video-file', payload: dataInput }) const p = JobQueue.Instance.createJob({ type: 'video-transcoding', payload: dataInput })
tasks.push(p) tasks.push(p)
} }
@ -182,13 +182,13 @@ async function onVideoFileOptimizerSuccess (videoArg: VideoModel, payload: Video
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
export { export {
processVideoFile, processVideoTranscoding,
processVideoFileImport processVideoFileImport
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
function createHlsJobIfEnabled (payload?: VideoFilePayload) { function createHlsJobIfEnabled (payload?: VideoTranscodingPayload) {
// Generate HLS playlist? // Generate HLS playlist?
if (payload && CONFIG.TRANSCODING.HLS.ENABLED) { if (payload && CONFIG.TRANSCODING.HLS.ENABLED) {
const hlsTranscodingPayload = { const hlsTranscodingPayload = {
@ -199,6 +199,6 @@ function createHlsJobIfEnabled (payload?: VideoFilePayload) {
generateHlsPlaylist: true generateHlsPlaylist: true
} }
return JobQueue.Instance.createJob({ type: 'video-file', payload: hlsTranscodingPayload }) return JobQueue.Instance.createJob({ type: 'video-transcoding', payload: hlsTranscodingPayload })
} }
} }

View File

@ -7,7 +7,12 @@ import { ActivitypubHttpBroadcastPayload, processActivityPubHttpBroadcast } from
import { ActivitypubHttpFetcherPayload, processActivityPubHttpFetcher } from './handlers/activitypub-http-fetcher' import { ActivitypubHttpFetcherPayload, processActivityPubHttpFetcher } from './handlers/activitypub-http-fetcher'
import { ActivitypubHttpUnicastPayload, processActivityPubHttpUnicast } from './handlers/activitypub-http-unicast' import { ActivitypubHttpUnicastPayload, processActivityPubHttpUnicast } from './handlers/activitypub-http-unicast'
import { EmailPayload, processEmail } from './handlers/email' 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 { ActivitypubFollowPayload, processActivityPubFollow } from './handlers/activitypub-follow'
import { processVideoImport, VideoImportPayload } from './handlers/video-import' import { processVideoImport, VideoImportPayload } from './handlers/video-import'
import { processVideosViews } from './handlers/video-views' import { processVideosViews } from './handlers/video-views'
@ -19,19 +24,20 @@ type CreateJobArgument =
{ type: 'activitypub-http-fetcher', payload: ActivitypubHttpFetcherPayload } | { type: 'activitypub-http-fetcher', payload: ActivitypubHttpFetcherPayload } |
{ type: 'activitypub-follow', payload: ActivitypubFollowPayload } | { type: 'activitypub-follow', payload: ActivitypubFollowPayload } |
{ type: 'video-file-import', payload: VideoFileImportPayload } | { type: 'video-file-import', payload: VideoFileImportPayload } |
{ type: 'video-file', payload: VideoFilePayload } | { type: 'video-transcoding', payload: VideoTranscodingPayload } |
{ type: 'email', payload: EmailPayload } | { type: 'email', payload: EmailPayload } |
{ type: 'video-import', payload: VideoImportPayload } | { type: 'video-import', payload: VideoImportPayload } |
{ type: 'activitypub-refresher', payload: RefreshPayload } | { type: 'activitypub-refresher', payload: RefreshPayload } |
{ type: 'videos-views', payload: {} } { type: 'videos-views', payload: {} }
const handlers: { [ id in JobType ]: (job: Bull.Job) => Promise<any>} = { const handlers: { [ id in (JobType | 'video-file') ]: (job: Bull.Job) => Promise<any>} = {
'activitypub-http-broadcast': processActivityPubHttpBroadcast, 'activitypub-http-broadcast': processActivityPubHttpBroadcast,
'activitypub-http-unicast': processActivityPubHttpUnicast, 'activitypub-http-unicast': processActivityPubHttpUnicast,
'activitypub-http-fetcher': processActivityPubHttpFetcher, 'activitypub-http-fetcher': processActivityPubHttpFetcher,
'activitypub-follow': processActivityPubFollow, 'activitypub-follow': processActivityPubFollow,
'video-file-import': processVideoFileImport, 'video-file-import': processVideoFileImport,
'video-file': processVideoFile, 'video-transcoding': processVideoTranscoding,
'video-file': processVideoTranscoding, // TODO: remove it (changed in 1.3)
'email': processEmail, 'email': processEmail,
'video-import': processVideoImport, 'video-import': processVideoImport,
'videos-views': processVideosViews, 'videos-views': processVideosViews,
@ -44,7 +50,7 @@ const jobTypes: JobType[] = [
'activitypub-http-fetcher', 'activitypub-http-fetcher',
'activitypub-http-unicast', 'activitypub-http-unicast',
'email', 'email',
'video-file', 'video-transcoding',
'video-file-import', 'video-file-import',
'video-import', 'video-import',
'videos-views', 'videos-views',

View File

@ -5,7 +5,7 @@ export type JobType = 'activitypub-http-unicast' |
'activitypub-http-fetcher' | 'activitypub-http-fetcher' |
'activitypub-follow' | 'activitypub-follow' |
'video-file-import' | 'video-file-import' |
'video-file' | 'video-transcoding' |
'email' | 'email' |
'video-import' | 'video-import' |
'videos-views' | 'videos-views' |