]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/utils/server/jobs.ts
Merge branch 'release/v1.2.0'
[github/Chocobozzz/PeerTube.git] / shared / utils / server / jobs.ts
index 3eec1d7d784fb407e732bfbf3a44b37d12a10850..692b5e24d4b6f8eb01c3a7627cb1970321b58bb6 100644 (file)
@@ -1,6 +1,7 @@
 import * as request from 'supertest'
 import { Job, JobState } from '../../models'
-import { ServerInfo, wait } from '../index'
+import { wait } from '../miscs/miscs'
+import { ServerInfo } from './servers'
 
 function getJobsList (url: string, accessToken: string, state: JobState) {
   const path = '/api/v1/jobs/' + state
@@ -28,16 +29,17 @@ function getJobsListPaginationAndSort (url: string, accessToken: string, state:
 }
 
 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[]
 
   if (Array.isArray(serversArg) === false) servers = [ serversArg as ServerInfo ]
   else servers = serversArg as ServerInfo[]
 
   const states: JobState[] = [ 'waiting', 'active', 'delayed' ]
-  const tasks: Promise<any>[] = []
-  let pendingRequests: boolean
+  let pendingRequests = false
 
-  do {
+  function tasksBuilder () {
+    const tasks: Promise<any>[] = []
     pendingRequests = false
 
     // Check if each server has pending request
@@ -53,13 +55,16 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) {
       }
     }
 
-    await Promise.all(tasks)
+    return tasks
+  }
+
+  do {
+    await Promise.all(tasksBuilder())
 
     // Retry, in case of new jobs were created
     if (pendingRequests === false) {
-      await wait(1000)
-
-      await Promise.all(tasks)
+      await wait(pendingJobWait)
+      await Promise.all(tasksBuilder())
     }
 
     if (pendingRequests) {