]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/request-scheduler.js
3 const constants
= require('../initializers/constants')
4 const BaseRequestScheduler
= require('./base-request-scheduler')
5 const db
= require('../initializers/database')
6 const logger
= require('../helpers/logger')
8 module
.exports
= class RequestScheduler
extends BaseRequestScheduler
{
12 // We limit the size of the requests
13 this.limitPods
= constants
.REQUESTS_LIMIT_PODS
14 this.limitPerPod
= constants
.REQUESTS_LIMIT_PER_POD
16 this.description
= 'requests'
23 getRequestToPodModel () {
24 return db
.RequestToPod
27 buildRequestObjects (requests
) {
28 const requestsToMakeGrouped
= {}
30 Object
.keys(requests
).forEach(toPodId
=> {
31 requests
[toPodId
].forEach(data
=> {
32 const request
= data
.request
34 const hashKey
= toPodId
+ request
.endpoint
36 if (!requestsToMakeGrouped
[hashKey
]) {
37 requestsToMakeGrouped
[hashKey
] = {
39 endpoint: request
.endpoint
,
40 ids: [], // request ids, to delete them from the DB in the future
41 datas: [] // requests data,
45 requestsToMakeGrouped
[hashKey
].ids
.push(request
.id
)
46 requestsToMakeGrouped
[hashKey
].datas
.push(request
.request
)
50 return requestsToMakeGrouped
53 // { type, endpoint, data, toIds, transaction }
54 createRequest (options
, callback
) {
55 const type
= options
.type
56 const endpoint
= options
.endpoint
57 const data
= options
.data
58 const toIds
= options
.toIds
59 const transaction
= options
.transaction
63 // If there are no destination pods abort
64 if (toIds
.length
=== 0) return callback(null)
66 toIds
.forEach(toPod
=> {
67 pods
.push(db
.Pod
.build({ id: toPod
}))
78 const dbRequestOptions
= {
82 return db
.Request
.create(createQuery
, dbRequestOptions
).asCallback((err
, request
) => {
83 if (err
) return callback(err
)
85 return request
.setPods(pods
, dbRequestOptions
).asCallback(callback
)
89 // ---------------------------------------------------------------------------
91 afterRequestsHook () {
92 // Flush requests with no pod
93 this.getRequestModel().removeWithEmptyTo(err
=> {
94 if (err
) logger
.error('Error when removing requests with no pods.', { error: err
})