You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2013/03/21 19:53:52 UTC
svn commit: r1459469 -
/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
Author: liyin
Date: Thu Mar 21 18:53:51 2013
New Revision: 1459469
URL: http://svn.apache.org/r1459469
Log:
[0.89-fb] [HBASE-5783] Fix a possible ConcurrentModificationException
Author: aaiyer
Summary: Fix possible ConcurrentModificationException
Test Plan: unit tests
Reviewers: adela, liyintang
Reviewed By: adela
CC: hbase-eng@, manukranthk
Differential Revision: https://phabricator.fb.com/D719424
Modified:
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java?rev=1459469&r1=1459468&r2=1459469&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java Thu Mar 21 18:53:51 2013
@@ -32,6 +32,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -2818,12 +2819,13 @@ public class HConnectionManager {
Map<HRegionInfo, Long> flushedTSMap =
getRegionFlushTimes(regionsUpdated, options);
- for (Entry<HRegionInfo, Long> entry: targetTSMap.entrySet()) {
+ for (Iterator<Entry<HRegionInfo, Long>> iter = targetTSMap.entrySet().iterator(); iter.hasNext();) {
+ Entry<HRegionInfo, Long> entry = iter.next();
HRegionInfo region = entry.getKey();
long targetTime = entry.getValue().longValue();
long flushedTime = flushedTSMap.get(region).longValue();
if (flushedTime > targetTime) {
- targetTSMap.remove(region);
+ iter.remove();
}
LOG.debug("Region " + region.getEncodedName() + " was flushed at "
+ flushedTime