On 23 Feb 2017, 13:09 +0100, José Valim <[email protected]>, 
wrote:

> > > What if we had a custom supervisor implementation that would always call 
> > > child_spec before restarting?
> >
> > It is the opposite, if the supervisor restarts, then it reloads the 
> > child_spec. The problem is all other scenarios where any of the modules in 
> > your system may change but the supervisor did not (because it didn't have 
> > to). Examples of this include:
> >
> > 1. When compiling a Phoenix a project in development, we would need to 
> > traverse your application tree and ask all supervisors to reload childspecs
> >
> > 2. When building a relup, the release needs to go through all supervisors 
> > and tell them to reload childspecs
> >
> > Another way to put it is that, in the same way our current 
> > worker/supervisor is broken because it moves the child_spec logic out of 
> > the supervisor, removing start_link will be broken because it moves the 
> > start_link logic inside the supervisor and outside of the supervised module.
>

I'm proposing that the supervisor *always* reloads the child spec before 
restarting a child. That way the problem goes away in both examples you showed.

Michał.

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/55932eea-667c-49d6-8de8-1cd263a61988%40Spark.
For more options, visit https://groups.google.com/d/optout.

Reply via email to