Skip to content

The job returned by Queue.add() is not updated by progress() #1900

@oxabz

Description

@oxabz

Summary

The progress value of the Job returned by Queue.add() isn't updated. It's a surprising behavior considering that the Job objects returned by the events are.
Is it an intended behavior? If it is it should probably be added in the reference documentation

Reproduce / Test

When executing this program :

const Queue = require('bull')

let returnedJob = null
let activeJob = null

let queue = new Queue('test');
queue.process(async (_job, done) => {
    await new Promise((resolve, reject) => {
        let progress = 0
        let i = setInterval(async () => {
            progress += 1;
            await _job.progress(progress)
            if(progress == 100){
                clearInterval(i)
                resolve()
            }
        }, 100)
    })
    done()
})
queue.on('active', (job)=>{
    activeJob = job
})
queue.on('progress', async (_job) => {
    console.log('event_job : ' + await _job.progress())
    console.log('active_job : ' + await activeJob.progress())
    console.log('returned_job : ' + await returnedJob.progress())
})
queue.add({}).then((_job) => { returnedJob = _job})

We obtain the following traces :

...
event_job : 97
active_job : 97
returned_job : 0
event_job : 98
active_job : 98
returned_job : 0
event_job : 99
active_job : 99
returned_job : 0
event_job : 100
active_job : 100
returned_job : 0

Version

  • node :
    • v12.19.0
    • v14.13.1
  • bull : 3.18.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions