<div dir="ltr">Hi Florian!<div><br></div><div>The way gen_fsm (and gen_event) is specified is actually the original - i.e. the code_change should always succeed. The function spec in gen_server was updated in OTP R15B to allow an error return since this was required (and had always been used) by supervisor (<a href="https://github.com/erlang/otp/commit/038b9dd3a1f9bdd86cbb83bf3484ab1529d4fca2">https://github.com/erlang/otp/commit/038b9dd3a1f9bdd86cbb83bf3484ab1529d4fca2</a>). The release_handler was updated at the same time (so even if the supervisor did use it before, the result would probably not have been too nice if it actually failed).</div><div><br></div><div>Anyway... I guess there would be no harm in updating the spec in gen_fsm to reflect that an error return is allowed (even if it is not a good idea - it will fail the complete upgrade and roll back to the old release. A fact which would have to be stated in the reference manual.) I could write at ticket for this, but the chance that it would be prioritized within reasonable time is extremely small. A contribution would help, of course...<br></div><div><br></div><div>When it comes to gen_event, the change would be a bit more complicated. Errors are not handled at all in the code as it is now.</div><div><br></div><div>Regards</div><div>/siri</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-01-06 19:41 GMT+01:00 Florian Waas <span dir="ltr"><<a href="mailto:flw@datometry.com" target="_blank">flw@datometry.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In gen_server the callback for code_change is spec’d as<br>
<br>
  Module:code_change(OldVsn, State, Extra) -> {ok, NewState} | {error,<br>
Reason}<br>
<br>
in gen_fsm as<br>
<br>
  Module:code_change(OldVsn, StateName, StateData, Extra) -> {ok,<br>
NextStateName, NewStateData}<br>
<br>
i.e., upgrades on FSM’s had better succeed? The underlying implementation<br>
in sys.erl is the same for both and allows for an error case.<br>
Am I missing some subtlety here?<br>
<br>
Thanks,<br>
-fl.<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>