How to deploy an upgrade (build with rebar3)
Loïc Hoguin
essen@REDACTED
Mon Feb 24 16:03:32 CET 2020
On 24/02/2020 15:49, Fred Hebert wrote:
>
>
> On Mon, Feb 24, 2020 at 9:28 AM Loïc Hoguin <essen@REDACTED
> <mailto:essen@REDACTED>> wrote:
>
>
> Ranch 2.0 onward fully supports upgrades and comes with an appup you
> can
> use directly:
> https://github.com/ninenines/ranch/blob/master/src/ranch.appup
>
> We've recently added a test suite:
> https://github.com/ninenines/ranch/blob/master/test/upgrade_SUITE.erl
>
> The workaround described is more or less what Ranch 2.0 does during the
> upgrade: stop all the acceptor processes, perform the upgrade, resume
> the acceptor processes. The listening socket(s) stays open, so no new
> connections should be rejected as long as the backlog is large enough,
> and existing connections stay alive as well.
>
>
> Good to hear, hadn't seen that one go through. That can cause a bit of a
> pause and still may be a bit surprising in the shell, but that at least
> makes things production safe for relup, which is definitely an improvement.
In the distant future the idea is to be able to support both synchronous
and asynchronous accept functions, the latter of course not needing to
stop acceptors.
Then if the gen_tcp+socket work gives us an asynchronous accept method,
or if people want to use the underlying socket module directly, they
will not suffer from these issues.
Cheers,
--
Loïc Hoguin
https://ninenines.eu
More information about the erlang-questions
mailing list