Remote Code Load
From Erlang Community
(Difference between revisions)
| Revision as of 20:27, 11 January 2007 (edit) Patricknharris (Talk | contribs) ← Previous diff |
Revision as of 20:32, 11 January 2007 (edit) (undo) Patricknharris (Talk | contribs) Next diff → |
||
| Line 10: | Line 10: | ||
| {Mod, Bin, File} = code:get_object_code(Mod), | {Mod, Bin, File} = code:get_object_code(Mod), | ||
| - | %% and load it on all nodes including this one; | + | %% and load it on all connected nodes including this one; |
| %% the next time the code is called it will be using the new version | %% the next time the code is called it will be using the new version | ||
| {Replies, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]), | {Replies, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]), | ||
| + | |||
| + | %% if this node were the "master/admin" node | ||
| + | %% then to push to everything but this node use: | ||
| + | %% {Replies, _} = rpc:multicall(nodes(), code, load_binary, [Mod, Bin, File,]), | ||
| %% and then maybe check the Replies list. | %% and then maybe check the Replies list. | ||
Revision as of 20:32, 11 January 2007
Problem
Remote Load New Code to All Nodes
Solution
Solution attribution: this example is buried in erlang rpc multicall doc.
%% Find object code for module Mod
{Mod, Bin, File} = code:get_object_code(Mod),
%% and load it on all connected nodes including this one;
%% the next time the code is called it will be using the new version
{Replies, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]),
%% if this node were the "master/admin" node
%% then to push to everything but this node use:
%% {Replies, _} = rpc:multicall(nodes(), code, load_binary, [Mod, Bin, File,]),
%% and then maybe check the Replies list.
|
Discussion
This sort of change is tedious within other network infrastructures. see erlang.org rpc multicall doc for further details.

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati

