ARTEMIS-715 messages could be sent to wrong queue

In rare circumstances MessageProducer can send a message
to wrong queue


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/6b8d5229
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/6b8d5229
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/6b8d5229

Branch: refs/heads/master
Commit: 6b8d52295ec078cd93c968915580614ec7caa1d8
Parents: 1f5f45c
Author: Dmitrii Tikhomirov <dtikh...@redhat.com>
Authored: Mon Sep 19 19:00:21 2016 +0200
Committer: Clebert Suconic <clebertsuco...@apache.org>
Committed: Mon Sep 19 13:49:40 2016 -0400

----------------------------------------------------------------------
 .../artemis/core/client/impl/ClientProducerImpl.java        | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b8d5229/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
----------------------------------------------------------------------
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
index 107df64..baa59f5 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
@@ -266,7 +266,7 @@ public class ClientProducerImpl implements 
ClientProducerInternal {
             largeMessageSend(sendBlocking, msgI, theCredits, handler);
          }
          else {
-            sendRegularMessage(msgI, sendBlocking, theCredits, handler);
+            sendRegularMessage(sendingAddress, msgI, sendBlocking, theCredits, 
handler);
          }
       }
       finally {
@@ -274,7 +274,8 @@ public class ClientProducerImpl implements 
ClientProducerInternal {
       }
    }
 
-   private void sendRegularMessage(final MessageInternal msgI,
+   private void sendRegularMessage(final SimpleString sendingAddress,
+                                   final MessageInternal msgI,
                                    final boolean sendBlocking,
                                    final ClientProducerCredits theCredits,
                                    final SendAcknowledgementHandler handler) 
throws ActiveMQException {
@@ -290,7 +291,7 @@ public class ClientProducerImpl implements 
ClientProducerInternal {
 
       theCredits.acquireCredits(creditSize);
 
-      session.checkDefaultAddress(address);
+      session.checkDefaultAddress(sendingAddress);
 
       sessionContext.sendFullMessage(msgI, sendBlocking, handler, address);
    }
@@ -491,7 +492,7 @@ public class ClientProducerImpl implements 
ClientProducerInternal {
                msgI.putLongProperty(Message.HDR_LARGE_BODY_SIZE, 
deflaterReader.getTotalSize());
 
                msgI.getBodyBuffer().writeBytes(buff, 0, pos);
-               sendRegularMessage(msgI, sendBlocking, credits, handler);
+               sendRegularMessage(msgI.getAddress(), msgI, sendBlocking, 
credits, handler);
                return;
             }
             else {

Reply via email to