Код горячей замены в Эрланге - PullRequest
14 голосов
/ 03 июня 2010

Я недавно видел видео об Эрланге на InfoQ. В этом видео один из создателей представил, как заменить поведение цикла сообщений.

Он просто отправлял сообщение, содержащее лямбду новой версии.кода цикла сообщений, который затем вызывался вместо повторного вызова старого цикла.

Имеет ли этот код горячую замену в Erlang?Или это какая-то более родная функция?

1 Ответ

18 голосов
/ 03 июня 2010

Да, горячая замена на серверах erlang обычно относится к этой функции. Это хорошо объяснено в вопросе stackoverflow Достижение замены кода в gen_server Эрланга, а также в этом аккуратном Универсальном руководстве по Erlang Server или этот маленький .

Модуль Erlang / OTP gen_server предоставляет общий способ выполнения горячей замены путем реализации функции Module:code_change/3 в модуле обратного вызова.

Таким образом, вы можете обновить код сервера, не выключая его, или вернуться к прежней реализации, если что-то работает не так, как ожидалось. Как правило, горячая замена должна выполняться с использованием стандартного обработчика release .

...