2010-06-03 9 views
13

J'ai récemment vu une vidéo sur Erlang sur InfoQ, Dans cette vidéo, l'un des créateurs a présenté comment remplacer le comportement d'une boucle de message. Il envoyait simplement un message contenant un lambda de la nouvelle version du code de boucle de message, qui était alors appelé au lieu d'appeler à nouveau l'ancienne boucle.Échange de code à chaud dans Erlang

Est-ce que le changement de code à chaud dans Erlang se réfère à? Ou est-ce une autre fonctionnalité plus native?

Répondre

17

Oui, le remplacement à chaud dans les serveurs erlang fait généralement référence à cette fonctionnalité. Il est bien expliqué dans la question stackoverflow Achieving code swapping in Erlang’s gen_server, et aussi dans ce Erlang Generic Server tutorial ou this little one.

Le module Erlang/OTP gen_server fournit un moyen générique de réaliser un remplacement à chaud en implémentant une fonction Module:code_change/3 dans le module de rappel. De cette façon, vous pouvez mettre à niveau un code de serveur sans l'arrêter, ou revenir à l'ancienne implémentation si quelque chose ne fonctionne pas comme prévu. En général, l'échange à chaud devrait être mis en place en utilisant le release handler générique.

+1

@ bruce14 Une meilleure option pour supprimer un lien mort est d'essayer de trouver une version (définitivement) archivée –

+0

Bonne réflexion. Et bon travail! – user