Короткий ответ, вы не можете.
Это связано с тем, что приложения, скомпилированные для новой версии эмулятора BEAM (Erlang VM), не будут работать должным образом на старых версиях эмулятора.
Или более подробно:
Обновление приложений без остановки может быть выполнено только с помощью release handler . Но обработчик релиза может обновлять только приложения, работающие на ВМ, но не саму ВМ. Вы все еще можете подготовить файл relup
, но когда systools: make_relup / 3 заметит, что новый выпуск использует другую версию эмулятора BEAM, он добавит инструкцию restart_new_emulator (Low-Level)
в перезапустите узел во время обновления (см. описание для restart_new_emulator
на на странице, о которой я упоминал ранее ).
Однако вы могли бы обновить виртуальную машину Erlang без прерывания обслуживания (при условии, что ваше приложение предоставляет какую-то услугу внешней стороне). Но это очень сильно зависит от архитектуры вашего приложения и не имеет общего ответа.