So just to be clear, there is only 1 service, using a Master -> Worker config.
The service is working since many hours (no doing any restart, simply modification of the config and executing the hot-reload command)... I'll try to dig deeper on myside also when I got a chance, I was mostly wondering if anyone had that kind of issue (i know using sockets file isnt much people are using). - Francis L. On Thu, Apr 11, 2019 at 12:19 PM Willy Tarreau <[email protected]> wrote: > 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 >

