Overrode SingleStreamTracker#orphanedInitialPositionInStream() to

match that of the provided `StreamConfig`.
This commit is contained in:
stair 2023-04-23 13:15:09 -04:00
parent eccd6cf2e7
commit ce2604e58e
3 changed files with 32 additions and 2 deletions

View file

@ -27,5 +27,3 @@ public class StreamConfig {
private final InitialPositionInStreamExtended initialPositionInStreamExtended;
private String consumerArn;
}

View file

@ -45,6 +45,14 @@ public class SingleStreamTracker implements StreamTracker {
private final List<StreamConfig> streamConfigs;
/**
* Cached reference to {@link StreamConfig#initialPositionInStreamExtended()}
* to avoid unnecessary getter invocations.
*/
@EqualsAndHashCode.Exclude
@ToString.Exclude
private final InitialPositionInStreamExtended initialPositionInStream;
public SingleStreamTracker(String streamName) {
this(StreamIdentifier.singleStreamInstance(streamName));
}
@ -72,6 +80,7 @@ public class SingleStreamTracker implements StreamTracker {
public SingleStreamTracker(@NonNull StreamIdentifier streamIdentifier, @NonNull StreamConfig streamConfig) {
this.streamIdentifier = streamIdentifier;
this.streamConfigs = Collections.singletonList(streamConfig);
this.initialPositionInStream = streamConfig.initialPositionInStreamExtended();
}
@Override
@ -84,6 +93,11 @@ public class SingleStreamTracker implements StreamTracker {
return NO_LEASE_DELETION;
}
@Override
public InitialPositionInStreamExtended orphanedStreamInitialPositionInStream() {
return initialPositionInStream;
}
@Override
public boolean isMultiStream() {
return false;

View file

@ -15,6 +15,8 @@
package software.amazon.kinesis.processor;
import java.util.Date;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
@ -48,6 +50,22 @@ public class SingleStreamTrackerTest {
validate(tracker, expectedPosition);
}
@Test
public void testConsistencyOfInitialPositionInStream() {
for (final InitialPositionInStream position : InitialPositionInStream.values()) {
final InitialPositionInStreamExtended expectedPosition;
if (position == InitialPositionInStream.AT_TIMESTAMP) {
expectedPosition = InitialPositionInStreamExtended.newInitialPositionAtTimestamp(new Date());
} else {
expectedPosition = InitialPositionInStreamExtended.newInitialPosition(position);
}
final StreamTracker tracker = new SingleStreamTracker(STREAM_NAME, expectedPosition);
assertEquals(expectedPosition, tracker.orphanedStreamInitialPositionInStream());
}
}
private static void validate(StreamTracker tracker) {
validate(tracker, StreamTracker.DEFAULT_POSITION_IN_STREAM);
}