Parcourir la source

Don't stuck on active jobs

tags/v0.0.24-alpha
Chocobozzz il y a 5 ans
Parent
révision
3df456380a
Aucune clé connue n'a été trouvée dans la base pour cette signature ID de la clé GPG: 583A612D890159BE
2 fichiers modifiés avec 29 ajouts et 2 suppressions
  1. +28
    -1
      server/lib/job-queue/job-queue.ts
  2. +1
    -1
      server/tests/real-world/real-world.ts

+ 28
- 1
server/lib/job-queue/job-queue.ts Voir le fichier

@@ -32,7 +32,7 @@ class JobQueue {

private constructor () {}

init () {
async init () {
// Already initialized
if (this.initialized === true) return
this.initialized = true
@@ -54,6 +54,8 @@ class JobQueue {
})
this.jobQueue.watchStuckJobs(5000)

await this.reactiveStuckJobs()

for (const handlerName of Object.keys(handlers)) {
this.jobQueue.process(handlerName, JOB_CONCURRENCY[handlerName], async (job, done) => {
try {
@@ -117,6 +119,31 @@ class JobQueue {
})
}

private reactiveStuckJobs () {
const promises: Promise<any>[] = []

this.jobQueue.active((err, ids) => {
if (err) throw err

for (const id of ids) {
kue.Job.get(id, (err, job) => {
if (err) throw err

const p = new Promise((res, rej) => {
job.inactive(err => {
if (err) return rej(err)
return res()
})
})

promises.push(p)
})
}
})

return Promise.all(promises)
}

static get Instance () {
return this.instance || (this.instance = new this())
}


+ 1
- 1
server/tests/real-world/real-world.ts Voir le fichier

@@ -347,7 +347,7 @@ function goodbye () {
}

async function isTherePendingRequests (servers: ServerInfo[]) {
const states: JobState[] = [ 'inactive', 'active' ]
const states: JobState[] = [ 'inactive', 'active', 'delayed' ]
const tasks: Promise<any>[] = []
let pendingRequests = false



Chargement…
Annuler
Enregistrer