Fix notification on create transcoding job

pull/4627/head
Chocobozzz 2021-10-08 15:34:07 +02:00
parent f82416cc58
commit efa3fef23e
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 20 additions and 6 deletions

View File

@ -70,13 +70,13 @@ async function moveToPublishedState (video: MVideoFullLight, isNewVideo: boolean
logger.info('Publishing video %s.', video.uuid, { tags: [ video.uuid ] })
const previousState = video.state
await video.setNewState(VideoState.PUBLISHED, transaction)
await video.setNewState(VideoState.PUBLISHED, isNewVideo, transaction)
// If the video was not published, we consider it is a new one for other instances
// Live videos are always federated, so it's not a new video
await federateVideoIfNeeded(video, isNewVideo, transaction)
Notifier.Instance.notifyOnNewVideoIfNeeded(video)
if (isNewVideo) Notifier.Instance.notifyOnNewVideoIfNeeded(video)
if (previousState === VideoState.TO_TRANSCODE) {
Notifier.Instance.notifyOnVideoPublishedAfterTranscoding(video)
@ -90,7 +90,7 @@ async function moveToExternalStorageState (video: MVideoFullLight, isNewVideo: b
// We want to wait all transcoding jobs before moving the video on an external storage
if (pendingTranscode !== 0) return
await video.setNewState(VideoState.TO_MOVE_TO_EXTERNAL_STORAGE, transaction)
await video.setNewState(VideoState.TO_MOVE_TO_EXTERNAL_STORAGE, isNewVideo, transaction)
logger.info('Creating external storage move job for video %s.', video.uuid, { tags: [ video.uuid ] })

View File

@ -1766,12 +1766,12 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
this.privacy === VideoPrivacy.INTERNAL
}
async setNewState (newState: VideoState, transaction: Transaction) {
async setNewState (newState: VideoState, isNewVideo: boolean, transaction: Transaction) {
if (this.state === newState) throw new Error('Cannot use same state ' + newState)
this.state = newState
if (this.state === VideoState.PUBLISHED) {
if (this.state === VideoState.PUBLISHED && isNewVideo) {
this.publishedAt = new Date()
}

View File

@ -33,9 +33,10 @@ async function checkFilesInObjectStorage (files: VideoFile[], type: 'webtorrent'
function runTests (objectStorage: boolean) {
let servers: PeerTubeServer[] = []
const videosUUID: string[] = []
const publishedAt: string[] = []
before(async function () {
this.timeout(60000)
this.timeout(120000)
const config = objectStorage
? ObjectStorageCommand.getDefaultConfig()
@ -54,6 +55,11 @@ function runTests (objectStorage: boolean) {
for (let i = 1; i <= 5; i++) {
const { uuid, shortUUID } = await servers[0].videos.upload({ attributes: { name: 'video' + i } })
await waitJobs(servers)
const video = await servers[0].videos.get({ id: uuid })
publishedAt.push(video.publishedAt as string)
if (i > 2) {
videosUUID.push(uuid)
} else {
@ -225,6 +231,14 @@ function runTests (objectStorage: boolean) {
}
})
it('Should not have updated published at attributes', async function () {
for (const id of videosUUID) {
const video = await servers[0].videos.get({ id })
expect(publishedAt.some(p => video.publishedAt === p)).to.be.true
}
})
after(async function () {
await cleanupTests(servers)
})