[erlang-questions] Best practice to hot update .hrl
mats cronqvist
masse@REDACTED
Mon Jan 5 17:38:04 CET 2009
"Kaiduan Xie" <kaiduanx@REDACTED> writes:
> Hi,
>
> OTP Design principles talks a lot on how to do release handling. However it
> does not discuss the case where .hrl file is updated. For example, how to deal
> the the following cases?
> 1. A new record is added,
> 2. An element is removed/added from an existing record,
> 3. A value of macro is changed.
included files (the .hrl suffix is just a convention) are inserted
in the .erl file by the compiler. recompiling/reloading all .erl
files that include your .hrl will cover the easy cases, i.e. when no
process has the old version of the record/macro on the stack/in a
register.
this is why all long-lived processes should be gen_servers; you can
use the code_change method to transform the state. but no matter how
you do it, the combination records-upgrades will always suck. in
this respect, proplists or dicts are much better if you can live
with the (modest) preformance hit.
mats
More information about the erlang-questions
mailing list