diff options
author | Tim Watson <tim@rabbitmq.com> | 2013-05-10 13:35:22 +0100 |
---|---|---|
committer | Tim Watson <tim@rabbitmq.com> | 2013-05-10 13:35:22 +0100 |
commit | 3c5bcf94c52115ca9e49b98fabe16974abafb7d9 (patch) | |
tree | d6c50f87a3695c1f0a028ec6b3527ec85a8a1ee7 | |
parent | 11588542af291e50d8633bf775a9b30e8a27d9f5 (diff) | |
parent | ae0dbc9500599cad81fd4e1bf9c51396c6e2b1a2 (diff) | |
download | rabbitmq-server-3c5bcf94c52115ca9e49b98fabe16974abafb7d9.tar.gz |
merge bug25546 into stable
-rw-r--r-- | src/rabbit_channel.erl | 2 | ||||
-rw-r--r-- | src/rabbit_limiter.erl | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index 52c6140e..37041d34 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -841,6 +841,8 @@ handle_method(#'basic.qos'{prefetch_count = 0}, _, handle_method(#'basic.qos'{prefetch_count = PrefetchCount}, _, State = #ch{limiter = Limiter, unacked_message_q = UAMQ}) -> + %% TODO queue:len(UAMQ) is not strictly right since that counts + %% unacked messages from basic.get too. Pretty obscure though. Limiter1 = rabbit_limiter:limit_prefetch(Limiter, PrefetchCount, queue:len(UAMQ)), {reply, #'basic.qos_ok'{}, diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl index d9f1170e..1e32f95a 100644 --- a/src/rabbit_limiter.erl +++ b/src/rabbit_limiter.erl @@ -324,12 +324,12 @@ prioritise_call(_Msg, _From, _Len, _State) -> 0. handle_call({new, ChPid}, _From, State = #lim{ch_pid = undefined}) -> {reply, ok, State#lim{ch_pid = ChPid}}; -handle_call({limit_prefetch, PrefetchCount, UnackedCount}, _From, State) -> - %% assertion - true = State#lim.prefetch_count == 0 orelse - State#lim.volume == UnackedCount, +handle_call({limit_prefetch, PrefetchCount, UnackedCount}, _From, + State = #lim{prefetch_count = 0}) -> {reply, ok, maybe_notify(State, State#lim{prefetch_count = PrefetchCount, volume = UnackedCount})}; +handle_call({limit_prefetch, PrefetchCount, _UnackedCount}, _From, State) -> + {reply, ok, maybe_notify(State, State#lim{prefetch_count = PrefetchCount})}; handle_call(unlimit_prefetch, _From, State) -> {reply, ok, maybe_notify(State, State#lim{prefetch_count = 0, |