2010-06-03 14 views
13

Recientemente vi un video sobre Erlang en InfoQ, En ese video, uno de los creadores presentó cómo reemplazar el comportamiento de un ciclo de mensajes.Intercambio de código en caliente en Erlang

Estaba simplemente enviando un mensaje que contenía una lambda de la nueva versión del código de bucle de mensaje, que luego se invocó en lugar de llamar al bucle anterior de nuevo.

¿Ese refrán de código en Erlang se refiere a? ¿O es alguna otra característica más nativa?

Respuesta

17

Sí, el intercambio en caliente en servidores erlang generalmente se refiere a esta característica. Está bien explicado en la pregunta de stackoverflow Achieving code swapping in Erlang’s gen_server, y también en este nítido Erlang Generic Server tutorial o this little one.

El módulo Erlang/OTP gen_server proporciona una forma genérica para lograr el intercambio en caliente, mediante la implementación de una función Module:code_change/3 en el módulo de devolución de llamada.

De esta manera, puede actualizar un código de servidor sin apagarlo, o volver a la implementación anterior si algo no funciona como se esperaba. En general, el intercambio en caliente debe implementarse utilizando el genérico release handler.

+1

@ bruce14 Una mejor opción para eliminar un vínculo inactivo es tratar de encontrar una versión (permanentemente) archivada –

+0

Buena idea. ¡Y buen trabajo! – user

Cuestiones relacionadas