Skip to content

Commit

Permalink
BUG/MINOR: srv-state: fix incorrect output of state file
Browse files Browse the repository at this point in the history
Eric Webster reported that the state file wouldn't reload in 1.6.5
while it used to work in 1.6.4. The issue is that headers are now
missing from the output when a specific backend is dumped since
commit 4c1544d ("BUG/MEDIUM: stats: show servers state may show an
empty or incomplete result"). This patch fixes this by introducing
a dump state.

It must be backported to 1.6.
  • Loading branch information
wtarreau committed Jun 22, 2016
1 parent 1eea6d7 commit a58c435
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/dumpstats.c
Original file line number Diff line number Diff line change
Expand Up @@ -3200,15 +3200,22 @@ static int stats_dump_servers_state_to_buffer(struct stream_interface *si)

chunk_reset(&trash);

if (!appctx->ctx.server_state.px) {
if (appctx->st2 == STAT_ST_INIT) {
if (!appctx->ctx.server_state.px)
appctx->ctx.server_state.px = proxy;
appctx->st2 = STAT_ST_HEAD;
}

if (appctx->st2 == STAT_ST_HEAD) {
chunk_printf(&trash, "%d\n# %s\n", SRV_STATE_FILE_VERSION, SRV_STATE_FILE_FIELD_NAMES);
if (bi_putchk(si_ic(si), &trash) == -1) {
si_applet_cant_put(si);
return 0;
}
appctx->ctx.server_state.px = proxy;
appctx->st2 = STAT_ST_INFO;
}

/* STAT_ST_INFO */
for (; appctx->ctx.server_state.px != NULL; appctx->ctx.server_state.px = curproxy->next) {
curproxy = appctx->ctx.server_state.px;
/* servers are only in backends */
Expand Down

0 comments on commit a58c435

Please sign in to comment.