diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java index 7d8f09545a..c471cf3125 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java @@ -772,8 +772,8 @@ RecordedConsumer deleteRecordedConsumer(String consumerTag) { } void maybeDeleteRecordedAutoDeleteQueue(String queue) { - synchronized (this.recordedQueues) { - synchronized (this.consumers) { + synchronized (this.consumers) { + synchronized (this.recordedQueues) { if(!hasMoreConsumersOnQueue(this.consumers.values(), queue)) { RecordedQueue q = this.recordedQueues.get(queue); // last consumer on this connection is gone, remove recorded queue @@ -787,8 +787,8 @@ void maybeDeleteRecordedAutoDeleteQueue(String queue) { } void maybeDeleteRecordedAutoDeleteExchange(String exchange) { - synchronized (this.recordedExchanges) { - synchronized (this.consumers) { + synchronized (this.consumers) { + synchronized (this.recordedExchanges) { if(!hasMoreDestinationsBoundToExchange(Utility.copy(this.recordedBindings), exchange)) { RecordedExchange x = this.recordedExchanges.get(exchange); // last binding where this exchange is the source is gone, remove recorded exchange