This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit 0872f749a9087554cd6f721ee226f499fd94246a Author: Clebert Suconic <clebertsuco...@apache.org> AuthorDate: Mon Mar 11 09:33:39 2019 -0400 ARTEMIS-1604 Using default supportDirectDelivery=false This is to avoid races setting it to false on protocols that won't support direct Deliver --- .../apache/activemq/artemis/core/server/impl/QueueImpl.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java index ee76362..92fc9bf 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java @@ -253,7 +253,7 @@ public class QueueImpl extends CriticalComponentImpl implements Queue { private volatile boolean directDeliver = true; - private volatile boolean supportsDirectDeliver = true; + private volatile boolean supportsDirectDeliver = false; private AddressSettingsRepositoryListener addressSettingsRepositoryListener; @@ -1078,8 +1078,12 @@ public class QueueImpl extends CriticalComponentImpl implements Queue { throw ActiveMQMessageBundle.BUNDLE.maxConsumerLimitReachedForQueue(address, name); } - if (!consumer.supportsDirectDelivery()) { - this.supportsDirectDeliver = false; + if (consumers.isEmpty()) { + this.supportsDirectDeliver = consumer.supportsDirectDelivery(); + } else { + if (!consumer.supportsDirectDelivery()) { + this.supportsDirectDeliver = false; + } } cancelRedistributor(); @@ -1158,6 +1162,9 @@ public class QueueImpl extends CriticalComponentImpl implements Queue { } private boolean checkConsumerDirectDeliver() { + if (consumers.isEmpty()) { + return false; + } boolean supports = true; for (ConsumerHolder consumerCheck : consumers) { if (!consumerCheck.consumer.supportsDirectDelivery()) {