diff options
author | Simon MacMullen <simon@lshift.net> | 2010-04-28 11:06:01 +0100 |
---|---|---|
committer | Simon MacMullen <simon@lshift.net> | 2010-04-28 11:06:01 +0100 |
commit | 8aaca240ce09e25b118f5c943f5edfa894bfacdf (patch) | |
tree | 735c345273e57612396c011c95ee9bfadea16cdc | |
parent | 33303726a2eba1a29c9319f76d970e04d85f96a3 (diff) | |
download | rabbitmq-server-8aaca240ce09e25b118f5c943f5edfa894bfacdf.tar.gz |
Cache the actual delegate process name, not the result of process_count.
-rw-r--r-- | src/delegate.erl | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/delegate.erl b/src/delegate.erl index 5907eb09..1bc788f8 100644 --- a/src/delegate.erl +++ b/src/delegate.erl @@ -139,7 +139,20 @@ delegate_per_node(NodePids, FPid, DelegateFun) -> || {Node, Pids} <- NodePids]). server(Node) when is_atom(Node) -> - server(erlang:phash2(self(), process_count(Node))); + case get({delegate_server_name, Node}) of + undefined -> + case rpc:call(Node, delegate, process_count, []) of + {badrpc, _} -> + delegate_process_1; % Have to return something, if we're + % just casting then we don't want to + % blow up + Count -> + Name = server(erlang:phash2(self(), Count)), + put({delegate_server_name, Node}, Name), + Name + end; + Name -> Name + end; server(Hash) -> list_to_atom("delegate_process_" ++ integer_to_list(Hash)). @@ -152,20 +165,6 @@ safe_invoke(FPid, Pid) -> {ok, Result, Pid} end. -process_count(Node) -> - case get({process_count, Node}) of - undefined -> - case rpc:call(Node, delegate, process_count, []) of - {badrpc, _} -> - 1; % Have to return something, if we're just casting then - % we don't want to blow up - Count -> - put({process_count, Node}, Count), - Count - end; - Count -> Count - end. - process_count() -> ?DELEGATE_PROCESS_COUNT_MULTIPLIER * erlang:system_info(schedulers). |