[master] 4c7108b1b allow bgthreads to terminate only during shutdown
Nils Goroll
nils.goroll at uplex.de
Tue Jan 14 13:31:06 UTC 2020
commit 4c7108b1b3a588b29b7f8e189534e132f1eb8458
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Tue Jan 14 14:16:49 2020 +0100
allow bgthreads to terminate only during shutdown
diff --git a/bin/varnishd/cache/cache_main.c b/bin/varnishd/cache/cache_main.c
index 7ba3a0f52..d6618876d 100644
--- a/bin/varnishd/cache/cache_main.c
+++ b/bin/varnishd/cache/cache_main.c
@@ -50,6 +50,7 @@
#include "hash/hash_slinger.h"
+int cache_shutdown = 0;
volatile struct params *cache_param;
static pthread_mutex_t cache_vrnd_mtx;
@@ -409,8 +410,10 @@ child_main(int sigmagic, size_t altstksz)
CLI_Run();
+ cache_shutdown = 1;
VCA_Shutdown();
BAN_Shutdown();
+ EXP_Shutdown();
STV_close();
printf("Child dies\n");
diff --git a/bin/varnishd/cache/cache_varnishd.h b/bin/varnishd/cache/cache_varnishd.h
index 7fa11d949..e96794403 100644
--- a/bin/varnishd/cache/cache_varnishd.h
+++ b/bin/varnishd/cache/cache_varnishd.h
@@ -201,6 +201,7 @@ void EXP_Rearm(struct objcore *oc, vtim_real now,
vtim_dur ttl, vtim_dur grace, vtim_dur keep);
/* From cache_main.c */
+extern int cache_shutdown;
void BAN_Init(void);
void BAN_Compile(void);
void BAN_Shutdown(void);
diff --git a/bin/varnishd/cache/cache_wrk.c b/bin/varnishd/cache/cache_wrk.c
index 3fd20eee2..9b90dc10b 100644
--- a/bin/varnishd/cache/cache_wrk.c
+++ b/bin/varnishd/cache/cache_wrk.c
@@ -86,6 +86,7 @@ wrk_bgthread(void *arg)
struct bgthread *bt;
struct worker wrk;
struct VSC_main_wrk ds;
+ void *r;
CAST_OBJ_NOTNULL(bt, arg, BGTHREAD_MAGIC);
THR_SetName(bt->name);
@@ -94,11 +95,12 @@ wrk_bgthread(void *arg)
memset(&ds, 0, sizeof ds);
wrk.stats = &ds;
- (void)bt->func(&wrk, bt->priv);
+ r = bt->func(&wrk, bt->priv);
- WRONG("BgThread terminated");
+ if (! cache_shutdown)
+ WRONG("BgThread terminated");
- NEEDLESS(return (NULL));
+ return (r);
}
void
More information about the varnish-commit
mailing list