Commit 693618f1 authored by antirez's avatar antirez
Browse files

Remove backgroud jobs from the queue only when the processing was completed, and not just started.

parent c67e8d3b
...@@ -118,7 +118,6 @@ void *bioProcessBackgroundJobs(void *arg) { ...@@ -118,7 +118,6 @@ void *bioProcessBackgroundJobs(void *arg) {
/* Pop the job from the queue. */ /* Pop the job from the queue. */
ln = listFirst(bio_jobs[type]); ln = listFirst(bio_jobs[type]);
job = ln->value; job = ln->value;
listDelNode(bio_jobs[type],ln);
/* It is now possible to unlock the background system as we know have /* It is now possible to unlock the background system as we know have
* a stand alone job structure to process.*/ * a stand alone job structure to process.*/
pthread_mutex_unlock(&bio_mutex[type]); pthread_mutex_unlock(&bio_mutex[type]);
...@@ -134,6 +133,7 @@ void *bioProcessBackgroundJobs(void *arg) { ...@@ -134,6 +133,7 @@ void *bioProcessBackgroundJobs(void *arg) {
/* Lock again before reiterating the loop, if there are no longer /* Lock again before reiterating the loop, if there are no longer
* jobs to process we'll block again in pthread_cond_wait(). */ * jobs to process we'll block again in pthread_cond_wait(). */
pthread_mutex_lock(&bio_mutex[type]); pthread_mutex_lock(&bio_mutex[type]);
listDelNode(bio_jobs[type],ln);
bio_pending[type]--; bio_pending[type]--;
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment