From dfed0e3b50a1124c603293cd60155e516b01c513 Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Thu, 29 Apr 2021 17:10:55 -0700 Subject: [PATCH] Adding guardrails for duplicate shard responses --- .../kinesis/clientlibrary/proxies/KinesisProxy.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java b/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java index 3c890ed4..4ad2c508 100644 --- a/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java +++ b/src/main/java/com/amazonaws/services/kinesis/clientlibrary/proxies/KinesisProxy.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.EnumSet; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -485,10 +486,11 @@ public class KinesisProxy implements IKinesisProxyExtended { } } while (response.getStreamDescription().isHasMoreShards()); } - this.cachedShardMap = shards.stream().collect(Collectors.toMap(Shard::getShardId, Function.identity())); + final List dedupedShards = new ArrayList<>(new LinkedHashSet<>(shards)); + this.cachedShardMap = dedupedShards.stream().collect(Collectors.toMap(Shard::getShardId, Function.identity())); this.lastCacheUpdateTime = Instant.now(); - return shards; + return dedupedShards; } /**