mirror of https://github.com/Chocobozzz/PeerTube
Fix redundancy exceeding the limit
parent
e2600d8b26
commit
0b353d1d8a
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue