summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Bakken <luke@bakken.io>2023-04-19 13:53:33 -0700
committerLuke Bakken <luke@bakken.io>2023-04-19 13:53:41 -0700
commitb461ae0e652b3112acb0e249b3614ed3d7b032e6 (patch)
tree11881a68160c49ee4a628c9a167053d9950bbe7c
parent0c8b6810cbf01ecb41a3973d5d604c9e01765c77 (diff)
downloadrabbitmq-server-git-b461ae0e652b3112acb0e249b3614ed3d7b032e6.tar.gz
Ensure monitor is started when dequeuing
Fixes #4976
-rw-r--r--deps/rabbit/src/rabbit_classic_queue.erl10
1 files changed, 5 insertions, 5 deletions
diff --git a/deps/rabbit/src/rabbit_classic_queue.erl b/deps/rabbit/src/rabbit_classic_queue.erl
index 98a2e82566..d774cc5120 100644
--- a/deps/rabbit/src/rabbit_classic_queue.erl
+++ b/deps/rabbit/src/rabbit_classic_queue.erl
@@ -354,19 +354,19 @@ deliver(Qs0, #delivery{flow = Flow,
delegate:invoke_no_result(SPids, {gen_server2, cast, [SMsg]}),
{Qs, []}.
-
-spec dequeue(rabbit_amqqueue:name(), NoAck :: boolean(),
LimiterPid :: pid(), rabbit_types:ctag(), state()) ->
{ok, Count :: non_neg_integer(), rabbit_amqqueue:qmsg(), state()} |
{empty, state()}.
-dequeue(_QName, NoAck, LimiterPid, _CTag, State) ->
- QPid = State#?STATE.pid,
+dequeue(QName, NoAck, LimiterPid, _CTag, State0) ->
+ QPid = State0#?STATE.pid,
+ State1 = ensure_monitor(QPid, QName, State0),
case delegate:invoke(QPid, {gen_server2, call,
[{basic_get, self(), NoAck, LimiterPid}, infinity]}) of
empty ->
- {empty, State};
+ {empty, State1};
{ok, Count, Msg} ->
- {ok, Count, Msg, State}
+ {ok, Count, Msg, State1}
end.
-spec state_info(state()) -> #{atom() := term()}.