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
>

Reply via email to