私は の初心者なerlang
ので、 について問題がありgen_server
ます。code_change()
関数がどのように機能するかはまだ不明です。
説明してもらえますか?
よろしくお願いします。
私は の初心者なerlang
ので、 について問題がありgen_server
ます。code_change()
関数がどのように機能するかはまだ不明です。
説明してもらえますか?
よろしくお願いします。
本当に簡単です。が実行されている場合gen_server
、呼び出し間で渡される状態が含まれます ( の最後の引数handle_call
、handle_cast
とhandle_info
)。これが 2 つの要素を持つタプルであり、リリース ハンドラー{a, b}
を使用してホット コード アップグレードを行い、新しいコードが 3 つの要素を持つタプルを想定していると言った場合、新しいコードが古い状態を使用する前に状態を変換する必要があります。{a, b, c}
でそれを行いcode_change
ます。リリース処理命令で命令を指定するupdate
と、リリース ハンドラがライブ ノードのコードをアップグレードするときにcode_change
、状態を変換する関数が呼び出されます。状態が変換されている間、プロセスは一時停止され、新しい状態で再開されます。
ライブ ノードでリリース アップグレードを行うためにリリース ハンドラを使用していない場合は、おそらく心配する必要はありません。それでも、状態フォーマットを変更する必要がある場合にのみ使用されますが、これはそれほど頻繁ではありません。