X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fextra-utils%2Fserver%2Fjobs.ts;h=79b8c318342f57c790d2abd3388f47eda79db0e9;hb=851675c5591dcab1070183f0ed1b1a788de07d2c;hp=d984b3d1efe62ffc5c310b3539ff758561a42acc;hpb=c2777c1dfe688c8fab1ef2fed50e360100fa9198;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/extra-utils/server/jobs.ts b/shared/extra-utils/server/jobs.ts index d984b3d1e..79b8c3183 100644 --- a/shared/extra-utils/server/jobs.ts +++ b/shared/extra-utils/server/jobs.ts @@ -1,56 +1,22 @@ -import * as request from 'supertest' -import { Job, JobState, JobType } from '../../models' -import { wait } from '../miscs/miscs' -import { ServerInfo } from './servers' -import { makeGetRequest } from '../../../shared/extra-utils' - -function getJobsList (url: string, accessToken: string, state: JobState) { - const path = '/api/v1/jobs/' + state - - return request(url) - .get(path) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + accessToken) - .expect(200) - .expect('Content-Type', /json/) -} -function getJobsListPaginationAndSort (options: { - url: string - accessToken: string - state: JobState - start: number - count: number - sort: string - jobType?: JobType -}) { - const { url, accessToken, state, start, count, sort, jobType } = options - const path = '/api/v1/jobs/' + state - - const query = { - start, - count, - sort, - jobType - } +import { JobState } from '../../models' +import { wait } from '../miscs' +import { PeerTubeServer } from './server' - return makeGetRequest({ - url, - path, - token: accessToken, - statusCodeExpected: 200, - query - }) -} +async function waitJobs (serversArg: PeerTubeServer[] | PeerTubeServer, skipDelayed = false) { + const pendingJobWait = process.env.NODE_PENDING_JOB_WAIT + ? parseInt(process.env.NODE_PENDING_JOB_WAIT, 10) + : 250 -async function waitJobs (serversArg: ServerInfo[] | ServerInfo) { - const pendingJobWait = process.env.NODE_PENDING_JOB_WAIT ? parseInt(process.env.NODE_PENDING_JOB_WAIT, 10) : 2000 - let servers: ServerInfo[] + let servers: PeerTubeServer[] - if (Array.isArray(serversArg) === false) servers = [ serversArg as ServerInfo ] - else servers = serversArg as ServerInfo[] + if (Array.isArray(serversArg) === false) servers = [ serversArg as PeerTubeServer ] + else servers = serversArg as PeerTubeServer[] - const states: JobState[] = [ 'waiting', 'active', 'delayed' ] + const states: JobState[] = [ 'waiting', 'active' ] + if (!skipDelayed) states.push('delayed') + + const repeatableJobs = [ 'videos-views', 'activitypub-cleaner' ] let pendingRequests: boolean function tasksBuilder () { @@ -59,23 +25,30 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) { // Check if each server has pending request for (const server of servers) { for (const state of states) { - const p = getJobsListPaginationAndSort({ - url: server.url, - accessToken: server.accessToken, - state: state, + const p = server.jobs.list({ + state, start: 0, count: 10, sort: '-createdAt' - }) - .then(res => res.body.data) - .then((jobs: Job[]) => jobs.filter(j => j.type !== 'videos-views')) + }).then(body => body.data) + .then(jobs => jobs.filter(j => !repeatableJobs.includes(j.type))) .then(jobs => { if (jobs.length !== 0) { pendingRequests = true } }) + tasks.push(p) } + + const p = server.debug.getDebug() + .then(obj => { + if (obj.activityPubMessagesWaiting !== 0) { + pendingRequests = true + } + }) + + tasks.push(p) } return tasks @@ -92,7 +65,7 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) { } if (pendingRequests) { - await wait(1000) + await wait(pendingJobWait) } } while (pendingRequests) } @@ -100,7 +73,5 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) { // --------------------------------------------------------------------------- export { - getJobsList, - waitJobs, - getJobsListPaginationAndSort + waitJobs }