hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From apurt...@apache.org
Subject [1/3] git commit: Amend HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects; More cases (Vladimir Rodionov)
Date Tue, 23 Sep 2014 21:06:04 GMT
Repository: hbase
Updated Branches:
  refs/heads/0.98 0033b9a00 -> 3897a02a1
  refs/heads/branch-1 3d898fe16 -> c90383bf8
  refs/heads/master e06b4bcf3 -> 83c2de257


Amend HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects; More
cases (Vladimir Rodionov)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/83c2de25
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/83c2de25
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/83c2de25

Branch: refs/heads/master
Commit: 83c2de2575dbbecbe4530af36a34218786cdd7e8
Parents: e06b4bc
Author: Andrew Purtell <apurtell@apache.org>
Authored: Tue Sep 23 13:12:05 2014 -0700
Committer: Andrew Purtell <apurtell@apache.org>
Committed: Tue Sep 23 13:14:16 2014 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/regionserver/HRegion.java      | 27 +++++++++++++++-----
 1 file changed, 21 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/83c2de25/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 94cc5b2..1b74cab 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
@@ -2181,9 +2181,12 @@ public class HRegion implements HeapSize { // , Writable{
 
       byte[] family = e.getKey();
       List<Cell> cells = e.getValue();
-      Map<byte[], Integer> kvCount = new TreeMap<byte[], Integer>(Bytes.BYTES_COMPARATOR);
+      assert cells instanceof RandomAccess;
 
-      for (Cell cell: cells) {
+      Map<byte[], Integer> kvCount = new TreeMap<byte[], Integer>(Bytes.BYTES_COMPARATOR);
+      int listSize = cells.size();
+      for (int i=0; i < listSize; i++) {
+        Cell cell = cells.get(i);
         KeyValue kv = KeyValueUtil.ensureKeyValue(cell);
         //  Check if time is LATEST, change to time of most recent addition if so
         //  This is expensive.
@@ -3005,7 +3008,10 @@ public class HRegion implements HeapSize { // , Writable{
   void updateKVTimestamps(final Iterable<List<Cell>> keyLists, final byte[] now)
{
     for (List<Cell> cells: keyLists) {
       if (cells == null) continue;
-      for (Cell cell : cells) {
+      assert cells instanceof RandomAccess;
+      int listSize = cells.size();
+      for (int i=0; i < listSize; i++) {
+        Cell cell = cells.get(i);
         KeyValue kv = KeyValueUtil.ensureKeyValue(cell);
         kv.updateLatestStamp(now);
       }
@@ -3166,7 +3172,10 @@ public class HRegion implements HeapSize { // , Writable{
     }
     long maxTs = now + timestampSlop;
     for (List<Cell> kvs : familyMap.values()) {
-      for (Cell cell : kvs) {
+      assert kvs instanceof RandomAccess;
+      int listSize  = kvs.size();
+      for (int i=0; i < listSize; i++) {
+        Cell cell = kvs.get(i);
         // see if the user-side TS is out of range. latest = server-side
         long ts = cell.getTimestamp();
         if (ts != HConstants.LATEST_TIMESTAMP && ts > maxTs) {
@@ -3186,7 +3195,10 @@ public class HRegion implements HeapSize { // , Writable{
   private void addFamilyMapToWALEdit(Map<byte[], List<Cell>> familyMap,
       WALEdit walEdit) {
     for (List<Cell> edits : familyMap.values()) {
-      for (Cell cell : edits) {
+      assert edits instanceof RandomAccess;
+      int listSize = edits.size();
+      for (int i=0; i < listSize; i++) {
+        Cell cell = edits.get(i);
         walEdit.add(cell);
       }
     }
@@ -6060,7 +6072,10 @@ public class HRegion implements HeapSize { // , Writable{
 
     long mutationSize = 0;
     for (List<Cell> cells: familyMap.values()) {
-      for (Cell cell : cells) {
+      assert cells instanceof RandomAccess;
+      int listSize = cells.size();
+      for (int i=0; i < listSize; i++) {
+        Cell cell = cells.get(i);
         // TODO we need include tags length also here.
         mutationSize += KeyValueUtil.keyLength(cell) + cell.getValueLength();
       }


Mime
View raw message