GenServer.code_change
code_change
, go back to GenServer module for more information.
Specs
code_change(old_vsn, state :: term(), extra :: term()) :: {:ok, new_state :: term()} | {:error, reason :: term()} when old_vsn: term() | {:down, term()}
Invoked to change the state of the GenServer
when a different version of a
module is loaded (hot code swapping) and the state's term structure should be
changed.
old_vsn
is the previous version of the module (defined by the @vsn
attribute) when upgrading. When downgrading the previous version is wrapped in
a 2-tuple with first element :down
. state
is the current state of the
GenServer
and extra
is any extra data required to change the state.
Returning {:ok, new_state}
changes the state to new_state
and the code
change is successful.
Returning {:error, reason}
fails the code change with reason reason
and
the state remains as the previous state.
If code_change/3
raises the code change fails and the loop will continue
with its previous state. Therefore this callback does not usually contain side effects.
This callback is optional.