[erlang-questions] Re: supervisors

Wes James comptekki@REDACTED
Fri Apr 1 18:39:48 CEST 2011


Siri,

The same thing happens:

Erlang R14B02 (erts-5.8.3) [source] [smp:2:2] [rq:2] [async-threads:0]
[hipe] [kernel-poll:false]

Eshell V5.8.3  (abort with ^G)
1> make:all([load]).
Recompile: a_sup
Recompile: a_sup_2
up_to_date
2> application:start(a).
a1
ok
3> appmon:start().
{ok,<0.49.0>}
4> a_sup:start(a_sup_2,a2).
{error,{already_started,<0.46.0>}}

looking at appmon, there is an a_sup process supervising process
<0.47.0> which I'm guessing is the a_sup_2. What I'm trying to do is
run a_sup_2 with say name a1, then run a second a_sup_2, with say name
a2 as if you were running a_sup_2 then then running register("a_sup_2
process", a1) and then run a second a_sup_2 and get a second <0.xx.0>
process to do register(<0.xx.0>, a2) and so forth so several a_sup_2's
can be running but with a different registered name.  Can that be
done?

thx,

-wes

On Fri, Apr 1, 2011 at 3:48 AM, Siri Hansen <erlangsiri@REDACTED> wrote:
> Attached you can find my small sample.  Please have a look and let me know
> what differs.
> Just to add some confusion, my a_sup corresponds to your eapp_sup and my
> a_sup_2 corresponds to your a_sup.... ;)
> /siri
>
> 2011/3/31 Wes James <comptekki@REDACTED>
>>
>> Siri,
>>
>> The code is from last weeks training part of the Erlang Factory in San
>> Francisco.  I don't know if Erlang Solutions would like me sending all
>> the code to people or not.  I'd send it to you off-list if it was ok
>> with them.
>>
>> Or maybe you could send me a sample of your code to compare with what I
>> have.
>>
>> thx,
>>
>> -wes
>>
>> On Thu, Mar 31, 2011 at 2:16 AM, Siri Hansen <erlangsiri@REDACTED> wrote:
>> > Hi Wes,
>> > It should be possible to do exactly what you want. I have tried to
>> > recreate
>> > your problem, but I did not succeed. If you want to you may post the
>> > code
>> > for the two supervisors and I will have a look at it to see what I'm
>> > doing
>> > different.
>> > Regards
>> > /siri
>> >
>> >
>> > 2011/3/30 Wes James <comptekki@REDACTED>
>> >>
>> >> when I start and app that works fine:
>> >>
>> >> =PROGRESS REPORT==== 30-Mar-2011::11:28:05 ===
>> >>          supervisor: {local,eapp_sup}
>> >>             started: [{pid,<0.70.0>},
>> >>                       {name,{a_sup,a1}},
>> >>                       {mfargs,{a_sup,start_link,[a1]}},
>> >>                       {restart_type,permanent},
>> >>                       {shutdown,brutal_kill},
>> >>                       {child_type,supervisor}]
>> >>
>> >> In eapp_sup I have:
>> >>
>> >> start_a(Module, Name) ->
>> >>        supervisor:start_child(?MODULE, child(Module, Name)).
>> >>
>> >>
>> >> child(Module, Name) ->
>> >>  {{Module, Name}, {Module, start_link, [Name]}, permanent,
>> >> brutal_kill, supervisor, [Name]}.
>> >>
>> >>
>> >> from starting above it would seem that a_sup has the name a1, but if
>> >> you run appmon it shows just as a_sup.
>> >>
>> >> When I then run
>> >>
>> >> eapp:start_a(a_sup,a2).  I would assume that a_sup could load as a
>> >> second supervisor process with name a2, but this is what I get:
>> >>
>> >> eapp_sup:start_a(a_sup,a2).
>> >> {error,{already_started,<0.70.0>}}
>> >>
>> >> I then create a_sup2  and eapp_sup:start_a(a_sup2, a1) and that loads
>> >> fine, since the module "name" is not the same in the system as a_sup.
>> >> But it seems like a name should be assigned to these to make them
>> >> unique by name and be able to use the same supervisor code to
>> >> supervise some more children.
>> >>
>> >> Is that possible?
>> >>
>> >> thx,
>> >>
>> >> -wes
>> >> _______________________________________________
>> >> erlang-questions mailing list
>> >> erlang-questions@REDACTED
>> >> http://erlang.org/mailman/listinfo/erlang-questions
>> >
>> >
>
>



More information about the erlang-questions mailing list