[master] b2def9fa5 polish: move duplicated code into pool_getidleworker()

Nils Goroll nils.goroll at uplex.de
Tue Apr 23 14:54:08 UTC 2019


commit b2def9fa591ddcdeca6e79c29265a4f989eefb7b
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Tue Apr 23 16:50:18 2019 +0200

    polish: move duplicated code into pool_getidleworker()
    
    it should remove the worker it returns from the idle queue for clarity

diff --git a/bin/varnishd/cache/cache_wrk.c b/bin/varnishd/cache/cache_wrk.c
index c6a37b862..2481f9cdf 100644
--- a/bin/varnishd/cache/cache_wrk.c
+++ b/bin/varnishd/cache/cache_wrk.c
@@ -200,8 +200,14 @@ pool_getidleworker(struct pool *pp, enum task_prio prio)
 		}
 		return (NULL);
 	}
+
 	AZ(pt->func);
 	CAST_OBJ_NOTNULL(wrk, pt->priv, WORKER_MAGIC);
+
+	AN(pp->nidle);
+	VTAILQ_REMOVE(&pp->idle_queue, &wrk->task, list);
+	pp->nidle--;
+
 	return (wrk);
 }
 
@@ -228,12 +234,9 @@ Pool_Task_Arg(struct worker *wrk, enum task_prio prio, task_func_t *func,
 
 	Lck_Lock(&pp->mtx);
 	wrk2 = pool_getidleworker(pp, prio);
-	if (wrk2 != NULL) {
-		AN(pp->nidle);
-		VTAILQ_REMOVE(&pp->idle_queue, &wrk2->task, list);
-		pp->nidle--;
+	if (wrk2 != NULL)
 		retval = 1;
-	} else {
+	else {
 		wrk2 = wrk;
 		retval = 0;
 	}
@@ -280,9 +283,6 @@ Pool_Task(struct pool *pp, struct pool_task *task, enum task_prio prio)
 
 	wrk = pool_getidleworker(pp, prio);
 	if (wrk != NULL) {
-		AN(pp->nidle);
-		VTAILQ_REMOVE(&pp->idle_queue, &wrk->task, list);
-		pp->nidle--;
 		AZ(wrk->task.func);
 		wrk->task.func = task->func;
 		wrk->task.priv = task->priv;


More information about the varnish-commit mailing list