diff --git a/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManagerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManagerTest.java index a2047a6b..0da0f3e9 100644 --- a/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManagerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManagerTest.java @@ -459,7 +459,12 @@ public class PeriodicShardSyncManagerTest { List leases = generateInitialLeases(maxInitialLeaseCount); reshard(leases, 5, ReshardType.ANY, maxInitialLeaseCount, true); Collections.shuffle(leases); - Assert.assertFalse(periodicShardSyncManager.hasHoleInLeases(streamIdentifier, leases).isPresent()); + boolean isHoleInHashRanges = periodicShardSyncManager.hasHoleInLeases(streamIdentifier, leases).isPresent(); + if (isHoleInHashRanges) { + finishInProgressParents(leases); + isHoleInHashRanges = periodicShardSyncManager.hasHoleInLeases(streamIdentifier, leases).isPresent(); + } + Assert.assertFalse(isHoleInHashRanges); } } @@ -569,6 +574,13 @@ public class PeriodicShardSyncManagerTest { return leaseCounter; } + private void finishInProgressParents(List leases) { + leases.stream() + .filter(l -> l.checkpoint() != null && !l.checkpoint().equals(ExtendedSequenceNumber.SHARD_END) && + l.childShardIds() != null && !l.childShardIds().isEmpty()) + .forEach(l -> l.checkpoint(ExtendedSequenceNumber.SHARD_END)); + } + private boolean isHeads() { return Math.random() <= 0.5; }