diff options
Diffstat (limited to 'server/lib/activitypub')
-rw-r--r-- | server/lib/activitypub/videos.ts | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 7d16bd390..6d20e0e65 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts | |||
@@ -272,11 +272,22 @@ async function getOrCreateVideoAndAccountAndChannel ( | |||
272 | 272 | ||
273 | const actor = await getOrCreateVideoChannelFromVideoObject(fetchedVideo) | 273 | const actor = await getOrCreateVideoChannelFromVideoObject(fetchedVideo) |
274 | const videoChannel = actor.VideoChannel | 274 | const videoChannel = actor.VideoChannel |
275 | const { autoBlacklisted, videoCreated } = await retryTransactionWrapper(createVideo, fetchedVideo, videoChannel, syncParam.thumbnail) | ||
276 | 275 | ||
277 | await syncVideoExternalAttributes(videoCreated, fetchedVideo, syncParam) | 276 | try { |
277 | const { autoBlacklisted, videoCreated } = await retryTransactionWrapper(createVideo, fetchedVideo, videoChannel, syncParam.thumbnail) | ||
278 | |||
279 | await syncVideoExternalAttributes(videoCreated, fetchedVideo, syncParam) | ||
278 | 280 | ||
279 | return { video: videoCreated, created: true, autoBlacklisted } | 281 | return { video: videoCreated, created: true, autoBlacklisted } |
282 | } catch (err) { | ||
283 | // Maybe a concurrent getOrCreateVideoAndAccountAndChannel call created this video | ||
284 | if (err.name === 'SequelizeUniqueConstraintError') { | ||
285 | const fallbackVideo = await fetchVideoByUrl(videoUrl, fetchType) | ||
286 | if (fallbackVideo) return { video: fallbackVideo, created: false } | ||
287 | } | ||
288 | |||
289 | throw err | ||
290 | } | ||
280 | } | 291 | } |
281 | 292 | ||
282 | async function updateVideoFromAP (options: { | 293 | async function updateVideoFromAP (options: { |