Verified Commit 0b353d1d authored by Chocobozzz's avatar Chocobozzz
Browse files

Fix redundancy exceeding the limit

parent e2600d8b
......@@ -15,6 +15,10 @@
"target": "http://localhost:9000",
"secure": false
},
"/lazy-static": {
"target": "http://localhost:9000",
"secure": false
},
"/socket.io": {
"target": "ws://localhost:9000",
"secure": false,
......
......@@ -105,7 +105,10 @@ export class VideosRedundancyScheduler extends AbstractScheduler {
private async extendsRedundancy (redundancyModel: VideoRedundancyModel) {
const redundancy = CONFIG.REDUNDANCY.VIDEOS.STRATEGIES.find(s => s.strategy === redundancyModel.strategy)
// Redundancy strategy disabled, remove our redundancy instead of extending expiration
if (!redundancy) await removeVideoRedundancy(redundancyModel)
if (!redundancy) {
await removeVideoRedundancy(redundancyModel)
return
}
await this.extendsExpirationOf(redundancyModel, redundancy.minLifetime)
}
......
......@@ -325,23 +325,45 @@ export class VideoRedundancyModel extends Model<VideoRedundancyModel> {
static async getTotalDuplicated (strategy: VideoRedundancyStrategy) {
const actor = await getServerActor()
const redundancyInclude = {
attributes: [],
model: VideoRedundancyModel,
required: true,
where: {
actorId: actor.id,
strategy
}
}
const query: FindOptions = {
const queryFiles: FindOptions = {
include: [ redundancyInclude ]
}
const queryStreamingPlaylists: FindOptions = {
include: [
{
attributes: [],
model: VideoRedundancyModel,
model: VideoModel.unscoped(),
required: true,
where: {
actorId: actor.id,
strategy
}
include: [
{
attributes: [],
model: VideoStreamingPlaylistModel.unscoped(),
include: [
redundancyInclude
]
}
]
}
]
}
return VideoFileModel.aggregate('size', 'SUM', query)
.then(result => parseAggregateResult(result))
return Promise.all([
VideoFileModel.aggregate('size', 'SUM', queryFiles),
VideoFileModel.aggregate('size', 'SUM', queryStreamingPlaylists)
]).then(([ r1, r2 ]) => {
return parseAggregateResult(r1) + parseAggregateResult(r2)
})
}
static async listLocalExpired () {
......
......@@ -508,10 +508,8 @@ describe('Test multiple servers', function () {
await wait(1000)
await Promise.all([
viewVideo(servers[2].url, localVideosServer3[0]),
viewVideo(servers[2].url, localVideosServer3[0])
])
await viewVideo(servers[2].url, localVideosServer3[0])
await viewVideo(servers[2].url, localVideosServer3[0])
await waitJobs(servers)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment