Hello Francis,
On Thu, Apr 11, 2019 at 11:20:57AM -0400, francis Lavalliere wrote:
> Hello,
>
> Anyone else would have seen this behavior before?
> I am currently using HAProxy 1.9.3
>
> I have an "haproxy / consul template" that generate an haproxy-xxxxx.sock
> file, from time to time when my config reloads, I find out after a few
> minutes that the service doesn't work and actually the socket file doesnt
> exists on the disk...
>
> Going to the HA Proxy server i can see the haproxy has a valid
> configuration, I even reload the worker threads, and the socket file still
> does not exists on disk.
>
> ie:
>
> listen xxxxx
>
> bind /var/run/haproxy-xxxxx.sock accept-proxy
>
> bind-process 2
>
> I am wondering what could be the cause of this. I am assuming that the
> haproxy template that I generate at some point create that listen, reload
> the worker threads) then regenerate another configuration without that
> socket, it then get removed... and then re-regenerate the config with the
> listen and socket directive... but somehow the socket file doesnt get
> reecreated.....
>
> I might be wrong, as for now I have not much other possible ways to
> reproduce easily as its happening randomly.....
I've not seen this but I can more or less imagine something that could
cause this. Let's imagine that for whatever reason your service scripts
start two haproxy processes in parallel, which end up like this :
process1 process2
parse conf parse conf
unlink("/var/run/..")
bind("/var/run/..")
unlink("/var/run/..")
bind("/var/run/..")
start other stuff start other stuff
fail on something
unlink("/var/run/...")
exit continue to run
In this case you can end up with process 2 running with process 1 having
removed its socket while cleaning up on exit. It would randomly happen
depending on the start order but that might be a possible explanation.
Now maybe it's totally unrelated but I don't have any other idea for
now.
Regards,
Willy