1
0
Fork 0

Fix redundancy remove on host redundancy update

This commit is contained in:
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() await server.save()
// Async, could be long if (server.redundancyAllowed !== true) {
removeRedundanciesOfServer(server.id) // Async, could be long
.catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err })) removeRedundanciesOfServer(server.id)
.catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err }))
}
return res.status(HttpStatusCode.NO_CONTENT_204).end() return res.status(HttpStatusCode.NO_CONTENT_204).end()
} }

View File

@ -470,16 +470,34 @@ export class VideoRedundancyModel extends Model<Partial<AttributesOnly<VideoRedu
const query = { const query = {
where: { where: {
actorId: actor.id [Op.and]: [
{
actorId: actor.id
},
{
[Op.or]: [
{
'$VideoStreamingPlaylist.id$': {
[Op.ne]: null
}
},
{
'$VideoFile.id$': {
[Op.ne]: null
}
}
]
}
]
}, },
include: [ include: [
{ {
model: VideoFileModel, model: VideoFileModel.unscoped(),
required: false, required: false,
include: [ buildVideoInclude() ] include: [ buildVideoInclude() ]
}, },
{ {
model: VideoStreamingPlaylistModel, model: VideoStreamingPlaylistModel.unscoped(),
required: false, required: false,
include: [ buildVideoInclude() ] 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[] = [] const strategies: any[] = []
if (strategy !== null) { if (strategy !== null) {
@ -309,7 +309,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) this.timeout(120000)
return createSingleServers(strategy) return createServers(strategy)
}) })
it('Should have 1 webseed on the first video', async function () { it('Should have 1 webseed on the first video', async function () {
@ -359,7 +359,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) this.timeout(120000)
return createSingleServers(strategy) return createServers(strategy)
}) })
it('Should have 1 webseed on the first video', async function () { it('Should have 1 webseed on the first video', async function () {
@ -384,7 +384,20 @@ describe('Test videos redundancy', function () {
await checkStatsWith1Redundancy(strategy) 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) this.timeout(80000)
await servers[0].follows.unfollow({ target: servers[1] }) await servers[0].follows.unfollow({ target: servers[1] })
@ -409,7 +422,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) 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 () { it('Should have 1 webseed on the first video', async function () {
@ -480,7 +493,7 @@ describe('Test videos redundancy', function () {
before(async function () { before(async function () {
this.timeout(120000) 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 () { it('Should have 0 playlist redundancy on the first video', async function () {
@ -542,7 +555,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) this.timeout(120000)
return createSingleServers(null) return createServers(null)
}) })
it('Should have 1 webseed on the first video', async function () { it('Should have 1 webseed on the first video', async function () {
@ -621,7 +634,7 @@ describe('Test videos redundancy', function () {
before(async function () { before(async function () {
this.timeout(120000) 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() await enableRedundancyOnServer1()
}) })
@ -663,7 +676,7 @@ describe('Test videos redundancy', function () {
before(async function () { before(async function () {
this.timeout(120000) 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() await enableRedundancyOnServer1()