<div dir="ltr">Just to clarify, after Jachym's e-mail, I have been using -on_load exactly to load NIFs and that's the scenario it has been shown to work in my case. YMMV.<div class="gmail_extra"><br clear="all"><div>

<div><br></div><div><br></div><div><span style="font-size:13px"><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><b>José Valim</b></span></div><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse"><div>

<span style="font-family:verdana,sans-serif;font-size:x-small"><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank">www.plataformatec.com.br</a></span></div><div><span style="font-family:verdana,sans-serif;font-size:x-small">Skype: jv.ptec</span></div>

<div><span style="font-family:verdana,sans-serif;font-size:x-small">Founder and Lead Developer</span></div></span></div></span></div></div>
<br><br><div class="gmail_quote">On Fri, Jan 24, 2014 at 6:58 PM, Jachym Holecek <span dir="ltr"><<a href="mailto:freza@circlewave.net" target="_blank">freza@circlewave.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi Ferenc,<br>
<br>
# Ferenc Holzhauser 2014-01-24:<br>
> Recently stumbled into the -on_load() directive. It seems nice to replace<br>
> manual work (when possible) e.g. when a live update of a library module<br>
> needs some environment/configuration change on the running system.<br>
><br>
> doc: <a href="http://www.erlang.org/doc/reference_manual/code_loading.html#id84676" target="_blank">http://www.erlang.org/doc/reference_manual/code_loading.html#id84676</a><br>
><br>
> It says it is experimental (since R13B03).<br>
> After trying, it appears to be doing what I think it supposed to but<br>
> looking at this note in the doc I'm not sure how safe it is to use in<br>
> production.<br>
><br>
> Could somebody advise?<br>
<br>
It is clearly not safe to use in production because that's what EXPERIMENTAL<br>
means.<br>
<br>
Also, the -on_load() functionality has been introduced to support automatic<br>
NIF loading (not that this was a problem that really needed solving, IMHO).<br>
Have you investigated if it really fits your use case well? This snippet<br>
from documentation would unsettle me just a little bit on a live system:<br>
<br>
  "A process that calls any function in a module whose on_load function<br>
   has not yet returned will be suspended until the on_load function has<br>
   returned."<br>
<br>
It doesn't specify if this applies just to initial loading of a module or<br>
also to runtime code updates, system behaviour in the latter case could<br>
be disastrous.<br>
<br>
Further, automatic configuration changes are a touchy topic. What if some-<br>
thing goes wrong in the middle of your automatic update, and you end up<br>
with inconsistent state? How do you rollback then? Especially if the<br>
whole stuff is hidden where Operations won't see it?<br>
<br>
Personally, I'd advise to solve boring problems in boring ways...<br>
<br>
BR,<br>
        -- Jachym<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div></div>