From d382f4e9175c1520835e41c3573471a84bcf1713 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 1 Oct 2018 15:34:31 +0200 Subject: Fix refreshing external video attributes --- server/lib/activitypub/videos.ts | 22 +++++++++++----------- server/models/video/video-caption.ts | 3 ++- 2 files changed, 13 insertions(+), 12 deletions(-) (limited to 'server') diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index b1e7f20b9..34685b6b1 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -205,7 +205,7 @@ async function updateVideoFromAP (options: { let videoFieldsSave: any try { - const updatedVideo: VideoModel = await sequelizeTypescript.transaction(async t => { + await sequelizeTypescript.transaction(async t => { const sequelizeOptions = { transaction: t } @@ -256,8 +256,12 @@ async function updateVideoFromAP (options: { await Promise.all(destroyTasks) // Update or add other one - const upsertTasks = videoFileAttributes.map(a => VideoFileModel.upsert(a, sequelizeOptions)) - await Promise.all(upsertTasks) + const upsertTasks = videoFileAttributes.map(a => { + return VideoFileModel.upsert(a, { returning: true, transaction: t }) + .then(([ file ]) => file) + }) + + options.video.VideoFiles = await Promise.all(upsertTasks) } { @@ -274,13 +278,11 @@ async function updateVideoFromAP (options: { const videoCaptionsPromises = options.videoObject.subtitleLanguage.map(c => { return VideoCaptionModel.insertOrReplaceLanguage(options.video.id, c.identifier, t) }) - await Promise.all(videoCaptionsPromises) + options.video.VideoCaptions = await Promise.all(videoCaptionsPromises) } }) logger.info('Remote video with uuid %s updated', options.videoObject.uuid) - - return updatedVideo } catch (err) { if (options.video !== undefined && videoFieldsSave !== undefined) { resetSequelizeInstance(options.video, videoFieldsSave) @@ -392,12 +394,10 @@ async function refreshVideoIfNeeded (options: { channel: channelActor.VideoChannel, updateViews: options.refreshViews } - const videoUpdated = await retryTransactionWrapper(updateVideoFromAP, updateOptions) - await syncVideoExternalAttributes(videoUpdated, videoObject, options.syncParam) - - return videoUpdated + await retryTransactionWrapper(updateVideoFromAP, updateOptions) + await syncVideoExternalAttributes(video, videoObject, options.syncParam) } catch (err) { - logger.warn('Cannot refresh video.', { err }) + logger.warn('Cannot refresh video %s.', options.video.url, { err }) return video } } diff --git a/server/models/video/video-caption.ts b/server/models/video/video-caption.ts index 10ef46c14..b4f17b481 100644 --- a/server/models/video/video-caption.ts +++ b/server/models/video/video-caption.ts @@ -120,7 +120,8 @@ export class VideoCaptionModel extends Model { language } - return VideoCaptionModel.upsert(values, { transaction }) + return VideoCaptionModel.upsert(values, { transaction, returning: true }) + .then(([ caption ]) => caption) } static listVideoCaptions (videoId: number) { -- cgit v1.2.3