[master] d2ddc9a Minor polish

Poul-Henning Kamp phk at FreeBSD.org
Tue Mar 17 21:21:12 CET 2015


commit d2ddc9a47e6a8ef56f37b818feee0ccf96e23f08
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Mar 17 20:13:58 2015 +0000

    Minor polish

diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index d382157..2da2b10 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -298,7 +298,6 @@ vca_make_session(struct worker *wrk, void *arg)
 	char laddr[VTCP_ADDRBUFSIZE];
 	char lport[VTCP_PORTBUFSIZE];
 
-
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CAST_OBJ_NOTNULL(wa, arg, WRK_ACCEPT_MAGIC);
 	pp = wa->sesspool;
@@ -387,8 +386,6 @@ vca_accept_task(struct worker *wrk, void *arg)
 	ls = ps->lsock;
 	CHECK_OBJ_NOTNULL(ls, LISTEN_SOCK_MAGIC);
 
-	/* Delay until we are ready (flag is set when all
-	 * initialization has finished) */
 	while (!pool_accepting)
 		VTIM_sleep(.1);
 
@@ -427,6 +424,12 @@ vca_accept_task(struct worker *wrk, void *arg)
 		wa.acceptsock = i;
 
 		if (!Pool_Task_Arg(wrk, vca_make_session, &wa, sizeof wa)) {
+			/*
+			 * We couldn't get another thread, so we will handle
+			 * the request in this worker thread, but first we
+			 * must reschedule the listening task so it will be
+			 * taken up by another thread again.
+			 */
 			AZ(Pool_Task(wrk->pool, &ps->task, POOL_QUEUE_BACK));
 			return;
 		}
@@ -440,6 +443,11 @@ vca_accept_task(struct worker *wrk, void *arg)
 	}
 }
 
+/*--------------------------------------------------------------------
+ * Called when a worker and attached session pool is created, to
+ * allocate the tasks which will listen to sockets for that pool.
+ */
+
 void
 VCA_New_SessPool(struct pool *pp, struct sesspool *sp)
 {
@@ -532,7 +540,7 @@ ccf_listen_address(struct cli *cli, const char * const *av, void *priv)
 	 * before listen(2) has been called.
 	 */
 	while(!pool_accepting)
-		(void)usleep(100*1000);
+		VTIM_sleep(.1);
 
 	VTAILQ_FOREACH(ls, &heritage.socks, list) {
 		VTCP_myname(ls->sock, h, sizeof h, p, sizeof p);
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 724c9e1..0d34de7 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -443,5 +443,7 @@ SES_DeletePool(struct sesspool *pp)
 	CHECK_OBJ_NOTNULL(pp, SESSPOOL_MAGIC);
 	MPL_Destroy(&pp->mpl_sess);
 	MPL_Destroy(&pp->mpl_req);
+	/* Delete session pool must stop acceptor threads */
+	INCOMPL();
 	FREE_OBJ(pp);
 }



More information about the varnish-commit mailing list