制作rpc:call时出现Erlang {badrpc,nodedown}错误

时间:2017-12-31 18:54:16

标签: erlang rpc erlang-shell erl

我有两个不同的cookie节点。我正在尝试拨打电话,如下所示,但我每次都会收到{badrpc,nodedown}。

onenode@localhost>rpc:call(othernode@localhost,erlang,system_info,[otp_release]).

我尝试在google上找到并最终在以下链接中试用它们但仍然没有成功"。

以下是我尝试过的一些链接:

Link 1

Link 2

Link 3

你能帮帮我吗。

EDIT -1:两个节点都托管在localhost中。

2 个答案:

答案 0 :(得分:2)

在执行对具有不同cookie

的节点的rpc调用之前,必须执行以下函数
erlang:set_cookie(other_node@localhost, other_node_cookie).

更多信息:http://erlang.org/doc/reference_manual/distributed.html

答案 1 :(得分:1)

根据rpc.erl,它使用gen_server模块进行通用的erlang调用,gen_server使用gen.erl模块进行调用,使用here使用https://github.com/SlavekRydval/GoatJira see !! in this answer 1}}选项作为noconnect的选项。
根据Erlang文档:

  

如果目标节点必须自动连接以执行发送,则返回noconnect。

另一个问题是不同的cookie。根据Erlang文档:

  

当节点尝试连接到另一个节点时,会比较神奇的cookie。如果它们不匹配,则连接的节点拒绝连接。

因此,如果节点之间没有任何连接,则您的调用不会创建一个,并且您无法使用不同的Cookie连接Erlang节点。