Erlang Advocacy and kill -kill

Gordon Guthrie, BTP, BT, SE gordon.guthrie@REDACTED
Tue Jan 20 10:45:07 CET 2004


Folks

I am trying to do a spot of Erlang advocacy. I want to show how you can
start a distributed app across two machines, kill one and then have the
other take over.

However, I want to do it on a laptop as I have to go visiting with it.

I have written a simple app with a top supervisor, a single supervisor under
it which can starts a worker.

I deploy this app to two nodes, 'aardvark' and 'badger' which I start with
batch files (boot scripts will come later) which reference .config files.
These 4 files are shown below:

*********start of start_aardvark ******************

#! /bin/bash
cd /opt/erlang_apps/swarm
erl -s toolbar -sname aardvark -config
/opt/erlang_apps/swarm/aardvark.config -heart

*********end of start_aardvark ********************

*********start of start_badger*********************

#! /bin/bash
cd /opt/erlang_apps/swarm
erl -s toolbar -sname badger -config /opt/erlang_apps/swarm/badger.config
-heart

*********end of start_badger***********************

*********start of aardvark.config******************

[{kernel,
  [{distributed, [{swarm, 5000, [aardvark@REDACTED,
{badger@REDACTED}]}]},
   {sync_nodes_manadatory, [badger@REDACTED]},
   {sync_nodes_timeout, 5000}
  ]
 }
].

*********end of aardvark.config********************

*********start of badger.config********************

[{kernel,
  [{distributed, [{swarm, 5000, [aardvark@REDACTED,
{badger@REDACTED}]}]},
   {sync_nodes_manadatory, [aardvark@REDACTED]},
   {sync_nodes_timeout, 5000}
  ]
 }
].

*********end of badger.config**********************

So far so good, the two nodes start up, I do application:start(swarm) on
both of them, the application starts on one of them, but not the other.

In order to demonstrate the magic of Erlang I now want to kill the node that
has the app on it and watch the app migrate over, and the node to restart -
kill is our friend. However running 'kill <erlang node pid>' or 'kill -kill
<erlang node pid>' will kill the node but it doesn't failover. I suspect
that this is because Erlang knows I am cheating, and is behaving gracefully.

Have tried 'man murder' but no joy ;-> How can I really slaughter the node
to make sure it fails over (or having I got something wrong in my configs?).

TIA

Gordon

______________________________________________________________________
Scottish Enterprise Network
http://www.scottish-enterprise.com

Address & Contact Numbers

150 Broomielaw
5 Atlantic Quay
Glasgow
G2 8LU.
Tel:  +44 (0)141 248 2700.
Fax:  +44 (0)141 221 3217

message is sent in confidence for the addressee only.
It may contain legally privileged information. The contents are not to
be disclosed to anyone other than the addressee. Unauthorised recipients
are requested to preserve this confidentiality and to advise the sender
immediately of any error in transmission.





More information about the erlang-questions mailing list