Repository: hbase Updated Branches: refs/heads/0.98 09fa2dbab -> a2d008a82 refs/heads/branch-1 57f6ff508 -> 62e8cf751
HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects. (Vladimir Rodionov) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/62e8cf75 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/62e8cf75 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/62e8cf75 Branch: refs/heads/branch-1 Commit: 62e8cf751e530db0ff0522bfca58db177a508d00 Parents: 57f6ff5 Author: Lars Hofhansl <la...@apache.org> Authored: Fri Sep 19 11:42:12 2014 -0700 Committer: Lars Hofhansl <la...@apache.org> Committed: Fri Sep 19 11:43:08 2014 -0700 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hbase/regionserver/HRegion.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/62e8cf75/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 89cc5c9..aca8dbc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.Map; import java.util.NavigableMap; import java.util.NavigableSet; +import java.util.RandomAccess; import java.util.Set; import java.util.TreeMap; import java.util.concurrent.Callable; @@ -3096,9 +3097,11 @@ public class HRegion implements HeapSize { // , Writable{ for (Map.Entry<byte[], List<Cell>> e : familyMap.entrySet()) { byte[] family = e.getKey(); List<Cell> cells = e.getValue(); - + assert cells instanceof RandomAccess; Store store = getStore(family); - for (Cell cell: cells) { + int listSize = cells.size(); + for (int i=0; i < listSize; i++) { + Cell cell = cells.get(i); CellUtil.setSequenceId(cell, mvccNum); Pair<Long, Cell> ret = store.add(cell); size += ret.getFirst();