[33/50] [abbrv] hbase git commit: HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect

2017-04-17 Thread syuanjiang
HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect


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

Branch: refs/heads/hbase-12439
Commit: 3aadc675b0f02c3c13be625b40d72fbf6a844964
Parents: d7ddc79
Author: CHIA-PING TSAI 
Authored: Tue Apr 11 16:31:20 2017 +0800
Committer: Chia-Ping Tsai 
Committed: Wed Apr 12 11:26:43 2017 +0800

--
 .../java/org/apache/hadoop/hbase/util/ClassSize.java |  7 +++
 .../apache/hadoop/hbase/regionserver/Segment.java|  7 ---
 .../org/apache/hadoop/hbase/io/TestHeapSize.java | 15 +--
 3 files changed, 20 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
--
diff --git 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
index 465bd9c..e1690c0 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
@@ -20,6 +20,7 @@
 
 package org.apache.hadoop.hbase.util;
 
+import com.google.common.annotations.VisibleForTesting;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.concurrent.ConcurrentHashMap;
@@ -235,6 +236,12 @@ public class ClassSize {
   }
 
   private static final MemoryLayout memoryLayout = getMemoryLayout();
+  private static final boolean USE_UNSAFE_LAYOUT = (memoryLayout instanceof 
UnsafeLayout);
+
+  @VisibleForTesting
+  public static boolean useUnsafeLayout() {
+return USE_UNSAFE_LAYOUT;
+  }
 
   /**
* Method for reading the arc settings and setting overheads according

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
--
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
index 6f431c9..8f43fa8 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
@@ -48,12 +48,13 @@ import com.google.common.annotations.VisibleForTesting;
 @InterfaceAudience.Private
 public abstract class Segment {
 
-  final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT
-  + 5 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, size, 
timeRangeTracker
+  public final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT
+  + 6 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, dataSize,
+// heapSize, and timeRangeTracker
   + Bytes.SIZEOF_LONG // minSequenceId
   + Bytes.SIZEOF_BOOLEAN); // tagsPresent
   public final static long DEEP_OVERHEAD = FIXED_OVERHEAD + 
ClassSize.ATOMIC_REFERENCE
-  + ClassSize.CELL_SET + ClassSize.ATOMIC_LONG + 
ClassSize.TIMERANGE_TRACKER;
+  + ClassSize.CELL_SET + 2 * ClassSize.ATOMIC_LONG + 
ClassSize.TIMERANGE_TRACKER;
 
   private AtomicReference cellSet= new AtomicReference<>();
   private final CellComparator comparator;

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
--
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
index 6b943a7..bf74a9e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
@@ -344,7 +344,7 @@ public class TestHeapSize  {
 cl = Segment.class;
 actual = Segment.DEEP_OVERHEAD;
 expected = ClassSize.estimateBase(cl, false);
-expected += ClassSize.estimateBase(AtomicLong.class, false);
+expected += 2 * ClassSize.estimateBase(AtomicLong.class, false);
 expected += ClassSize.estimateBase(AtomicReference.class, false);
 expected += ClassSize.estimateBase(CellSet.class, false);
 expected += ClassSize.estimateBase(TimeRangeTracker.class, false);
@@ -361,7 +361,7 @@ public class TestHeapSize  {
 cl = MutableSegment.class;
 actual = MutableSegment.DEEP_OVERHEAD;
 expected = ClassSize.estimateBase(cl, false);
-expected += ClassSize.estimateBase(AtomicLong.class, false);
+ 

hbase git commit: HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect

2017-04-11 Thread chia7712
Repository: hbase
Updated Branches:
  refs/heads/master d7ddc7919 -> 3aadc675b


HBASE-17896 The FIXED_OVERHEAD of Segment is incorrect


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

Branch: refs/heads/master
Commit: 3aadc675b0f02c3c13be625b40d72fbf6a844964
Parents: d7ddc79
Author: CHIA-PING TSAI 
Authored: Tue Apr 11 16:31:20 2017 +0800
Committer: Chia-Ping Tsai 
Committed: Wed Apr 12 11:26:43 2017 +0800

--
 .../java/org/apache/hadoop/hbase/util/ClassSize.java |  7 +++
 .../apache/hadoop/hbase/regionserver/Segment.java|  7 ---
 .../org/apache/hadoop/hbase/io/TestHeapSize.java | 15 +--
 3 files changed, 20 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
--
diff --git 
a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
index 465bd9c..e1690c0 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ClassSize.java
@@ -20,6 +20,7 @@
 
 package org.apache.hadoop.hbase.util;
 
+import com.google.common.annotations.VisibleForTesting;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.concurrent.ConcurrentHashMap;
@@ -235,6 +236,12 @@ public class ClassSize {
   }
 
   private static final MemoryLayout memoryLayout = getMemoryLayout();
+  private static final boolean USE_UNSAFE_LAYOUT = (memoryLayout instanceof 
UnsafeLayout);
+
+  @VisibleForTesting
+  public static boolean useUnsafeLayout() {
+return USE_UNSAFE_LAYOUT;
+  }
 
   /**
* Method for reading the arc settings and setting overheads according

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
--
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
index 6f431c9..8f43fa8 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
@@ -48,12 +48,13 @@ import com.google.common.annotations.VisibleForTesting;
 @InterfaceAudience.Private
 public abstract class Segment {
 
-  final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT
-  + 5 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, size, 
timeRangeTracker
+  public final static long FIXED_OVERHEAD = ClassSize.align(ClassSize.OBJECT
+  + 6 * ClassSize.REFERENCE // cellSet, comparator, memStoreLAB, dataSize,
+// heapSize, and timeRangeTracker
   + Bytes.SIZEOF_LONG // minSequenceId
   + Bytes.SIZEOF_BOOLEAN); // tagsPresent
   public final static long DEEP_OVERHEAD = FIXED_OVERHEAD + 
ClassSize.ATOMIC_REFERENCE
-  + ClassSize.CELL_SET + ClassSize.ATOMIC_LONG + 
ClassSize.TIMERANGE_TRACKER;
+  + ClassSize.CELL_SET + 2 * ClassSize.ATOMIC_LONG + 
ClassSize.TIMERANGE_TRACKER;
 
   private AtomicReference cellSet= new AtomicReference<>();
   private final CellComparator comparator;

http://git-wip-us.apache.org/repos/asf/hbase/blob/3aadc675/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
--
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
index 6b943a7..bf74a9e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java
@@ -344,7 +344,7 @@ public class TestHeapSize  {
 cl = Segment.class;
 actual = Segment.DEEP_OVERHEAD;
 expected = ClassSize.estimateBase(cl, false);
-expected += ClassSize.estimateBase(AtomicLong.class, false);
+expected += 2 * ClassSize.estimateBase(AtomicLong.class, false);
 expected += ClassSize.estimateBase(AtomicReference.class, false);
 expected += ClassSize.estimateBase(CellSet.class, false);
 expected += ClassSize.estimateBase(TimeRangeTracker.class, false);
@@ -361,7 +361,7 @@ public class TestHeapSize  {
 cl = MutableSegment.class;
 actual = MutableSegment.DEEP_OVERHEAD;
 expected = ClassSize.estimateBase(cl,