You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by dk...@apache.org on 2015/08/04 17:59:25 UTC

[06/10] activemq git commit: https://issues.apache.org/jira/browse/AMQ-5674 - revisit change - use single redelivey delay attribute for both initial and subsequent delays - resolves regression in BrokerRedeliveryTest

https://issues.apache.org/jira/browse/AMQ-5674  - revisit change - use single redelivey delay attribute for both initial and subsequent delays - resolves regression in BrokerRedeliveryTest


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

Branch: refs/heads/activemq-5.11.x
Commit: 6c384c9b79aeb16c48ce98bb04cd99b2939e64d0
Parents: f1f171d
Author: gtully <ga...@gmail.com>
Authored: Fri Apr 3 14:18:55 2015 +0100
Committer: Daniel Kulp <dk...@apache.org>
Committed: Tue Aug 4 08:50:03 2015 -0400

----------------------------------------------------------------------
 .../apache/activemq/broker/util/RedeliveryPlugin.java | 14 ++++----------
 .../java/org/apache/activemq/RedeliveryPolicy.java    |  5 +----
 .../apache/activemq/ra/ActiveMQActivationSpec.java    |  1 +
 .../org/apache/activemq/RedeliveryPolicyTest.java     |  6 +++---
 .../apache/activemq/broker/BrokerRedeliveryTest.java  |  2 +-
 5 files changed, 10 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/6c384c9b/activemq-broker/src/main/java/org/apache/activemq/broker/util/RedeliveryPlugin.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/util/RedeliveryPlugin.java b/activemq-broker/src/main/java/org/apache/activemq/broker/util/RedeliveryPlugin.java
index 5a90753..f270744 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/util/RedeliveryPlugin.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/util/RedeliveryPlugin.java
@@ -140,9 +140,10 @@ public class RedeliveryPlugin extends BrokerPluginSupport {
                     int redeliveryCount = messageReference.getRedeliveryCounter();
                     if (RedeliveryPolicy.NO_MAXIMUM_REDELIVERIES == maximumRedeliveries || redeliveryCount < maximumRedeliveries) {
 
-                        long delay = ( redeliveryCount == 0 ?
-                                redeliveryPolicy.getInitialRedeliveryDelay() :
-                                redeliveryPolicy.getNextRedeliveryDelay(getExistingDelay(messageReference)));
+                        long delay = redeliveryPolicy.getInitialRedeliveryDelay();
+                        for (int i = 0; i < redeliveryCount; i++) {
+                            delay = redeliveryPolicy.getNextRedeliveryDelay(delay);
+                        }
 
                         scheduleRedelivery(context, messageReference, delay, ++redeliveryCount);
                     } else if (isSendToDlqIfMaxRetriesExceeded()) {
@@ -199,11 +200,4 @@ public class RedeliveryPlugin extends BrokerPluginSupport {
         }
     }
 
-    private int getExistingDelay(MessageReference messageReference) throws IOException {
-        Object val = messageReference.getMessage().getProperty(REDELIVERY_DELAY);
-        if (val instanceof Long) {
-            return ((Long)val).intValue();
-        }
-        return 0;
-    }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/6c384c9b/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java b/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java
index e0a8f33..91f2b71 100644
--- a/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java
+++ b/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java
@@ -98,10 +98,7 @@ public class RedeliveryPolicy extends DestinationMapEntry implements Cloneable,
     }
 
     public long getNextRedeliveryDelay(long previousDelay) {
-        long nextDelay = initialRedeliveryDelay;
-        if (nextDelay == 0) {
-            nextDelay = redeliveryDelay;
-        }
+        long nextDelay = redeliveryDelay;
 
         if (previousDelay > 0 && useExponentialBackOff && backOffMultiplier > 1) {
             nextDelay = (long) (previousDelay * backOffMultiplier);

http://git-wip-us.apache.org/repos/asf/activemq/blob/6c384c9b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java
----------------------------------------------------------------------
diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java
index c17f7f0..0c1440b 100644
--- a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java
+++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java
@@ -639,6 +639,7 @@ public class ActiveMQActivationSpec implements MessageActivationSpec, Serializab
      */
     public void setInitialRedeliveryDelay(long initialRedeliveryDelay) {
         lazyCreateRedeliveryPolicy().setInitialRedeliveryDelay(initialRedeliveryDelay);
+        redeliveryPolicy.setRedeliveryDelay(initialRedeliveryDelay);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/activemq/blob/6c384c9b/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
index 1f8f687..b7a870a 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java
@@ -75,11 +75,11 @@ public class RedeliveryPolicyTest extends JmsTestSupport {
         policy.setInitialRedeliveryDelay(500);
 
         long delay = policy.getNextRedeliveryDelay(500);
-        assertEquals(500, delay);
+        assertEquals(1000, delay);
         delay = policy.getNextRedeliveryDelay(delay);
-        assertEquals(500, delay);
+        assertEquals(1000, delay);
         delay = policy.getNextRedeliveryDelay(delay);
-        assertEquals(500, delay);
+        assertEquals(1000, delay);
 
     }
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/6c384c9b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerRedeliveryTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerRedeliveryTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerRedeliveryTest.java
index 1fc7a6a..4320ade 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerRedeliveryTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/BrokerRedeliveryTest.java
@@ -81,7 +81,7 @@ public class BrokerRedeliveryTest extends org.apache.activemq.TestSupport {
             LOG.info("got: " + brokerRedeliveryMessage);
             assertNotNull("got message via broker redelivery after delay", brokerRedeliveryMessage);
             assertEquals("message matches", message.getStringProperty("data"), brokerRedeliveryMessage.getStringProperty("data"));
-            assertEquals("has expiryDelay specified", i == 0 ? initialRedeliveryDelayMillis : redeliveryDelayMillis, brokerRedeliveryMessage.getLongProperty(RedeliveryPlugin.REDELIVERY_DELAY));
+            assertEquals("has expiryDelay specified - iteration:" + i, i == 0 ? initialRedeliveryDelayMillis : redeliveryDelayMillis, brokerRedeliveryMessage.getLongProperty(RedeliveryPlugin.REDELIVERY_DELAY));
 
             consumerSession.rollback();
         }