[erlang-questions] Is -on_load() still experimental? Anyone using it?
Sverker Eriksson
sverker.eriksson@REDACTED
Mon Feb 10 19:44:33 CET 2014
On 01/28/2014 06:37 PM, Ferenc Holzhauser wrote:
> Thanks. The behaviour is quite neatly described in the documentation. If
> there is no intention to change it (which is probably the case by now) then
> perhaps it is also an idea to remove the experimental warning or replace it
> with a more appropriate one about correct use. The name of the directive is
> deceptive enough to bring the unwary to ideas and eventually make them
> break things.
>
> If well understood then it can be useful to trigger other things than NIF
> loading but I also think that the documentation should generally discourage
> that.
>
>
We will keep on_load as experimental as there are a number of known weak
points in current semantics which we therefore might want to change but
do not have time to do for OTP 17.0:
* Doing external call in on_load to the module itself leads to deadlock.
This could be handled as a special case and let external calls in the
process doing on_load reach the module itself.
* At upgrade, other processes calling the module get suspended waiting
for on_load. We could let them reach the "old" module until
on_load_succeeds to not destroy realtime characteristics.
* At upgrade, no rollback is done if on_load fails. If we instead delay
the upgrade until after on_load succeeds the system will not be left in
a "broken" state.
/Sverker, Erlang/OTP
More information about the erlang-questions
mailing list