From 401ba23e19356f3df415a3ba8c81d804161606bc Mon Sep 17 00:00:00 2001 From: Shichao Nie Date: Thu, 22 Aug 2024 15:02:30 +0800 Subject: [PATCH] fix(metadata): fix evict sparse index cache potential endless loop Signed-off-by: Shichao Nie --- .../com/automq/stream/s3/index/LocalStreamRangeIndexCache.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/s3stream/src/main/java/com/automq/stream/s3/index/LocalStreamRangeIndexCache.java b/s3stream/src/main/java/com/automq/stream/s3/index/LocalStreamRangeIndexCache.java index ab620f3f2a..79ac239ee0 100644 --- a/s3stream/src/main/java/com/automq/stream/s3/index/LocalStreamRangeIndexCache.java +++ b/s3stream/src/main/java/com/automq/stream/s3/index/LocalStreamRangeIndexCache.java @@ -236,12 +236,13 @@ private void evictIfNecessary() { if (totalSize <= MAX_INDEX_SIZE) { return; } - boolean evicted = false; + boolean evicted; boolean hasSufficientIndex = true; List> streamRangeIndexList = new ArrayList<>(streamRangeIndexMap.entrySet()); Collections.shuffle(streamRangeIndexList); while (totalSize > MAX_INDEX_SIZE) { // try to evict from each stream in round-robin manner + evicted = false; for (Map.Entry entry : streamRangeIndexList) { long streamId = entry.getKey(); SparseRangeIndex sparseRangeIndex = entry.getValue();