[erlang-questions] Second try: .appup code_change timeout error

Ulf Wiger (TN/EAB) ulf.wiger@REDACTED
Tue Apr 8 08:54:02 CEST 2008


Michael FIG skrev:
> Hi all,
> 
> I wrote this message a while ago, but haven't received any answer.
> Does anybody have a workaround for this situation?

Well, I believe you can insert something like:

{load_object_code, {myapp, Vsn, [mymod]},
{suspend, [{mymod, 60000}]},
{load, {mymod, soft_purge, soft_purge}},
{code_change, {mymod, Extra}},
{apply, {mymod, transform_files, [...]}},
{resume, [mymod]},
{purge, [mymod]}

If mymod represents a gen_server keeping the names of
files in its internal state, you'll have to figure out
how to make the transform_files() function aware of which
files it should transform - it can't call the server,
since it's suspended.

One dirty way of doing it is to call code_change twice,
using the Extra argument to tell the server to store
the file names in a public ets table, and then remove
the table on the second call. All is fair in love and
upgrades.

BR,
Ulf W



More information about the erlang-questions mailing list