Using failover

Samuel Tardieu sam@REDACTED
Thu Feb 10 17:29:45 CET 2000


Due to major power trouble in my building, I built an application to
monitor those power failures. Since this application needs to be
fault tolerant, as its results are used by the technicians working on
the power outages, I use the "distributed" kernel parameter.

It is not clear to me what I should do in takeover mode. My
application is mainly a globally registered gen_server. How can I
cleanly shut down the server running on the other node (the one I'm
taking over) and make sure it is done before starting the application
locally? Won't this create a race condition where the application
won't be restarted if the top-priority node dies after stopping the
application on the remote node and before registering the new process
locally?

Note: I have no state to transfer between the node being taken over
and the newly started one as everything is stored in a distributed
Mnesia table.

Thanks in advance for your explanations :)

  Sam
-- 
Samuel Tardieu -- sam@REDACTED

My application file is really simple, but the takeover alternative
won't work as a server will be multiply registered.

-module (pomonitor_app).

-behaviour (application).
-export ([start/2, stop/1]).

start (normal, _) ->
    pomonitor_sup:start_link ();

start ({failover, _}, _) ->
    pomonitor_sup:start_link ();

start ({takeover, _}, _) ->
    pomonitor_sup:start_link ().

stop (_) -> ok.
    




More information about the erlang-questions mailing list