diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2012-02-12 16:53:17 +0000 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2012-02-12 16:53:17 +0000 |
| commit | d8d0420bbecd508ad00655b38fa671b3c9ebea09 (patch) | |
| tree | 3724aada612e50613fc1fc0f102d3f8ec2d86d12 /src | |
| parent | 92eb78e23ddad3a10aba4120cf41e759530c3560 (diff) | |
| download | rabbitmq-server-git-d8d0420bbecd508ad00655b38fa671b3c9ebea09.tar.gz | |
don't hang if purging an empty queue with dlx
The queue.delete case had already been handled.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index c64b4877e8..d5d68c7aa0 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -1260,8 +1260,12 @@ handle_call(purge, From, State = #q{backing_queue = BQ, fun (_) -> true end, mk_dead_letter_fun(queue_purged, State), BQS), - noreply(State#q{backing_queue_state = BQS1, - blocked_op = {purge, {From, BQ:len(BQS)}}}); + case BQ:len(BQS) of + 0 -> reply({ok, 0}, State#q{backing_queue_state = BQS1}); + _ -> noreply( + State#q{backing_queue_state = BQS1, + blocked_op = {purge, {From, BQ:len(BQS)}}}) + end; handle_call({requeue, AckTags, ChPid}, From, State) -> gen_server2:reply(From, ok), |
