This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch 2.19.x
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit 151b59b42598cb4743c75c8ce66e37984d069a49
Author: franz1981 <[email protected]>
AuthorDate: Tue Nov 16 10:11:13 2021 +0100

    ARTEMIS-3578 Save SimpleString duplication and long[] allocation while 
moving Core messages
    
    (cherry picked from commit 7e6373d4dfa87b1fce690a1387c8eb9edce3af3b)
---
 .../apache/activemq/artemis/api/core/Message.java  |  9 +++++----
 .../protocol/amqp/broker/AMQPLargeMessage.java     |  3 ++-
 .../protocol/amqp/converter/TestConversions.java   |  4 ++--
 .../impl/journal/LargeServerMessageImpl.java       |  3 ++-
 .../artemis/core/server/impl/DivertImpl.java       |  2 +-
 .../artemis/core/server/impl/QueueImpl.java        | 23 +++++++++-------------
 6 files changed, 21 insertions(+), 23 deletions(-)

diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
index bef0fa4..034d23a 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
@@ -468,12 +468,13 @@ public interface Message {
       // only valid probably on AMQP
    }
 
-   default void referenceOriginalMessage(final Message original, String 
originalQueue) {
+   default void referenceOriginalMessage(final Message original, final 
SimpleString originalQueue) {
       setBrokerProperty(Message.HDR_ORIGINAL_QUEUE, originalQueue);
-      setBrokerProperty(Message.HDR_ORIGINAL_ADDRESS, original.getAddress());
+      setBrokerProperty(Message.HDR_ORIGINAL_ADDRESS, 
original.getAddressSimpleString());
       setBrokerProperty(Message.HDR_ORIG_MESSAGE_ID, original.getMessageID());
-      if (original.getRoutingType() != null) {
-         setBrokerProperty(Message.HDR_ORIG_ROUTING_TYPE, 
original.getRoutingType().getType());
+      final RoutingType routingType = original.getRoutingType();
+      if (routingType != null) {
+         setBrokerProperty(Message.HDR_ORIG_ROUTING_TYPE, 
routingType.getType());
       }
 
       // reset expiry
diff --git 
a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java
 
b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java
index 1026eeb..b921574 100644
--- 
a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java
+++ 
b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java
@@ -27,6 +27,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.ActiveMQException;
 import org.apache.activemq.artemis.api.core.ICoreMessage;
 import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper;
 import org.apache.activemq.artemis.core.io.SequentialFile;
 import org.apache.activemq.artemis.core.message.LargeBodyReader;
@@ -643,7 +644,7 @@ public class AMQPLargeMessage extends AMQPMessage 
implements LargeServerMessage
    }
 
    @Override
-   public void referenceOriginalMessage(final Message original, String 
originalQueue) {
+   public void referenceOriginalMessage(final Message original, final 
SimpleString originalQueue) {
 
       super.referenceOriginalMessage(original, originalQueue);
 
diff --git 
a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
 
b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
index a2fd675..90c2281 100644
--- 
a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
+++ 
b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
@@ -499,9 +499,9 @@ public class TestConversions extends Assert {
       for (int i = 0; i < 100; i++) {
          encodedMessage.setMessageID(333L);
          if (i % 3 == 0) {
-            encodedMessage.referenceOriginalMessage(encodedMessage, 
"SOME-OTHER-QUEUE-DOES-NOT-MATTER-WHAT");
+            encodedMessage.referenceOriginalMessage(encodedMessage, 
SimpleString.toSimpleString("SOME-OTHER-QUEUE-DOES-NOT-MATTER-WHAT"));
          } else {
-            encodedMessage.referenceOriginalMessage(encodedMessage, "XXX");
+            encodedMessage.referenceOriginalMessage(encodedMessage, 
SimpleString.toSimpleString("XXX"));
          }
          encodedMessage.putStringProperty("another " + i, "value " + i);
          encodedMessage.messageChanged();
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/LargeServerMessageImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/LargeServerMessageImpl.java
index 6c7d3b7..e22e889 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/LargeServerMessageImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/LargeServerMessageImpl.java
@@ -20,6 +20,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.ActiveMQException;
 import org.apache.activemq.artemis.api.core.ICoreMessage;
 import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.core.io.SequentialFile;
 import org.apache.activemq.artemis.core.message.LargeBodyReader;
 import org.apache.activemq.artemis.core.message.impl.CoreMessage;
@@ -267,7 +268,7 @@ public final class LargeServerMessageImpl extends 
CoreMessage implements CoreLar
    }
 
    @Override
-   public void referenceOriginalMessage(final Message original, String 
originalQueue) {
+   public void referenceOriginalMessage(final Message original, final 
SimpleString originalQueue) {
 
       super.referenceOriginalMessage(original, originalQueue);
 
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/DivertImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/DivertImpl.java
index 6831f17..907ea99 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/DivertImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/DivertImpl.java
@@ -105,7 +105,7 @@ public class DivertImpl implements Divert {
          copy = message.copy(id);
 
          // This will set the original MessageId, and the original address
-         copy.referenceOriginalMessage(message, 
this.getUniqueName().toString());
+         copy.referenceOriginalMessage(message, this.getUniqueName());
 
          copy.setAddress(forwardAddress);
 
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 99157b1..991b8c2 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
@@ -2709,11 +2709,7 @@ public class QueueImpl extends CriticalComponentImpl 
implements Queue {
                   }
                }
 
-               if (targetQueue != null) {
-                  move(SimpleString.toSimpleString(originalMessageAddress), 
tx, ref, false, false, targetQueue.longValue());
-               } else {
-                  move(SimpleString.toSimpleString(originalMessageAddress), 
tx, ref, false, false);
-               }
+               move(SimpleString.toSimpleString(originalMessageAddress), tx, 
ref, false, false, targetQueue);
 
                return true;
             }
@@ -3386,7 +3382,7 @@ public class QueueImpl extends CriticalComponentImpl 
implements Queue {
                      final MessageReference ref,
                      final boolean expiry,
                      final boolean rejectDuplicate,
-                     final long... queueIDs) throws Exception {
+                     final Long queueID) throws Exception {
       Message copyMessage = makeCopy(ref, expiry, toAddress);
 
       Object originalRoutingType = 
ref.getMessage().getBrokerProperty(Message.HDR_ORIG_ROUTING_TYPE);
@@ -3394,12 +3390,11 @@ public class QueueImpl extends CriticalComponentImpl 
implements Queue {
          copyMessage.setRoutingType(RoutingType.getType((Byte) 
originalRoutingType));
       }
 
-      if (queueIDs != null && queueIDs.length > 0) {
-         ByteBuffer buffer = ByteBuffer.allocate(8 * queueIDs.length);
-         for (long id : queueIDs) {
-            buffer.putLong(id);
-         }
-         copyMessage.putBytesProperty(Message.HDR_ROUTE_TO_IDS.toString(), 
buffer.array());
+      if (queueID != null) {
+         final byte[] encodedBuffer = new byte[Long.BYTES];
+         ByteBuffer buffer = ByteBuffer.wrap(encodedBuffer);
+         buffer.putLong(0, queueID);
+         copyMessage.putBytesProperty(Message.HDR_ROUTE_TO_IDS.toString(), 
encodedBuffer);
       }
 
       postOffice.route(copyMessage, tx, false, rejectDuplicate);
@@ -3555,7 +3550,7 @@ public class QueueImpl extends CriticalComponentImpl 
implements Queue {
       }
 
       if (copyOriginalHeaders) {
-         copy.referenceOriginalMessage(message, 
ref.getQueue().getName().toString());
+         copy.referenceOriginalMessage(message, ref.getQueue().getName());
       }
 
       copy.setExpiration(0);
@@ -3584,7 +3579,7 @@ public class QueueImpl extends CriticalComponentImpl 
implements Queue {
             
ActiveMQServerLogger.LOGGER.errorExpiringReferencesNoBindings(expiryAddress);
             acknowledge(tx, ref, AckReason.EXPIRED, null);
          } else {
-            move(expiryAddress, tx, ref, true, false);
+            move(expiryAddress, tx, ref, true, false, null);
          }
       } else {
          if (!printErrorExpiring) {

Reply via email to