]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: stats: show servers state may show an servers from another backend
authorCyril Bonté <cyril.bonte@free.fr>
Thu, 26 May 2016 22:06:45 +0000 (00:06 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 26 May 2016 22:47:10 +0000 (00:47 +0200)
commitd55bd7a6a934387cdc5df7ad3fbc2718dc3a724e
tree8d3eb5db42f30ef9572da0969edacf65ed9844ca
parent659fbf02300b721adef3de74a3c1a8e4d0851080
BUG/MEDIUM: stats: show servers state may show an servers from another backend

Olivier Doucet reported that "show servers state" was producing an invalid
output with some configurations where nbproc > 1.

Indeed, commit 76a99784f4 fixed some issues but unfortunately introduced a
regression when a backend bound to the same process as the stats socket and a
previous backend is bound to another one.

For example :
  global
    daemon
    nbproc 2
    stats socket /var/run/haproxy-1.sock process 1
    stats socket /var/run/haproxy-2.sock process 2

  listen proc1
    bind 127.0.0.1:9001
    bind-process 1
    server WRONG 127.0.0.1:80

  listen proc2
    bind 127.0.0.1:9002
    bind-process 2
    server RIGHT 127.0.0.1:80

Requesting "show servers state" on /var/run/haproxy-2.sock was producing a line
like :
3 proc2 1 WRONG 127.0.0.1 2 0 1 1 4 1 0 2 0 0 0 0

whereas the line below was awaited :
3 proc2 1 RIGHT 127.0.0.1 2 0 1 1 5 1 0 2 0 0 0 0

This was caused by the initialization of the server loop too early, before the
bind_proc filtering whereas it should be done after.

This fix should be backported to 1.6, where the regression has unfortunately
been backported.
src/dumpstats.c