Skip to content

Commit

Permalink
[ISSUE #4384] Remove TimeUnit in nextDelayDuration
Browse files Browse the repository at this point in the history
  • Loading branch information
drpmma authored and zhouxinyu committed Jun 21, 2022
1 parent 96e9e48 commit 388cc21
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,20 +68,18 @@ public String toString() {
* and old index is reconsumeTime + 3
*
* @param reconsumeTimes Message reconsumeTimes {@link org.apache.rocketmq.common.message.MessageExt#getReconsumeTimes}
* @param timeUnit {@link TimeUnit}
* @see <a href="https://github.com/apache/rocketmq/blob/3bddd514646826253a239f95959c14840a87034a/broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java#L210">org.apache.rocketmq.broker.processor.AbstractSendMessageProcessor</a>
* @see <a href="https://github.com/apache/rocketmq/blob/3bddd514646826253a239f95959c14840a87034a/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java#L242">org.apache.rocketmq.store.DefaultMessageStore</a>
*/
@Override
public long nextDelayDuration(int reconsumeTimes, TimeUnit timeUnit) {
public long nextDelayDuration(int reconsumeTimes) {
if (reconsumeTimes < 0) {
reconsumeTimes = 0;
}
int index = reconsumeTimes + 2;
if (index >= next.length) {
index = next.length - 1;
}
long nextDelayDurationInMillis = next[index];
return timeUnit.convert(nextDelayDurationInMillis, TimeUnit.MILLISECONDS);
return next[index];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,13 @@ public String toString() {
}

@Override
public long nextDelayDuration(int reconsumeTimes, TimeUnit timeUnit) {
public long nextDelayDuration(int reconsumeTimes) {
if (reconsumeTimes < 0) {
reconsumeTimes = 0;
}
if (reconsumeTimes > 32) {
reconsumeTimes = 32;
}
long nextDelayDurationInMillis = Math.min(max, initial * (long) Math.pow(multiplier, reconsumeTimes));
return timeUnit.convert(nextDelayDurationInMillis, TimeUnit.MILLISECONDS);
return Math.min(max, initial * (long) Math.pow(multiplier, reconsumeTimes));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,12 @@

package org.apache.rocketmq.common.subscription;

import java.util.concurrent.TimeUnit;

public interface RetryPolicy {
/**
* Compute message's next delay duration by specify reconsumeTimes
*
* @param reconsumeTimes Message reconsumeTimes
* @param timeUnit Given timeUnit
* @return Message's nextDelayDuration in given timeUnit
* @return Message's nextDelayDuration in milliseconds
*/
long nextDelayDuration(int reconsumeTimes, TimeUnit timeUnit);
long nextDelayDuration(int reconsumeTimes);
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,18 @@ public class CustomizedRetryPolicyTest {
@Test
public void testNextDelayDuration() {
CustomizedRetryPolicy customizedRetryPolicy = new CustomizedRetryPolicy();
long actual = customizedRetryPolicy.nextDelayDuration(0, TimeUnit.MILLISECONDS);
long actual = customizedRetryPolicy.nextDelayDuration(0);
assertThat(actual).isEqualTo(TimeUnit.SECONDS.toMillis(10));
actual = customizedRetryPolicy.nextDelayDuration(10, TimeUnit.MILLISECONDS);
actual = customizedRetryPolicy.nextDelayDuration(10);
assertThat(actual).isEqualTo(TimeUnit.MINUTES.toMillis(9));
}

@Test
public void testNextDelayDurationOutOfRange() {
CustomizedRetryPolicy customizedRetryPolicy = new CustomizedRetryPolicy();
long actual = customizedRetryPolicy.nextDelayDuration(-1, TimeUnit.MILLISECONDS);
long actual = customizedRetryPolicy.nextDelayDuration(-1);
assertThat(actual).isEqualTo(TimeUnit.SECONDS.toMillis(10));
actual = customizedRetryPolicy.nextDelayDuration(100, TimeUnit.MILLISECONDS);
actual = customizedRetryPolicy.nextDelayDuration(100);
assertThat(actual).isEqualTo(TimeUnit.HOURS.toMillis(2));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,18 @@ public class ExponentialRetryPolicyTest {
@Test
public void testNextDelayDuration() {
ExponentialRetryPolicy exponentialRetryPolicy = new ExponentialRetryPolicy();
long actual = exponentialRetryPolicy.nextDelayDuration(0, TimeUnit.MILLISECONDS);
long actual = exponentialRetryPolicy.nextDelayDuration(0);
assertThat(actual).isEqualTo(TimeUnit.SECONDS.toMillis(5));
actual = exponentialRetryPolicy.nextDelayDuration(10, TimeUnit.MILLISECONDS);
actual = exponentialRetryPolicy.nextDelayDuration(10);
assertThat(actual).isEqualTo(TimeUnit.SECONDS.toMillis(1024 * 5));
}

@Test
public void testNextDelayDurationOutOfRange() {
ExponentialRetryPolicy exponentialRetryPolicy = new ExponentialRetryPolicy();
long actual = exponentialRetryPolicy.nextDelayDuration(-1, TimeUnit.MILLISECONDS);
long actual = exponentialRetryPolicy.nextDelayDuration(-1);
assertThat(actual).isEqualTo(TimeUnit.SECONDS.toMillis(5));
actual = exponentialRetryPolicy.nextDelayDuration(100, TimeUnit.MILLISECONDS);
actual = exponentialRetryPolicy.nextDelayDuration(100);
assertThat(actual).isEqualTo(TimeUnit.HOURS.toMillis(2));
}
}

0 comments on commit 388cc21

Please sign in to comment.