Matthias,<br><br>I can also successfully run /usr/sbin/rabbitmq-server from the command line if I change -sname to -name. I just have to make sure that I change the actual mnesia dir to match the NODENAME.<br><br>But I think that in addition to the rabbit_multi script, rabbit_multi.erl will need some serious tweaking. I think it was written with local clustering in mind and did not adequately consider the effect of using fully-qualified domain names with -name.<br>
<br>This is my analysis of the code and behavior. If I am mistaken, I am sure you will point out where and why :)<br><br>Firstly, rabbit_multi.erl hard-codes the node name &quot;rabbit&quot;:<br><br><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; NodeName = if NodeNumber == 0 -&gt;</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %% For compatibility with running a single node</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;rabbit&quot;;</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; true -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;rabbit_&quot; ++ integer_to_list(NodeNumber)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end,</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; {NodePid, Started} = start_node(NodeName, &quot;<a href="http://0.0.0.0">0.0.0.0</a>&quot;, 5672 + NodeNumber,</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RpcTimeout),</span><br><br>and then goes on to cut everything off after the &quot;@&quot; in the node name in localnode():<br><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; Node = rabbit_misc:localnode(list_to_atom(NodeName)),</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; case rpc:call(Node, os, getpid, []) of</span><br>
<br>Even if NodeName wasn&#39;t hard-coded to &quot;rabbit&quot;, localnode would strip off everything after the &quot;@&quot; anyway. Now if <a href="mailto:rabbit@myexample.com">rabbit@myexample.com</a> were running locally, but using -name, the rpc call would fail because erlang would want the full node name.<br>
<br>Anyway, the rpc fails because rabbit isn&#39;t running yet, so rabbit_multi will now try to start it (but it will fail for reasons mentioned above). Just prior to this, to add insult to injury, the code blasts any environment values that might have existed. This explains the behavior of why RabbitMQ times out waiting for Mnesia to start. It can&#39;t find the node. Even if I called the node &#39;<a href="mailto:rabbit@something.com">rabbit@something.com</a>&#39; and not &#39;<a href="mailto:grendel@something.com">grendel@something.com</a>&#39;, it would not work because it would be trying to rpc to &#39;rabbit&#39;, which does not and never will exist while starting up with -name.<br>
<br><span style="font-family: courier new,monospace;">start_node(NodeName, NodeIPAddress, NodePort, RpcTimeout) -&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; os:putenv(&quot;NODENAME&quot;, NodeName),</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; os:putenv(&quot;NODE_IP_ADDRESS&quot;, NodeIPAddress),</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; os:putenv(&quot;NODE_PORT&quot;, integer_to_list(NodePort)),</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; Node = rabbit_misc:localnode(list_to_atom(NodeName)),</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; case rpc:call(Node, os, getpid, []) of</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {badrpc, _} -&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port = run_cmd(script_filename()),</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Started = wait_for_rabbit_to_start(Node, RpcTimeout, Port),</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pid = case rpc:call(Node, os, getpid, []) of</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {badrpc, _} -&gt; throw(cannot_get_pid);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PidS -&gt; list_to_integer(PidS)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end,</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{Node, Pid}, Started};</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PidS -&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pid = list_to_integer(PidS),</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw({node_already_running, Node, Pid})</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; end.</span><br>
<br>I respectfully suggest that some more thought needs to go into rabbit_multi.erl and perhaps the startup/node name architecture.<br><br>Regards,<br>Edwin<br><br><div class="gmail_quote">On Fri, May 16, 2008 at 3:06 AM, Matthias Radestock &lt;<a href="mailto:matthias@lshift.net">matthias@lshift.net</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Edwin,<div class="Ih2E3d"><br>
<br>
Edwin Fine wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On this topic, does RabbitMQ have to use a short name (-sname) for its node name? I had issues trying to use -name instead of -sname.<br>
</blockquote>
<br></div>
changing rabbitmq-server to use -name instead of -sname works fine for me, though rabbitmq-multi would need some tweaking to get working again after such a change.<br>
<br>
What problems did you encounter?<br><font color="#888888">
<br>
<br>
Matthias.<br>
<br>
</font></blockquote></div><br>