From 8be651e13c20b14f823a3eb8ff90237db750c391 Mon Sep 17 00:00:00 2001 From: Matthew Sackman Date: Wed, 5 May 2010 16:42:37 +0100 Subject: Cosmetics --- src/delegate.erl | 13 ++++++------- src/rabbit_amqqueue.erl | 4 ++-- src/rabbit_tests.erl | 3 --- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/delegate.erl b/src/delegate.erl index a264d60c..6e5519b8 100644 --- a/src/delegate.erl +++ b/src/delegate.erl @@ -108,7 +108,7 @@ split_delegate_per_node(Pids) -> orddict:new(), Pids)). invoke_per_node([{Node, Pids}], Fun) when Node == node() -> - local_delegate(Pids, Fun); + safe_invoke(Pids, Fun); invoke_per_node(NodePids, Fun) -> lists:append(delegate_per_node(NodePids, Fun, fun internal_call/2)). @@ -118,14 +118,11 @@ invoke_no_result_per_node([{Node, Pids}], Fun) when Node == node() -> %% I don't think it's a problem unless someone misuses this %% function. Making this *actually* async would be painful as we %% can't spawn at this point or we break effect ordering. - local_delegate(Pids, Fun); + safe_invoke(Pids, Fun); invoke_no_result_per_node(NodePids, Fun) -> delegate_per_node(NodePids, Fun, fun internal_cast/2), ok. -local_delegate(Pids, Fun) -> - [safe_invoke(Fun, Pid) || Pid <- Pids]. - delegate_per_node(NodePids, Fun, DelegateFun) -> Self = self(), %% Note that this is unsafe if the Fun requires reentrancy to the @@ -136,7 +133,7 @@ delegate_per_node(NodePids, Fun, DelegateFun) -> {thunk, fun() -> Self ! {result, DelegateFun( - Node, fun() -> local_delegate(Pids, Fun) end)} + Node, fun() -> safe_invoke(Pids, Fun) end)} end}) || {Node, Pids} <- NodePids], [receive {result, Result} -> Result end || _ <- NodePids]. @@ -168,7 +165,9 @@ remote_server(Node) -> server(Hash) -> list_to_atom("delegate_process_" ++ integer_to_list(Hash)). -safe_invoke(Fun, Pid) -> +safe_invoke(Pids, Fun) when is_list(Pids) -> + [safe_invoke(Pid, Fun) || Pid <- Pids]; +safe_invoke(Pid, Fun) when is_pid(Pid) -> try {ok, Fun(Pid), Pid} catch diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 4a9cf9b4..6eb7237b 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -378,8 +378,8 @@ safe_delegate_call_ok(H, F, Pids) -> fun () -> F(Pid) end) end), case Bad of - [] -> ok; - Errors -> {error, Errors} + [] -> ok; + _ -> {error, Bad} end. delegate_call(Pid, Msg, Timeout) -> diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index 5451e7d1..95ea15c5 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -908,9 +908,7 @@ test_delegates_sync(SecondaryNode) -> RemoteBadPids = spawn_responders(SecondaryNode, Responder, 2), {GoodRes, []} = delegate:invoke(LocalGoodPids ++ RemoteGoodPids, Sender), - true = lists:all(fun ({_, response}) -> true end, GoodRes), - GoodResPids = [Pid || {Pid, _} <- GoodRes], Good = ordsets:from_list(LocalGoodPids ++ RemoteGoodPids), @@ -925,7 +923,6 @@ test_delegates_sync(SecondaryNode) -> passed. - %--------------------------------------------------------------------- control_action(Command, Args) -> control_action(Command, node(), Args). -- cgit v1.2.1