X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fplaylists%2Fcreate-update.ts;h=9339e8ea433d904f5c1467a0ebd0e8ba3dd59d7a;hb=cea2fd90ddb3bf57c2fed77128938d12d4c2be6b;hp=ea3e61ac5de98ce04a750a248740b322186fcd12;hpb=cf21b2cbef61929177b9c09b5e017c3b7eb8535d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/playlists/create-update.ts b/server/lib/activitypub/playlists/create-update.ts index ea3e61ac5..9339e8ea4 100644 --- a/server/lib/activitypub/playlists/create-update.ts +++ b/server/lib/activitypub/playlists/create-update.ts @@ -1,6 +1,6 @@ -import * as Bluebird from 'bluebird' -import { getAPId } from '@server/helpers/activitypub' +import { map } from 'bluebird' import { isArray } from '@server/helpers/custom-validators/misc' +import { retryTransactionWrapper } from '@server/helpers/database-utils' import { logger, loggerTagsFactory } from '@server/helpers/logger' import { CRAWL_REQUEST_CONCURRENCY } from '@server/initializers/constants' import { sequelizeTypescript } from '@server/initializers/database' @@ -9,8 +9,9 @@ import { VideoPlaylistModel } from '@server/models/video/video-playlist' import { VideoPlaylistElementModel } from '@server/models/video/video-playlist-element' import { FilteredModelAttributes } from '@server/types' import { MThumbnail, MVideoPlaylist, MVideoPlaylistFull, MVideoPlaylistVideosLength } from '@server/types/models' -import { AttributesOnly } from '@shared/core-utils' import { PlaylistObject } from '@shared/models' +import { AttributesOnly } from '@shared/typescript-utils' +import { getAPId } from '../activity' import { getOrCreateAPActor } from '../actors' import { crawlCollectionPage } from '../crawl' import { getOrCreateAPVideo } from '../videos' @@ -24,7 +25,7 @@ import { const lTags = loggerTagsFactory('ap', 'video-playlist') async function createAccountPlaylists (playlistUrls: string[]) { - await Bluebird.map(playlistUrls, async playlistUrl => { + await map(playlistUrls, async playlistUrl => { try { const exists = await VideoPlaylistModel.doesPlaylistExist(playlistUrl) if (exists === true) return @@ -124,13 +125,13 @@ async function updatePlaylistThumbnail (playlistObject: PlaylistObject, playlist async function rebuildVideoPlaylistElements (elementUrls: string[], playlist: MVideoPlaylist) { const elementsToCreate = await buildElementsDBAttributes(elementUrls, playlist) - await sequelizeTypescript.transaction(async t => { + await retryTransactionWrapper(() => sequelizeTypescript.transaction(async t => { await VideoPlaylistElementModel.deleteAllOf(playlist.id, t) for (const element of elementsToCreate) { await VideoPlaylistElementModel.create(element, { transaction: t }) } - }) + })) logger.info('Rebuilt playlist %s with %s elements.', playlist.url, elementsToCreate.length, lTags(playlist.uuid, playlist.url)) @@ -140,7 +141,7 @@ async function rebuildVideoPlaylistElements (elementUrls: string[], playlist: MV async function buildElementsDBAttributes (elementUrls: string[], playlist: MVideoPlaylist) { const elementsToCreate: FilteredModelAttributes[] = [] - await Bluebird.map(elementUrls, async elementUrl => { + await map(elementUrls, async elementUrl => { try { const { elementObject } = await fetchRemotePlaylistElement(elementUrl)