Эрланг: Как я могу удалить узел из узлов других узлов ()? - PullRequest
4 голосов
/ 22 мая 2010

Я хочу смоделировать поведение erl -sname example -hidden, но динамически.Как я могу удалить узел из видимости в кластере?

См. Комментарии @mwt на @Yasir Arsanukaev для дополнительного разъяснения того, что я пытаюсь сделать.

1 Ответ

4 голосов
/ 22 мая 2010

Попробуйте erlang:disconnect_node/1:

(bar@dt)1> nodes().
[]
(bar@dt)2> net_adm:ping('foo@dt').          
pong
(bar@dt)3> nodes().               
[foo@dt]
(bar@dt)4> erlang:disconnect_node('foo@dt').
true
(bar@dt)5> nodes().                         
[]

Или, если вы хотите, чтобы узел удалил себя из других узлов 'nodes():

(bar@dt)1> nodes().
[foo@dt]
(bar@dt)2> rpc:eval_everywhere(erlang, disconnect_node, [node()]).
abcast
(bar@dt)3> nodes().
[]

Если узел был запущен с ключом -hidden:

(bar@dt)1> nodes(hidden).
[foo@dt]
(bar@dt)2> rpc:eval_everywhere(nodes(hidden), erlang, disconnect_node, [node()]).
abcast
(bar@dt)3> nodes(hidden).
[]
...