aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/schedulers
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/schedulers')
-rw-r--r--server/lib/schedulers/videos-redundancy-scheduler.ts25
1 files changed, 21 insertions, 4 deletions
diff --git a/server/lib/schedulers/videos-redundancy-scheduler.ts b/server/lib/schedulers/videos-redundancy-scheduler.ts
index d324adfd0..11ee05a53 100644
--- a/server/lib/schedulers/videos-redundancy-scheduler.ts
+++ b/server/lib/schedulers/videos-redundancy-scheduler.ts
@@ -12,6 +12,7 @@ import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send'
12import { VideoModel } from '../../models/video/video' 12import { VideoModel } from '../../models/video/video'
13import { getVideoCacheFileActivityPubUrl } from '../activitypub/url' 13import { getVideoCacheFileActivityPubUrl } from '../activitypub/url'
14import { removeVideoRedundancy } from '../redundancy' 14import { removeVideoRedundancy } from '../redundancy'
15import { getOrCreateVideoAndAccountAndChannel } from '../activitypub'
15 16
16export class VideosRedundancyScheduler extends AbstractScheduler { 17export class VideosRedundancyScheduler extends AbstractScheduler {
17 18
@@ -109,16 +110,32 @@ export class VideosRedundancyScheduler extends AbstractScheduler {
109 const serverActor = await getServerActor() 110 const serverActor = await getServerActor()
110 111
111 for (const file of filesToDuplicate) { 112 for (const file of filesToDuplicate) {
113 // We need more attributes and check if the video still exists
114 const getVideoOptions = {
115 videoObject: file.Video.url,
116 syncParam: { likes: false, dislikes: false, shares: false, comments: false, thumbnail: false, refreshVideo: true },
117 fetchType: 'only-video' as 'only-video'
118 }
119 const { video } = await getOrCreateVideoAndAccountAndChannel(getVideoOptions)
120
112 const existing = await VideoRedundancyModel.loadLocalByFileId(file.id) 121 const existing = await VideoRedundancyModel.loadLocalByFileId(file.id)
113 if (existing) { 122 if (existing) {
114 await this.extendsExpirationOf(existing, redundancy.minLifetime) 123 if (video) {
124 await this.extendsExpirationOf(existing, redundancy.minLifetime)
125 } else {
126 logger.info('Destroying existing redundancy %s, because the associated video does not exist anymore.', existing.url)
127
128 await existing.destroy()
129 }
115 130
116 continue 131 continue
117 } 132 }
118 133
119 // We need more attributes and check if the video still exists 134 if (!video) {
120 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(file.Video.id) 135 logger.info('Video %s we want to duplicate does not existing anymore, skipping.', file.Video.url)
121 if (!video) continue 136
137 continue
138 }
122 139
123 logger.info('Duplicating %s - %d in videos redundancy with "%s" strategy.', video.url, file.resolution, redundancy.strategy) 140 logger.info('Duplicating %s - %d in videos redundancy with "%s" strategy.', video.url, file.resolution, redundancy.strategy)
124 141