rcrowley / goagain

Zero-downtime restarts in Go
Other
2.1k stars 144 forks source link

Add support for seamless re-execs without lost requests or requests sent to old processes #7

Closed Rudd-O closed 11 years ago

Rudd-O commented 11 years ago

... parent stops listening and lingers for ten seconds handling slow requests before giving up, while the child picks up the listening socket immediately and continues serving requests.

ManuelAmadorAditazz commented 11 years ago

I would refine the code as per " you should probably not use "noCloseOnExec" and instead use cmd.ExtraFiles it is what it was made for

oh! wat, there is a thing for this?" but I have no idea atm how to do this. I'd welcome pointers.
rcrowley commented 11 years ago

@Rudd-O I unfortunately can't merge this. I would like to support UNIX domain sockets but can't do so exclusively. And as stated in #6, I'm also not interested in hard-coding the exit strategy to "just give it time."

ManuelAmadorAditazz commented 11 years ago

I will check in your patch to make the system work with all types of sockets.

Give me options for the exit strategy, cos I did not understand that part very well. On Mar 25, 2013 11:11 PM, "Richard Crowley" notifications@github.com wrote:

@Rudd-O https://github.com/Rudd-O I unfortunately can't merge this. I would like to support UNIX domain sockets but can't do so exclusively. And as stated in #6 https://github.com/rcrowley/goagain/issues/6, I'm also not interested in hard-coding the exit strategy to "just give it time."

— Reply to this email directly or view it on GitHubhttps://github.com/rcrowley/goagain/pull/7#issuecomment-15442975 .

rcrowley commented 11 years ago

@ManuelAmadorAditazz just off the top of my head one might want to delay for some fixed period of time longer than requests are supposed to take, wait until all active connections have closed, or wait until all active connections have finished the current request. The point is only that it isn't up to goagain how your requirements are enforced.

ManuelAmadorAditazz commented 11 years ago

That's a sensible observation. In any case I will probably keep my code around for a while until such time that I need this flexibility. The differences between our trees are minimal in any case, and I can keep merging.

On Tue, Mar 26, 2013 at 7:08 PM, Richard Crowley notifications@github.comwrote:

@ManuelAmadorAditazz https://github.com/ManuelAmadorAditazz just off the top of my head one might want to delay for some fixed period of time longer than requests are supposed to take, wait until all active connections have closed, or wait until all active connections have finished the current request. The point is only that it isn't up to goagain how your requirements are enforced.

— Reply to this email directly or view it on GitHubhttps://github.com/rcrowley/goagain/pull/7#issuecomment-15500474 .