diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/AggregateStatsCache.java b/metastore/src/java/org/apache/hadoop/hive/metastore/AggregateStatsCache.java index 44106f5..65e2c65 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/AggregateStatsCache.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/AggregateStatsCache.java @@ -241,7 +241,8 @@ private AggrColStats findBestMatch(List partNames, List ca // We'll count misses as we iterate int maxMisses = (int) maxVariance * numPartsRequested; for (String partName : partNames) { - for (Map.Entry entry : candidateMatchStats.entrySet()) { + for (Iterator> iterator = candidateMatchStats.entrySet().iterator(); iterator.hasNext();) { + Map.Entry entry = iterator.next(); AggrColStats candidate = entry.getKey(); matchStats = entry.getValue(); if (candidate.getBloomFilter().test(partName.getBytes())) { @@ -252,7 +253,7 @@ private AggrColStats findBestMatch(List partNames, List ca // 2nd pass at removing invalid candidates // If misses so far exceed max tolerable misses if (matchStats.misses > maxMisses) { - candidateMatchStats.remove(candidate); + iterator.remove(); continue; } // Check if this is the best match so far