[erlang-questions] Distributed Applications: Stop Before Start?
Vance Shipley
vances@REDACTED
Tue Mar 27 16:55:58 CEST 2012
My current problem is that it's not my application, it's OTP's. It's snmp. I tried using rpc:call/4 in my application's start/2 callback to call application:permit/2 but that just deadlocked.
Ulf Wiger <ulf@REDACTED> wrote:
>
>In the start_phase() call, you can make a gen_server call to the foo_app
>instance running on a and ask it to close its connections.
>
>If that's what you're already doing, perhaps I misunderstood the question?
>
>BR,
>Ulf W
>
>On 27 Mar 2012, at 07:01, Vance Shipley wrote:
>
>> Is there a clever way to get "stop first" semantics out of dist_ac?
>>
>> A distributed application in OTP may migrate from a failed node
>> to another and it may migrate back when the original node returns.
>>
>> You can initiate a transfer with application:permit(foo, false).
>> The order of the callbacks is:
>>
>> a@REDACTED b@REDACTED
>> --------------------- -------------------
>> foo_app:start({takeover, a@REDACTED}, [])
>> foo_app:start_phase(phase1, {takeover, a@REDACTED}, [])
>> foo_app:start_phase(phase2, {takeover, a@REDACTED}, [])
>> foo_app:prep_stop([])
>> foo_app:stop([])
>>
>> Only the start/2 and stop/1 callbacks are required, the others are optional.
>>
>> I'm currently trying to distribute OTP's snmp application between two
>> nodes on the same host but it fails in the situation above because it
>> tries to bind to the address already in use:
>>
>> ** Configuration error: failed starting net-if:
>> {udp_open,161,eaddrinuse}
>>
>> So in this case I'd like to have the application stopped on the old
>> node before it is started on the new node.
>>
>> --
>> -Vance
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>
More information about the erlang-questions
mailing list