diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2014-02-06 20:11:50 +0000 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2014-02-06 20:11:50 +0000 |
commit | 48e5c9cf26169f65118d0b8d1403846811910e07 (patch) | |
tree | 4a15a67ed9d4595272fb0cfc12ce0c2391de62ca | |
parent | e1809536e6c6516f7cbc65be4651e3af3bb2a282 (diff) | |
download | rabbitmq-server-bug26002.tar.gz |
bail on coding bugbug26002
-rw-r--r-- | src/rabbit_amqqueue.erl | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 346d57a8..2b86435d 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -354,14 +354,14 @@ with(Name, F, E) -> {ok, Q = #amqqueue{pid = QPid}} -> %% We check is_process_alive(QPid) in case we receive a %% nodedown (for example) in F() that has nothing to do - %% with the QPid. + %% with the QPid. F() should be written s.t. that this + %% cannot happen, so we bail if it does since that + %% indicates a code bug and we don't want to get stuck in + %% the retry loop. rabbit_misc:with_exit_handler( - fun () -> - case rabbit_misc:is_process_alive(QPid) of - true -> E(not_found_or_absent_dirty(Name)); - false -> timer:sleep(25), - with(Name, F, E) - end + fun () -> false = rabbit_misc:is_process_alive(QPid), + timer:sleep(25), + with(Name, F, E) end, fun () -> F(Q) end); {error, not_found} -> E(not_found_or_absent_dirty(Name)) |