[hornetq-commits] JBoss hornetq SVN: r11283 - branches/one-offs/Hornetq_2_2_5_EAP_JBPAPP_7116/src/main/org/hornetq/core/postoffice/impl.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Sep 1 19:11:31 EDT 2011


Author: clebert.suconic at jboss.com
Date: 2011-09-01 19:11:30 -0400 (Thu, 01 Sep 2011)
New Revision: 11283

Modified:
   branches/one-offs/Hornetq_2_2_5_EAP_JBPAPP_7116/src/main/org/hornetq/core/postoffice/impl/PostOfficeImpl.java
Log:
backporting a fix on cleanup properties (IllegalStateException that could happen on clustering routing)

Modified: branches/one-offs/Hornetq_2_2_5_EAP_JBPAPP_7116/src/main/org/hornetq/core/postoffice/impl/PostOfficeImpl.java
===================================================================
--- branches/one-offs/Hornetq_2_2_5_EAP_JBPAPP_7116/src/main/org/hornetq/core/postoffice/impl/PostOfficeImpl.java	2011-09-01 22:59:45 UTC (rev 11282)
+++ branches/one-offs/Hornetq_2_2_5_EAP_JBPAPP_7116/src/main/org/hornetq/core/postoffice/impl/PostOfficeImpl.java	2011-09-01 23:11:30 UTC (rev 11283)
@@ -18,6 +18,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -812,18 +813,32 @@
     */
    protected void cleanupInternalPropertiesBeforeRouting(final ServerMessage message)
    {
+      LinkedList<SimpleString> valuesToRemove = null;
+
+
       for (SimpleString name : message.getPropertyNames())
       {
          // We use properties to establish routing context on clustering.
          // However if the client resends the message after receiving, it needs to be removed
          if (name.startsWith(MessageImpl.HDR_ROUTE_TO_IDS) && !name.equals(MessageImpl.HDR_ROUTE_TO_IDS))
          {
-            message.removeProperty(name);
+            if (valuesToRemove == null)
+            {
+               valuesToRemove = new LinkedList<SimpleString>();
+            }
+            valuesToRemove.add(name);
          }
       }
+
+      if (valuesToRemove != null)
+      {
+         for (SimpleString removal : valuesToRemove)
+         {
+           message.removeProperty(removal);
+         }
+      }
    }
 
-
    private void setPagingStore(final ServerMessage message) throws Exception
    {
       PagingStore store = pagingManager.getPageStore(message.getAddress());



More information about the hornetq-commits mailing list