Force live stream termination

This commit is contained in:
Chocobozzz 2023-05-15 15:06:14 +02:00
parent 1a5b7dff7f
commit 5a05c14573
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 6 additions and 13 deletions

View 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(() => {

View 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)

View 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

View 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
}