summaryrefslogtreecommitdiff
path: root/src/delegate.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@lshift.net>2010-04-12 13:41:01 +0100
committerSimon MacMullen <simon@lshift.net>2010-04-12 13:41:01 +0100
commit1bc29585c63c95708a7bc11fdb9a4b0ee3f3387d (patch)
tree595419dc63ec150ad575698909789e8ac0333ca6 /src/delegate.erl
parentb77ef427b978d2a1ccb78f619bab0e8176edef78 (diff)
downloadrabbitmq-server-1bc29585c63c95708a7bc11fdb9a4b0ee3f3387d.tar.gz
Remove upmap that was causing tests to fail, remove "optimisation" as it's not doing the optimisation we wanted.
Diffstat (limited to 'src/delegate.erl')
-rw-r--r--src/delegate.erl19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/delegate.erl b/src/delegate.erl
index 98075428..a8d4ab31 100644
--- a/src/delegate.erl
+++ b/src/delegate.erl
@@ -52,12 +52,12 @@ start_link(Hash) ->
?MODULE, [], []).
delegate_gs2_call(Pid, Msg, Timeout) ->
- {Status, Res} =
+ {_Status, Res} =
delegate_call(Pid, fun(P) -> gen_server2:call(P, Msg, Timeout) end),
Res.
delegate_gs2_pcall(Pid, Pri, Msg, Timeout) ->
- {Status, Res} =
+ {_Status, Res} =
delegate_call(Pid,
fun(P) -> gen_server2:pcall(P, Pri, Msg, Timeout) end),
Res.
@@ -69,6 +69,8 @@ delegate_gs2_pcast(Pid, Pri, Msg) ->
delegate_cast(Pid, fun(P) -> gen_server2:pcast(P, Pri, Msg) end).
+% TODO reimplement the single-node optimisation
+
delegate_call(Node, Thunk) when is_atom(Node) ->
gen_server2:call({server(), Node}, {thunk, Thunk}, infinity);
@@ -112,18 +114,9 @@ f_pid_node(DelegateFun, FPid) ->
DelegateFun(Node, fun() -> FPid(Pid) end)
end.
-% TODO this only gets called when we are ONLY talking to the local node - can
-% we improve this?
-delegate_per_node([{Node, Pids}], FPidNode) when Node == node() ->
- % optimisation
- [[add_pid(FPidNode(Pid, Node), Pid) || Pid <- Pids]];
-
delegate_per_node(NodePids, FPidNode) ->
- rabbit_misc:upmap(
- fun ({Node, Pids}) ->
- [add_pid(FPidNode(Pid, Node), Pid) || Pid <- Pids]
- end,
- NodePids).
+ [[add_pid(FPidNode(Pid, Node), Pid) || Pid <- Pids] ||
+ {Node, Pids} <- NodePids].
add_pid({Status, Result}, Pid) -> {Status, Result, Pid};
add_pid(Status, Pid) -> {Status, Pid}.