You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2013/08/07 15:38:53 UTC

svn commit: r1511306 - /activemq/trunk/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java

Author: gtully
Date: Wed Aug  7 13:38:53 2013
New Revision: 1511306

URL: http://svn.apache.org/r1511306
Log:
https://issues.apache.org/jira/browse/AMQ-4000 - tracking subscription commands causes a problem with replay outside of activate - can reset a sub ack locations - regression in AMQ2149Test. Fixed by ignoring sub add during recovery replay

Modified:
    activemq/trunk/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java

Modified: activemq/trunk/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java?rev=1511306&r1=1511305&r2=1511306&view=diff
==============================================================================
--- activemq/trunk/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java (original)
+++ activemq/trunk/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java Wed Aug  7 13:38:53 2013
@@ -1014,6 +1014,14 @@ public abstract class MessageDatabase ex
      */
     void process(JournalCommand<?> data, final Location location, final Location inDoubtlocation) throws IOException {
         if (inDoubtlocation != null && location.compareTo(inDoubtlocation) >= 0) {
+            if (data instanceof KahaSubscriptionCommand) {
+                KahaSubscriptionCommand kahaSubscriptionCommand = (KahaSubscriptionCommand)data;
+                if (kahaSubscriptionCommand.hasSubscriptionInfo()) {
+                    // needs to be processed via activate and will be replayed on reconnect
+                    LOG.debug("ignoring add sub command during recovery replay:" + data);
+                    return;
+                }
+            }
             process(data, location, (Runnable) null, (Runnable) null);
         } else {
             // just recover producer audit