]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Force live stream termination
authorChocobozzz <me@florianbigard.com>
Mon, 15 May 2023 13:06:14 +0000 (15:06 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 15 May 2023 13:06:14 +0000 (15:06 +0200)
server/lib/live/live-manager.ts
server/tests/api/moderation/video-blacklist.ts
server/tests/api/object-storage/videos.ts
shared/server-commands/videos/live.ts

index c78cf82eb41ec11dab1d9d2a7cdd988f14d4e5c1..6d51f4de7c005385094298ffeb947ceeb8616dd1 100644 (file)
@@ -6,6 +6,7 @@ import { logger, loggerTagsFactory } from '@server/helpers/logger'
 import { CONFIG, registerConfigChangedHandler } from '@server/initializers/config'
 import { VIDEO_LIVE } from '@server/initializers/constants'
 import { sequelizeTypescript } from '@server/initializers/database'
+import { RunnerJobModel } from '@server/models/runner/runner-job'
 import { UserModel } from '@server/models/user/user'
 import { VideoModel } from '@server/models/video/video'
 import { VideoLiveModel } from '@server/models/video/video-live'
@@ -25,7 +26,6 @@ import { computeResolutionsToTranscode } from '../transcoding/transcoding-resolu
 import { LiveQuotaStore } from './live-quota-store'
 import { cleanupAndDestroyPermanentLive, getLiveSegmentTime } from './live-utils'
 import { MuxingSession } from './shared'
-import { RunnerJobModel } from '@server/models/runner/runner-job'
 
 const NodeRtmpSession = require('node-media-server/src/node_rtmp_session')
 const context = require('node-media-server/src/node_core_ctx')
@@ -80,6 +80,9 @@ class LiveManager {
 
     events.on('donePublish', sessionId => {
       logger.info('Live session ended.', { sessionId, ...lTags(sessionId) })
+
+      // Force session aborting, so we kill ffmpeg even if it still has data to process (slow CPU)
+      setTimeout(() => this.abortSession(sessionId), 2000)
     })
 
     registerConfigChangedHandler(() => {
index ad132aa3965d88e9e7606ab4b1376c3e456d8969..ef087a93b812fa8276b98bc4a9808b9ef49a0185 100644 (file)
@@ -239,8 +239,6 @@ describe('Test video blacklist', function () {
     let video4UUID: string
 
     before(async function () {
-      this.timeout(10000)
-
       {
         const { uuid } = await servers[0].videos.upload({ attributes: { name: 'Video 3' } })
         video3UUID = uuid
@@ -254,8 +252,6 @@ describe('Test video blacklist', function () {
     })
 
     it('Should blacklist video 3 and keep it federated', async function () {
-      this.timeout(10000)
-
       await command.add({ videoId: video3UUID, reason: 'super reason', unfederate: false })
 
       await waitJobs(servers)
@@ -272,8 +268,6 @@ describe('Test video blacklist', function () {
     })
 
     it('Should unfederate the video', async function () {
-      this.timeout(10000)
-
       await command.add({ videoId: video4UUID, reason: 'super reason', unfederate: true })
 
       await waitJobs(servers)
@@ -285,8 +279,6 @@ describe('Test video blacklist', function () {
     })
 
     it('Should have the video unfederated even after an Update AP message', async function () {
-      this.timeout(10000)
-
       await servers[0].videos.update({ id: video4UUID, attributes: { description: 'super description' } })
 
       await waitJobs(servers)
@@ -309,8 +301,6 @@ describe('Test video blacklist', function () {
     })
 
     it('Should remove the video from blacklist and refederate the video', async function () {
-      this.timeout(10000)
-
       await command.remove({ videoId: video4UUID })
 
       await waitJobs(servers)
index 77bb006784a2884500876a7f053604c430066def..77ed78ae11a9cba845f49737a81d1bae2d36eeb4 100644 (file)
@@ -152,7 +152,7 @@ function runTestSuite (options: {
   let deletedUrls: string[] = []
 
   before(async function () {
-    this.timeout(120000)
+    this.timeout(240000)
 
     const port = await mockObjectStorageProxy.initialize()
     baseMockUrl = options.useMockBaseUrl
index 3b09d3ff81c9ef01003109cbdd3f9d1431555f1d..48464fb6110153f7aca4a370e675bd5c1c71f7e7 100644 (file)
@@ -63,7 +63,7 @@ async function testFfmpegStreamError (command: FfmpegCommand, shouldHaveError: b
   let error: Error
 
   try {
-    await waitFfmpegUntilError(command, 35000)
+    await waitFfmpegUntilError(command, 45000)
   } catch (err) {
     error = err
   }