HBASE-10633. StoreFileRefresherChore throws ConcurrentModificationException sometimes
git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/hbase-10070@1572808 13f79535-47bb-0310-9956-ffa450edef68 Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/aed02168 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/aed02168 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/aed02168 Branch: refs/heads/master Commit: aed0216810bcc384a619e31bcbf3c7e70adb40f9 Parents: c997c33 Author: Devaraj Das <[email protected]> Authored: Fri Feb 28 02:48:17 2014 +0000 Committer: Enis Soztutar <[email protected]> Committed: Fri Jun 27 16:39:37 2014 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/regionserver/StorefileRefresherChore.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/aed02168/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java index aeec21f..ab8af7d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.regionserver; import java.io.IOException; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import org.apache.commons.logging.Log; @@ -104,9 +105,11 @@ public class StorefileRefresherChore extends Chore { } // remove closed regions - for (String encodedName : lastRefreshTimes.keySet()) { + Iterator<String> lastRefreshTimesIter = lastRefreshTimes.keySet().iterator(); + while (lastRefreshTimesIter.hasNext()) { + String encodedName = lastRefreshTimesIter.next(); if (regionServer.getFromOnlineRegions(encodedName) == null) { - lastRefreshTimes.remove(encodedName); + lastRefreshTimesIter.remove(); } } }
