diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_fifo.erl | 3 | ||||
| -rw-r--r-- | src/rabbit_fifo_client.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_quorum_queue.erl | 5 |
3 files changed, 10 insertions, 0 deletions
diff --git a/src/rabbit_fifo.erl b/src/rabbit_fifo.erl index 68337adcaa..0f77c2726f 100644 --- a/src/rabbit_fifo.erl +++ b/src/rabbit_fifo.erl @@ -263,6 +263,9 @@ apply(Meta, #credit{credit = NewCredit, delivery_count = RemoteDelCnt, %% credit for unknown consumer - just ignore {State0, ok} end; +apply(_, #checkout{spec = {dequeue, _}}, + #?MODULE{cfg = #cfg{consumer_strategy = single_active}} = State0) -> + {State0, {error, unsupported}}; apply(#{from := From} = Meta, #checkout{spec = {dequeue, Settlement}, meta = ConsumerMeta, consumer_id = ConsumerId}, diff --git a/src/rabbit_fifo_client.erl b/src/rabbit_fifo_client.erl index c85dd7266a..c6af9bf10d 100644 --- a/src/rabbit_fifo_client.erl +++ b/src/rabbit_fifo_client.erl @@ -199,6 +199,8 @@ dequeue(ConsumerTag, Settlement, #state{timeout = Timeout} = State0) -> {ok, empty, State0#state{leader = Leader}}; {ok, {dequeue, Msg, NumReady}, Leader} -> {ok, {Msg, NumReady}, State0#state{leader = Leader}}; + {ok, {error, _} = Err, _Leader} -> + Err; Err -> Err end. diff --git a/src/rabbit_quorum_queue.erl b/src/rabbit_quorum_queue.erl index 75857f81a8..d15e17b00b 100644 --- a/src/rabbit_quorum_queue.erl +++ b/src/rabbit_quorum_queue.erl @@ -482,6 +482,11 @@ basic_get(Q, NoAck, CTag0, QState0) when ?amqqueue_is_quorum(Q) -> IsDelivered = Count > 0, Msg = rabbit_basic:add_header(<<"x-delivery-count">>, long, Count, Msg0), {ok, MsgsReady, {QName, Id, MsgId, IsDelivered, Msg}, QState}; + {error, unsupported} -> + rabbit_misc:protocol_error( + resource_locked, + "cannot obtain access to locked ~s. basic.get operations are not supported by quorum queues with single active consumer", + [rabbit_misc:rs(QName)]); {error, _} = Err -> Err; {timeout, _} -> |
