Горячая замена кода в Erlang

Недавно я увидел видео о Erlang on InfoQ, В этом видео один из создателей представил, как заменить поведение цикла сообщений.

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

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

Ответы

Ответ 1

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

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

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