<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Sun, Nov 29, 2015 at 11:49 PM Michael Truog <<a href="mailto:mjtruog@gmail.com">mjtruog@gmail.com</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
<tt>Having Erlang applications started and stopped dynamically can
be contrary to having the system fail-fast. So, that is a danger,
since you are not always starting from a known starting state, the
dynamic actions are dealing with state that is unknown due to the
point in time during the runtime when the actions execute. There
is only one boot file which the Erlang VM accepts on its command
line, and that contains the list of actions which are suppose to
provide a successful startup of the release, and if not, it should
crash due to validation during initialization.<br>
<br></tt></div></blockquote><div><br></div><div>Right. then maybe "plugins" in Erlang world should be seen as a way to augment a release from binary packages and provide some tooling around to make the experience easy for non Erlang users.</div><div><br></div><div>Another way could be sending remotely the packages and regenerate locally the boot script. Not sure how crazy it is. I can see the possible uncertainty on reboot if any problem happen during a deployment it can creates though. But how much it would be different from a bad release upgrade?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><tt>
However, it is helpful to be able to dynamically start and stop
Erlang applications, if the system has dynamic functionality it
needs to support (hopefully with careful validation in isolation,
so it doesn't cause instability). I have functions for this at
<a href="https://github.com/okeuday/reltool_util" target="_blank">https://github.com/okeuday/reltool_util</a> . You might like
reltool_util:application_remove/3 since that handles dependencies
too, if they aren't shared with other applications. I prefer
reltool_util:application_start/3 instead of
application:ensure_started/1 since it handles module loading too.
The reltool_util module also contains functions for handling
release boot and script files.</tt></div></blockquote><div><br></div><div><br></div><div>Thanks this is useful :) With the help of setup, i have some working code right now to enable/disable dynamically the applications using remote plugins.</div><div><br></div><div>- benoit</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><tt><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif"> </span><br></tt></div></blockquote></div></div>