[erlang-questions] supervisor does not restart my worker

Matej Kosik <>
Sat Jun 9 13:38:39 CEST 2007


Hi,

While playing with Erlang, I have tried to check supervisor behavior. I have written a simple generic server (it is attached as `serv.erl' file) that is started by a simple supervisor (its source is in the attached `sup.erl' file).

The API of the server is simple:

	serv:question()
	serv:fail()

The second service intentionally fails. I wanted to see how the generic server is restarted so that I could continue using it (those services that does not cause failure). However, the `serv' worker is not restarted. What am I doing wrong?


<DETAILS>
I start supervisor as follows

	1> sup:start_link().

Then I try to use services of my server:

	2> serv:question().
	42
	3> serv:question().
	42

But when I call the service that causes failure of the server

	4> serv:fail().

I get

	=ERROR REPORT==== 9-Jun-2007::13:34:51 ===
	** Generic server serv terminating
	** Last message in was fail
	** When Server state == []
	** Reason for termination ==
	** {{badmatch,2},[{serv,handle_call,3},{proc_lib,init_p,5}]}
	** exited: {{{badmatch,2},[{serv,handle_call,3},{proc_lib,init_p,5}]},
            {gen_server,call,[serv,fail]}} **
	5>
	=ERROR REPORT==== 9-Jun-2007::13:34:51 ===
	** Generic server <0.32.0> terminating
	** Last message in was {'EXIT',<0.30.0>,
                               {{{badmatch,2},
                                 [{serv,handle_call,3},{proc_lib,init_p,5}]},
                                {gen_server,call,[serv,fail]}}}
	** When Server state == {state,{<0.32.0>,sup},
                               one_for_all,
                               [{child,
                                    <0.37.0>,
                                    serv,
                                    {serv,start_link,[]},
                                    permanent,
                                    2000,
                                    worker,
                                    [serv]}],
                               {dict,0,
                                     16,
                                     16,
                                     8,
                                     80,
                                     48,
                                     {[],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      [],
                                      []},
                                     {{[],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       [],
                                       []}}},
                               20,
                               3600,
                               [{1181,388891,757484}],
                               sup,
                               []}
	** Reason for termination ==
	** {{{badmatch,2},[{serv,handle_call,3},{proc_lib,init_p,5}]},
	    {gen_server,call,[serv,fail]}}

and no restart happens.
</DETAILS>

Thanks for any clues.
Cheers
-- 
Matej Kosik
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: serv.erl
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070609/b247cb14/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sup.erl
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070609/b247cb14/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Makefile
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070609/b247cb14/attachment-0002.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070609/b247cb14/attachment.bin>


More information about the erlang-questions mailing list