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