<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>