diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2013-01-31 15:23:50 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2013-01-31 15:23:50 +0000 |
commit | 9720758be509d763cb7497fe22e7e4b40fb373e3 (patch) | |
tree | 5eab0ef9ffde377087c15118c3508683ebe99f28 | |
parent | 39ac6385e1e3b0d215349ec3dc3476eda9432c7d (diff) | |
download | rabbitmq-server-9720758be509d763cb7497fe22e7e4b40fb373e3.tar.gz |
Avoid always going through with_exit_handler/2, since that's what the comment says!
-rw-r--r-- | src/rabbit_limiter.erl | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl index 865c4677..35703efa 100644 --- a/src/rabbit_limiter.erl +++ b/src/rabbit_limiter.erl @@ -104,22 +104,15 @@ limit(Limiter, PrefetchCount) -> %% breaching a limit. Note that we don't use maybe_call here in order %% to avoid always going through with_exit_handler/2, even when the %% limiter is disabled. -can_send(Token, QPid, AckRequired, ChPid, CTag, Len) -> - rabbit_misc:with_exit_handler( - fun () -> true end, - fun () -> can_send0(Token, QPid, AckRequired, ChPid, CTag, Len) end). - -can_send0(Token = #token{pid = Pid, enabled = Enabled, q_state = Credits}, - QPid, AckRequired, ChPid, CTag, Len) -> +can_send(Token = #token{pid = Pid, enabled = Enabled, q_state = Credits}, + QPid, AckReq, ChPid, CTag, Len) -> ConsAllows = case dict:find(CTag, Credits) of {ok, #credit{credit = C}} when C > 0 -> true; {ok, #credit{}} -> false; error -> true end, case ConsAllows of - true -> case not Enabled orelse - gen_server2:call( - Pid, {can_send, QPid, AckRequired}, infinity) of + true -> case not Enabled orelse call_can_send(Pid, QPid, AckReq) of true -> Credits2 = record_send_q( CTag, Len, ChPid, Credits), Token#token{q_state = Credits2}; @@ -128,6 +121,13 @@ can_send0(Token = #token{pid = Pid, enabled = Enabled, q_state = Credits}, false -> consumer_blocked end. +call_can_send(Pid, QPid, AckRequired) -> + rabbit_misc:with_exit_handler( + fun () -> true end, + fun () -> + gen_server2:call(Pid, {can_send, QPid, AckRequired}, infinity) + end). + %% Let the limiter know that the channel has received some acks from a %% consumer ack(Limiter, Count) -> maybe_cast(Limiter, {ack, Count}). |