[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