ISTR that, you
can reload core Erlang modules, but that there's some sticky_directory stuff that prevents it from happening by default.
I'm pretty sure that I can reload the inet module: [0]
Eshell V7.0 (abort with ^G)
1> l(inet).
{error,sticky_directory}
=ERROR REPORT==== 6-Dec-2015::03:37:00 ===
Can't load module 'inet' that resides in sticky dir
2> code:which(inet).
"/usr/lib/erlang/lib/kernel-4.0/ebin/inet.beam"
3> code:unstick_dir("/usr/lib/erlang/lib/kernel-4.0/ebin/").
ok
4> l(inet).
{module,inet}
5>
Not that this is a good idea, mind, but I'm
fairly certain that it's doable. :)
(Also note that you can reload the mnesia module without hassle. Its ebin directory is not marked as sticky. :) )
> I have to use DNS for load balancing [because the load balancers fall over often].
Oh lord. That's a terrible situation to be in.
[0] Which is part of the kernel application, which is one of the applications that hot upgrades require that you restart the emulator to upgrade. [1]
[1] http://www.erlang.org/doc/system_principles/upgrade.html