List Info

Thread: Newbie question--workers starting supervisors




Newbie question--workers starting supervisors
country flaguser name
United Kingdom
2007-04-17 10:35:45
There are two (imo important) things that you lose if you
choose to implement your own supervisor. The first thing is
the restart frequency. It is very helpful for the simple
reason that if something is crashing too fast... It is
probably an error in the system, but if it crashes now and
then, it might just be failing at some point. And there is a
big difference between them. Many people probably dont put
too much thought into this when they have a supervisor and
just use it as a "restarter".  If this is
important to you, you will save a lot of work.

The second thing you lose is the restart strategy. If you
only have 1 process... and you want to restart it, that is
fine... but if you have several and they are all linked in
some way (not linked as in link() but as in working with
eachother) then the generic supervisor is good to have and
eliminates alot of extra work.  

However, if none of these two are important to you, and you
just want to use the them as simple "my process
crashed, lets restart it" then there is nothing to lose
by making your gen_server doing that and I've done it myself
in many of my own projects. Particulary when I want to know
exactly which process that died... as I don't get that from
the supervisor, it restarts a new instance without any
information.

Example:

I have an mnesia table with e.g. 10 number of rows. I start
10 processes that are receiving events and updating their
own dedicated rows. Then I have a reader that reads this
table once in a while.

Now if a process of those 10 crash, I want to know which
one... so that I can restart a new process and tell it
"you are updating this id". 

Ofcourse this can be done with a normal supervisors but it
becomes so much easier. So the answer is as always... what
do you need your "supervisor" to do, and what
solves the problem in the best way?

/Mazen

-- Guest Wrote --------------------
Hello,

I've googled for this but I can't find the answer.  In an
OTP
application, is it acceptable to have a non-supervisor
process (say a
gen_server) start one or more supervisors?  The diagrams in
OTP
principles never show such an arrangement, but they don't
warn against
it either.  The gen_server in question is itself a long
lived and
supervised process.  Will the supervisors be correctly
linked to the
gen_server that started them?  Or am I asking for problems
doing it
this way?

Thanks,

Edmund
_______________________________________________
erlang-questions mailing list
erlang-questionserlang.org
http://www.erlang.org/mailman/listinfo/erlang-questions
 Post recived from mailinglist
_________________________________________________________
Post sent from http://www.trapexit.org
_______________________________________________
erlang-questions mailing list
erlang-questionserlang.org
http://www.erlang.org/mailman/listinfo/erlang-questions

Re: Newbie question--workers starting supervisors
user name
2007-04-17 12:08:21
Well, you could alternatively create 10 unique child specs?

Cheers!
Adam

On 4/17/07, Adam Lindberg <eproxusgmail.com> wrote:
> Well, you could alternatively create 10 unique child
specs?
>
> Cheers!
> Adam
>
> On 4/17/07, Mazen <mazenerlang-consulting.com>
wrote:
> >
> > There are two (imo important) things that you lose
if you choose to implement your own supervisor. The first
thing is the restart frequency. It is very helpful for the
simple reason that if something is crashing too fast... It
is probably an error in the system, but if it crashes now
and then, it might just be failing at some point. And there
is a big difference between them. Many people probably dont
put too much thought into this when they have a supervisor
and just use it as a "restarter".  If this is
important to you, you will save a lot of work.
> >
> > The second thing you lose is the restart strategy.
If you only have 1 process... and you want to restart it,
that is fine... but if you have several and they are all
linked in some way (not linked as in link() but as in
working with eachother) then the generic supervisor is good
to have and eliminates alot of extra work.
> >
> > However, if none of these two are important to
you, and you just want to use the them as simple "my
process crashed, lets restart it" then there is nothing
to lose by making your gen_server doing that and I've done
it myself in many of my own projects. Particulary when I
want to know exactly which process that died... as I don't
get that from the supervisor, it restarts a new instance
without any information.
> >
> > Example:
> >
> > I have an mnesia table with e.g. 10 number of
rows. I start 10 processes that are receiving events and
updating their own dedicated rows. Then I have a reader that
reads this table once in a while.
> >
> > Now if a process of those 10 crash, I want to know
which one... so that I can restart a new process and tell it
"you are updating this id".
> >
> > Ofcourse this can be done with a normal
supervisors but it becomes so much easier. So the answer is
as always... what do you need your "supervisor" to
do, and what solves the problem in the best way?
> >
> > /Mazen
> >
> > -- Guest Wrote --------------------
> > Hello,
> >
> > I've googled for this but I can't find the answer.
 In an OTP
> > application, is it acceptable to have a
non-supervisor process (say a
> > gen_server) start one or more supervisors?  The
diagrams in OTP
> > principles never show such an arrangement, but
they don't warn against
> > it either.  The gen_server in question is itself a
long lived and
> > supervised process.  Will the supervisors be
correctly linked to the
> > gen_server that started them?  Or am I asking for
problems doing it
> > this way?
> >
> > Thanks,
> >
> > Edmund
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questionserlang.org
> > http://www.erlang.org/mailman/listinfo/erlang-questions
> >  Post recived from mailinglist
> >
_________________________________________________________
> > Post sent from http://www.trapexit.org
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questionserlang.org
> > http://www.erlang.org/mailman/listinfo/erlang-questions
> >
>
_______________________________________________
erlang-questions mailing list
erlang-questionserlang.org
http://www.erlang.org/mailman/listinfo/erlang-questions

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )