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 Artem Bilan
parent 42d8faf11e
commit 89e1eb35b9
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

@@ -27,6 +27,7 @@ import org.springframework.messaging.Message;
/**
* @author Dave Syer
* @author Artme Bilan
* @author Peter Uhlenbruck
*/
public class TimeoutCountSequenceSizeReleaseStrategyTests {
@@ -52,6 +53,21 @@ public class TimeoutCountSequenceSizeReleaseStrategyTests {
assertThat(releaseStrategy.canRelease(messages)).isTrue();
}
@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")