Move {,fast,down}inter elements from struct server to struct check. This allows those elements of a check to be independent of the check's server.
This is in preparation for associating a agent check with a server which runs as well as the server's existing check. Signed-off-by: Simon Horman <ho...@verge.net.au> --- include/types/server.h | 2 +- src/cfgparse.c | 18 +++++++++--------- src/checks.c | 10 +++++----- src/server.c | 6 +++--- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/include/types/server.h b/include/types/server.h index c8b2766..1ed7e90 100644 --- a/include/types/server.h +++ b/include/types/server.h @@ -115,6 +115,7 @@ struct check { char desc[HCHK_DESC_LEN]; /* health check descritpion */ int use_ssl; /* use SSL for health checks */ int send_proxy; /* send a PROXY protocol header with checks */ + int inter, fastinter, downinter; /* checks: time in milliseconds */ struct server *server; /* back-pointer to server */ }; @@ -152,7 +153,6 @@ struct server { short observe, onerror; /* observing mode: one of HANA_OBS_*; what to do on error: on of ANA_ONERR_* */ short onmarkeddown; /* what to do when marked down: one of HANA_ONMARKEDDOWN_* */ short onmarkedup; /* what to do when marked up: one of HANA_ONMARKEDUP_* */ - int inter, fastinter, downinter; /* checks: time in milliseconds */ int slowstart; /* slowstart time in seconds (ms in the conf) */ int result; /* health-check result : SRV_CHK_* */ diff --git a/src/cfgparse.c b/src/cfgparse.c index 5c7eca5..d36d096 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -1322,9 +1322,9 @@ void init_default_instance() defproxy.maxconn = cfg_maxpconn; defproxy.conn_retries = CONN_RETRIES; - defproxy.defsrv.inter = DEF_CHKINTR; - defproxy.defsrv.fastinter = 0; - defproxy.defsrv.downinter = 0; + defproxy.defsrv.check.inter = DEF_CHKINTR; + defproxy.defsrv.check.fastinter = 0; + defproxy.defsrv.check.downinter = 0; defproxy.defsrv.rise = DEF_RISETIME; defproxy.defsrv.fall = DEF_FALLTIME; defproxy.defsrv.check.port = 0; @@ -4211,9 +4211,9 @@ stats_error_parsing: newsrv->check.use_ssl = curproxy->defsrv.check.use_ssl; newsrv->check.port = curproxy->defsrv.check.port; - newsrv->inter = curproxy->defsrv.inter; - newsrv->fastinter = curproxy->defsrv.fastinter; - newsrv->downinter = curproxy->defsrv.downinter; + newsrv->check.inter = curproxy->defsrv.check.inter; + newsrv->check.fastinter = curproxy->defsrv.check.fastinter; + newsrv->check.downinter = curproxy->defsrv.check.downinter; newsrv->rise = curproxy->defsrv.rise; newsrv->fall = curproxy->defsrv.fall; newsrv->maxqueue = curproxy->defsrv.maxqueue; @@ -4301,7 +4301,7 @@ stats_error_parsing: err_code |= ERR_ALERT | ERR_FATAL; goto out; } - newsrv->inter = val; + newsrv->check.inter = val; cur_arg += 2; } else if (!strcmp(args[cur_arg], "fastinter")) { @@ -4318,7 +4318,7 @@ stats_error_parsing: err_code |= ERR_ALERT | ERR_FATAL; goto out; } - newsrv->fastinter = val; + newsrv->check.fastinter = val; cur_arg += 2; } else if (!strcmp(args[cur_arg], "downinter")) { @@ -4335,7 +4335,7 @@ stats_error_parsing: err_code |= ERR_ALERT | ERR_FATAL; goto out; } - newsrv->downinter = val; + newsrv->check.downinter = val; cur_arg += 2; } else if (!defsrv && !strcmp(args[cur_arg], "addr")) { diff --git a/src/checks.c b/src/checks.c index ca0d404..84de6ad 100644 --- a/src/checks.c +++ b/src/checks.c @@ -691,8 +691,8 @@ void health_adjust(struct server *s, short status) s->consecutive_errors = 0; s->counters.failed_hana++; - if (s->fastinter) { - expire = tick_add(now_ms, MS_TO_TICKS(s->fastinter)); + if (s->check.fastinter) { + expire = tick_add(now_ms, MS_TO_TICKS(s->check.fastinter)); if (s->check.task->expire > expire) s->check.task->expire = expire; } @@ -1390,7 +1390,7 @@ static struct task *process_chk(struct task *t) * to establish but only when timeout.check is set * as it may be to short for a full check otherwise */ - t->expire = tick_add(now_ms, MS_TO_TICKS(s->inter)); + t->expire = tick_add(now_ms, MS_TO_TICKS(s->check.inter)); if (s->proxy->timeout.check && s->proxy->timeout.connect) { int t_con = tick_add(now_ms, s->proxy->timeout.connect); @@ -1428,7 +1428,7 @@ static struct task *process_chk(struct task *t) int t_con; t_con = tick_add(t->expire, s->proxy->timeout.connect); - t->expire = tick_add(t->expire, MS_TO_TICKS(s->inter)); + t->expire = tick_add(t->expire, MS_TO_TICKS(s->check.inter)); if (s->proxy->timeout.check) t->expire = tick_first(t->expire, t_con); @@ -1521,7 +1521,7 @@ static struct task *process_chk(struct task *t) reschedule: while (tick_is_expired(t->expire, now_ms)) - t->expire = tick_add(t->expire, MS_TO_TICKS(s->inter)); + t->expire = tick_add(t->expire, MS_TO_TICKS(s->check.inter)); out_wait: return t; } diff --git a/src/server.c b/src/server.c index e542bb7..e0ce6d9 100644 --- a/src/server.c +++ b/src/server.c @@ -33,12 +33,12 @@ int srv_downtime(const struct server *s) int srv_getinter(const struct server *s) { if ((s->state & SRV_CHECKED) && (s->health == s->rise + s->fall - 1)) - return s->inter; + return s->check.inter; if (!(s->state & SRV_RUNNING) && s->health==0) - return (s->downinter)?(s->downinter):(s->inter); + return (s->check.downinter)?(s->check.downinter):(s->check.inter); - return (s->fastinter)?(s->fastinter):(s->inter); + return (s->check.fastinter)?(s->check.fastinter):(s->check.inter); } /* -- 1.7.10.4