]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/transcoding/shared/job-builders/transcoding-job-queue-builder.ts
Reload the video after waiting for the files lock
[github/Chocobozzz/PeerTube.git] / server / lib / transcoding / shared / job-builders / transcoding-job-queue-builder.ts
index c09c6b8ce9b6cfc56deaa86be31b64dbcc4a7b9b..fa2ac70bf1d1646c978e657fdb6fe438d464d001 100644 (file)
@@ -16,6 +16,7 @@ import {
   OptimizeTranscodingPayload,
   VideoTranscodingPayload
 } from '@shared/models'
+import { getTranscodingJobPriority } from '../../transcoding-priority'
 import { canDoQuickTranscode } from '../../transcoding-quick-transcode'
 import { computeResolutionsToTranscode } from '../../transcoding-resolutions'
 import { AbstractJobBuilder } from './abstract-job-builder'
@@ -27,15 +28,21 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
     videoFile: MVideoFile
     isNewVideo: boolean
     user: MUserId
+    videoFileAlreadyLocked: boolean
   }) {
-    const { video, videoFile, isNewVideo, user } = options
+    const { video, videoFile, isNewVideo, user, videoFileAlreadyLocked } = options
 
     let mergeOrOptimizePayload: MergeAudioTranscodingPayload | OptimizeTranscodingPayload
     let nextTranscodingSequentialJobPayloads: (NewWebTorrentResolutionTranscodingPayload | HLSTranscodingPayload)[][] = []
 
-    const mutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
+    const mutexReleaser = videoFileAlreadyLocked
+      ? () => {}
+      : await VideoPathManager.Instance.lockFiles(video.uuid)
 
     try {
+      await video.reload()
+      await videoFile.reload()
+
       await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), async videoFilePath => {
         const probe = await ffprobePromise(videoFilePath)
 
@@ -175,7 +182,7 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
 
     return {
       type: 'video-transcoding' as 'video-transcoding',
-      priority: await this.getTranscodingJobPriority({ user, fallback: undefined }),
+      priority: await getTranscodingJobPriority({ user, type: 'vod', fallback: undefined }),
       payload
     }
   }