diff options
author | dcorbacho <dparracorbacho@piotal.io> | 2021-04-10 23:32:31 +0200 |
---|---|---|
committer | kjnilsson <knilsson@pivotal.io> | 2021-04-13 16:42:09 +0100 |
commit | 2f1f7c5288d6c4ba9dccafbd769ecad3981bf79a (patch) | |
tree | 62b5be6bb29069fdceee21bad01feadf6512c623 | |
parent | 1c696a3b9e67dbcd96dd4c0c0911384c3373eb36 (diff) | |
download | rabbitmq-server-git-2f1f7c5288d6c4ba9dccafbd769ecad3981bf79a.tar.gz |
Catch exception when remote node is up but rabbit app is stopped
It returns a badarg that crashes the queues API
-rw-r--r-- | deps/rabbit/src/rabbit_stream_queue.erl | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/deps/rabbit/src/rabbit_stream_queue.erl b/deps/rabbit/src/rabbit_stream_queue.erl index 288dc30432..05977c3a58 100644 --- a/deps/rabbit/src/rabbit_stream_queue.erl +++ b/deps/rabbit/src/rabbit_stream_queue.erl @@ -563,14 +563,19 @@ tracking_status(Vhost, QueueName) -> end. readers(QName) -> - Data = osiris_counters:overview(), - Readers = case maps:get({osiris_writer, QName}, Data, not_found) of - not_found -> - maps:get(readers, maps:get({osiris_replica, QName}, Data, #{}), 0); - Map -> - maps:get(readers, Map, 0) - end, - {node(), Readers}. + try + Data = osiris_counters:overview(), + Readers = case maps:get({osiris_writer, QName}, Data, not_found) of + not_found -> + maps:get(readers, maps:get({osiris_replica, QName}, Data, #{}), 0); + Map -> + maps:get(readers, Map, 0) + end, + {node(), Readers} + catch + _:_ -> + {node(), 0} + end. init(Q) when ?is_amqqueue(Q) -> Leader = amqqueue:get_pid(Q), |