Commit 4d568263 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Add functions to manipulate VCL_BACKEND state

parent c9d3b3ff
......@@ -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);
......
......@@ -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) {
......
......@@ -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 */
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment