GH-2999: Fix TimeoutCountSeqSizeReleaseStrategy

Fixes https://github.com/spring-projects/spring-integration/issues/2999

Remove `else` block from `findEarliestTimestamp` causing
the method to return with `Long.MAX_VALUE` if the condition was ever
`false`.

**Cherry-pick to 5.1.x**
This commit is contained in:
Peter Uhlenbruck
2019-07-23 09:33:11 -07:00
committed by Gary Russell
parent 1e38ff7b0e
commit 9ab1fc821f
2 changed files with 17 additions and 3 deletions

View File

@@ -31,6 +31,7 @@ import org.springframework.messaging.Message;
*
* @author Dave Syer
* @author Gary Russell
* @author Peter Uhlenbruck
*
* @since 2.0
*/
@@ -80,9 +81,6 @@ public class TimeoutCountSequenceSizeReleaseStrategy implements ReleaseStrategy
if (timestamp != null && timestamp < result) {
result = timestamp;
}
else {
return Long.MAX_VALUE; // can't release based on time if there is no timestamp
}
}
return result;
}

View File

@@ -28,6 +28,7 @@ import org.springframework.messaging.Message;
/**
* @author Dave Syer
* @author Artme Bilan
* @author Peter Uhlenbruck
*/
public class TimeoutCountSequenceSizeReleaseStrategyTests {
@@ -53,6 +54,21 @@ public class TimeoutCountSequenceSizeReleaseStrategyTests {
assertTrue(releaseStrategy.canRelease(messages));
}
@Test
public void testIncompleteListWithTimeoutForMultipleMessages() {
Message<String> message1 = MessageBuilder.withPayload("test1")
.setSequenceSize(3).build();
Message<String> message2 = MessageBuilder.withPayload("test2")
.setSequenceSize(3).build();
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message1);
messages.add(message2);
TimeoutCountSequenceSizeReleaseStrategy releaseStrategy =
new TimeoutCountSequenceSizeReleaseStrategy(TimeoutCountSequenceSizeReleaseStrategy.DEFAULT_THRESHOLD,
-100);
assertThat(releaseStrategy.canRelease(messages)).isTrue();
}
@Test
public void testIncompleteListWithCount() {
Message<String> message = MessageBuilder.withPayload("test1")