[master] 4d56826 Add functions to manipulate VCL_BACKEND state

Poul-Henning Kamp phk at FreeBSD.org
Fri Apr 27 14:04:25 UTC 2018


commit 4d568263bf3f25d2b591befaca8df2249cf39f8a
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Fri Apr 27 07:47:42 2018 +0000

    Add functions to manipulate VCL_BACKEND state

diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index 1fc37aa..18cd2ff 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -539,8 +539,7 @@ VRT_delete_backend(VRT_CTX, VCL_BACKEND *dp)
 	TAKE_OBJ_NOTNULL(d, dp, DIRECTOR_MAGIC);
 	CAST_OBJ_NOTNULL(be, d->priv, BACKEND_MAGIC);
 	Lck_Lock(&be->mtx);
-	be->director->admin_health = VDI_AH_DELETED;
-	be->director->health_changed = VTIM_real();
+	VRT_DisableDirector(be->director);
 	be->cooled = VTIM_real() + 60.;
 	Lck_Unlock(&be->mtx);
 	Lck_Lock(&backends_mtx);
diff --git a/bin/varnishd/cache/cache_backend_probe.c b/bin/varnishd/cache/cache_backend_probe.c
index caf3673..7e17793 100644
--- a/bin/varnishd/cache/cache_backend_probe.c
+++ b/bin/varnishd/cache/cache_backend_probe.c
@@ -175,7 +175,7 @@ vbp_update_backend(struct vbp_target *vt)
 				vt->backend->director->health_changed =
 				     VTIM_real();
 			}
-			vt->backend->director->health = 1;
+			VRT_SetHealth(vt->backend->director, 1);
 		} else {
 			if (vt->backend->director->health) {
 				logmsg = "Went sick";
@@ -184,7 +184,7 @@ vbp_update_backend(struct vbp_target *vt)
 			} else {
 				logmsg = "Still sick";
 			}
-			vt->backend->director->health = 0;
+			VRT_SetHealth(vt->backend->director, 0);
 		}
 		VSL(SLT_Backend_health, 0, "%s %s %s %u %u %u %.6f %.6f %s",
 		    vt->backend->director->cli_name, logmsg, bits,
@@ -637,7 +637,7 @@ VBP_Remove(struct backend *be)
 	CHECK_OBJ_NOTNULL(vt, VBP_TARGET_MAGIC);
 
 	Lck_Lock(&vbp_mtx);
-	be->director->health = 1;
+	VRT_SetHealth(be->director, 1);
 	be->probe = NULL;
 	vt->backend = NULL;
 	if (vt->running) {
diff --git a/bin/varnishd/cache/cache_director.h b/bin/varnishd/cache/cache_director.h
index 668a3a7..6a84263 100644
--- a/bin/varnishd/cache/cache_director.h
+++ b/bin/varnishd/cache/cache_director.h
@@ -101,6 +101,8 @@ struct director {
 int VRT_AddDirector(VRT_CTX, struct director *, const char *, ...)
     v_printflike_(3, 4);
 
+void VRT_SetHealth(VCL_BACKEND d, int health);
+void VRT_DisableDirector(VCL_BACKEND);
 void VRT_DelDirector(struct director *);
 
 /* cache_director.c */
diff --git a/bin/varnishd/cache/cache_vcl_vrt.c b/bin/varnishd/cache/cache_vcl_vrt.c
index d276aa7..815f048 100644
--- a/bin/varnishd/cache/cache_vcl_vrt.c
+++ b/bin/varnishd/cache/cache_vcl_vrt.c
@@ -208,6 +208,32 @@ VRT_DelDirector(struct director *d)
 	FREE_OBJ(vdir);
 }
 
+void
+VRT_SetHealth(VCL_BACKEND d, int health)
+{
+	struct vcldir *vdir;
+
+	CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
+	vdir = d->vdir;
+	CHECK_OBJ_NOTNULL(vdir, VCLDIR_MAGIC);
+
+	vdir->dir->health = health;
+}
+
+void
+VRT_DisableDirector(VCL_BACKEND d)
+{
+	struct vcldir *vdir;
+
+	CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
+	vdir = d->vdir;
+	CHECK_OBJ_NOTNULL(vdir, VCLDIR_MAGIC);
+
+	vdir->dir->admin_health = VDI_AH_DELETED;
+	vdir->dir->health = 0;
+	vdir->dir->health_changed = VTIM_real();
+}
+
 /*--------------------------------------------------------------------*/
 
 VCL_BACKEND


More information about the varnish-commit mailing list