diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-09-15 17:39:32 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-09-15 17:39:32 +0100 |
commit | 1c8ce790c0168d1b3409872757964b3d9beafbc6 (patch) | |
tree | e0b7d283e5fed3c4065a239e93304a70a4ee8c7c | |
parent | 181fc1d53b4219f1171ffd657dcbc415870f3210 (diff) | |
download | rabbitmq-server-bug26151.tar.gz |
Delete a bit of complicated code.bug26151
-rw-r--r-- | src/rabbit_amqqueue.erl | 40 |
1 files changed, 7 insertions, 33 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index e3833e7c..7cf15e70 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -539,8 +539,11 @@ info_keys() -> rabbit_amqqueue_process:info_keys(). map(Qs, F) -> rabbit_misc:filter_exit_map(F, Qs). +info(Q = #amqqueue{ state = crashed }) -> info_down(Q, crashed); info(#amqqueue{ pid = QPid }) -> delegate:call(QPid, info). +info(Q = #amqqueue{ state = crashed }, Items) -> + info_down(Q, Items, crashed); info(#amqqueue{ pid = QPid }, Items) -> case delegate:call(QPid, {info, Items}) of {ok, Res} -> Res; @@ -567,41 +570,12 @@ i_down(K, _Q, _DownReason) -> end. info_all(VHostPath) -> - map_with_crashed(fun (Q) -> info(Q) end, - fun (Q) -> info_down(Q, crashed) end, - list(VHostPath)) ++ - [info_down(Q, down) || Q <- list_down(VHostPath)]. + map(list(VHostPath), fun (Q) -> info(Q) end) ++ + map(list_down(VHostPath), fun (Q) -> info_down(Q, down) end). info_all(VHostPath, Items) -> - map_with_crashed(fun (Q) -> info(Q, Items) end, - fun (Q) -> info_down(Q, Items, crashed) end, - list(VHostPath)) ++ - [info_down(Q, Items, down) || Q <- list_down(VHostPath)]. - -map_with_crashed(F, FCrashed, Qs) -> - {Bad, Good} = lists:partition( - fun ({failed, _, _}) -> true; - (_) -> false - end, - [rabbit_misc:with_exit_handler( - fun () -> {failed, QPid, Name} end, - fun () -> F(Q) end) || - Q = #amqqueue{pid = QPid, name = Name} <- Qs]), - Qs2 = lookup([N || {failed, _, N} <- Bad]), - Good ++ [FCrashed(Q) || Q <- filter_crashed(Bad, Qs2, [])]. - -filter_crashed([], [], Acc) -> Acc; -%% The queue is still there with same pid -> crashed -filter_crashed([{failed, QPid, Name} | Rest], - [Q = #amqqueue{pid = QPid, name = Name} | Qs], Acc) -> - filter_crashed(Rest, Qs, [Q | Acc]); -%% The queue is still there with different pid -> recovered -filter_crashed([{failed, _QPid, Name} | Rest], - [#amqqueue{name = Name} | Qs], Acc) -> - filter_crashed(Rest, Qs, Acc); -%% The queue is not there -> deleted -filter_crashed([{failed, _QPid, _Name} | Rest], Qs, Acc) -> - filter_crashed(Rest, Qs, Acc). + map(list(VHostPath), fun (Q) -> info(Q, Items) end) ++ + map(list_down(VHostPath), fun (Q) -> info_down(Q, Items, down) end). force_event_refresh(Ref) -> [gen_server2:cast(Q#amqqueue.pid, |