record problem

Valentin Micic valentin@REDACTED
Sun Jun 18 13:19:28 CEST 2006

Sometimes if one changes state variable returned by gen_server (or any other 
behaviour) callback module, and then dyunamically upgrade code, run-time may 
report error like this one.
For example, if you had a gen_server callback module with a state variable 
like this:

-record( state, {x="X"} )

Later, if  you start the server  and change the code with new state variable 
modified to:

-record( state, {x="X", y="Y"} )

and compile & deploy the code, but fail to restart the server, the 
gen_server loop shall pass the old record definition {state, "X"}, whilst 
callback module would expect, something like {state, "X", "Y"}. If you do 
not have *catch_all* pattern, the program shall crash.

Would this be applicable to your case?


----- Original Message ----- 
From: "bryan rasmussen" <rasmussen.bryan@REDACTED>
To: "Erlang Questions" <erlang-questions@REDACTED>
Sent: Sunday, June 18, 2006 12:07 PM
Subject: record problem

> Why does this
> -record(a,{b="b",c="c"}).
> give this
> =ERROR REPORT==== 18-Jun-2006::12:03:20 ===
> Error in process <0.168.0> with exit value: 
> {{badmatch,"b"},[{erl_eval,expr,3}]}
> ** exited: {{badmatch,"b"},[{erl_eval,expr,3}]} **
> In Erlang 5.4.13
> Cheers,
> Bryan Rasmussen

More information about the erlang-questions mailing list