Hello, On Mon, Sep 14, 2020 at 12:09:21PM -0300, Joao Morais wrote: > Hello list, I'm working on an automation around haproxy process > lifecycle in master-worker mode. It's working nice but I'm not > confident that all premisses I used are correct. Please provide some > guidance if I did any wrong assumption, RTFM link is welcome as usual. >
The documentation about the master CLI is probably light about how it's implemented so I'll try to be as clear as possible. > First of all I figured out that master cli will "connection refused" > after a reload cmd during the start of the new worker. I'm using a > unix socket but I assume the behaviour would be the same using > ip+port. Indeed, during a reload all connections to the master CLI are closed because the master process is executed again. There is currently no mecanism to recover a previous connection from the previous process. That's the same with the unix socket or an IP socket. > I'm also using a successful connection as the meaning of a > finished reload process, failed or not. Please let me know if there is > a way to be notified, I'm retrying to connect within a for-loop and a > growing sleep between attempts. Unfortunately there is no way to be notified, that was part of the next things I wanted to implement in the master process. But you are right, once you can connect, the reload is finished. > Another assumption I made is that if I don't have any worker in the `# > workers` list, it means that the last reload failed. I've observed > that as soon as the master cli accepts connections again, the new > worker is already there provided that the reload didn't fail. That's correct. You can also check the number of reloads the worker had. If it reloaded correctly this number is 0 for the new workers. > I also observed that the `show proc` output isn't that > machine-friendly, anyway it's not a big deal, some regex does the job > and I'm assuming the lay out is immutable. Maybe I missed some > optional json output in the doc? > It is supposed to be splitable easily with cut, but if that does not work this is a clearly a bug. -- William Lallemand