Fix redundancy remove on host redundancy update

pull/4360/head
Chocobozzz 2021-08-26 10:00:12 +02:00
parent 5a298a5a3d
commit 7b6cf83e33
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 48 additions and 15 deletions

View File

@ -106,9 +106,11 @@ async function updateRedundancy (req: express.Request, res: express.Response) {
await server.save()
// Async, could be long
removeRedundanciesOfServer(server.id)
.catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err }))
if (server.redundancyAllowed !== true) {
// Async, could be long
removeRedundanciesOfServer(server.id)
.catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err }))
}
return res.status(HttpStatusCode.NO_CONTENT_204).end()
}

View File

@ -470,16 +470,34 @@ export class VideoRedundancyModel extends Model<Partial<AttributesOnly<VideoRedu
const query = {
where: {
actorId: actor.id
[Op.and]: [
{
actorId: actor.id
},
{
[Op.or]: [
{
'$VideoStreamingPlaylist.id$': {
[Op.ne]: null
}
},
{
'$VideoFile.id$': {
[Op.ne]: null
}
}
]
}
]
},
include: [
{
model: VideoFileModel,
model: VideoFileModel.unscoped(),
required: false,
include: [ buildVideoInclude() ]
},
{
model: VideoStreamingPlaylistModel,
model: VideoStreamingPlaylistModel.unscoped(),
required: false,
include: [ buildVideoInclude() ]
}

View File

@ -49,7 +49,7 @@ async function checkMagnetWebseeds (file: VideoFile, baseWebseeds: string[], ser
}
}
async function createSingleServers (strategy: VideoRedundancyStrategy | null, additionalParams: any = {}, withWebtorrent = true) {
async function createServers (strategy: VideoRedundancyStrategy | null, additionalParams: any = {}, withWebtorrent = true) {
const strategies: any[] = []
if (strategy !== null) {
@ -309,7 +309,7 @@ describe('Test videos redundancy', function () {
before(function () {
this.timeout(120000)
return createSingleServers(strategy)
return createServers(strategy)
})
it('Should have 1 webseed on the first video', async function () {
@ -359,7 +359,7 @@ describe('Test videos redundancy', function () {
before(function () {
this.timeout(120000)
return createSingleServers(strategy)
return createServers(strategy)
})
it('Should have 1 webseed on the first video', async function () {
@ -384,7 +384,20 @@ describe('Test videos redundancy', function () {
await checkStatsWith1Redundancy(strategy)
})
it('Should unfollow on server 1 and remove duplicated videos', async function () {
it('Should unfollow server 3 and keep duplicated videos', async function () {
this.timeout(80000)
await servers[0].follows.unfollow({ target: servers[2] })
await waitJobs(servers)
await wait(5000)
await check2Webseeds()
await check1PlaylistRedundancies()
await checkStatsWith1Redundancy(strategy)
})
it('Should unfollow server 2 and remove duplicated videos', async function () {
this.timeout(80000)
await servers[0].follows.unfollow({ target: servers[1] })
@ -409,7 +422,7 @@ describe('Test videos redundancy', function () {
before(function () {
this.timeout(120000)
return createSingleServers(strategy, { min_views: 3 })
return createServers(strategy, { min_views: 3 })
})
it('Should have 1 webseed on the first video', async function () {
@ -480,7 +493,7 @@ describe('Test videos redundancy', function () {
before(async function () {
this.timeout(120000)
await createSingleServers(strategy, { min_views: 3 }, false)
await createServers(strategy, { min_views: 3 }, false)
})
it('Should have 0 playlist redundancy on the first video', async function () {
@ -542,7 +555,7 @@ describe('Test videos redundancy', function () {
before(function () {
this.timeout(120000)
return createSingleServers(null)
return createServers(null)
})
it('Should have 1 webseed on the first video', async function () {
@ -621,7 +634,7 @@ describe('Test videos redundancy', function () {
before(async function () {
this.timeout(120000)
await createSingleServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await createServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await enableRedundancyOnServer1()
})
@ -663,7 +676,7 @@ describe('Test videos redundancy', function () {
before(async function () {
this.timeout(120000)
await createSingleServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await createServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await enableRedundancyOnServer1()