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();
       }
     }
   }

Reply via email to