Repository: incubator-kylin
Updated Branches:
  refs/heads/2.x-staging ae0f1a72e -> 134960c62


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
index 0923484..7d9b313 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
@@ -46,27 +46,37 @@ public final class CubeVisitProtos {
      */
     com.google.protobuf.ByteString getHbaseRawScan();
 
-    // repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;
+    // required int32 rowkeyPreambleSize = 4;
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>required int32 rowkeyPreambleSize = 4;</code>
+     */
+    boolean hasRowkeyPreambleSize();
+    /**
+     * <code>required int32 rowkeyPreambleSize = 4;</code>
+     */
+    int getRowkeyPreambleSize();
+
+    // repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;
+    /**
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     
java.util.List<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>
 
         getHbaseColumnsToGTList();
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList
 getHbaseColumnsToGT(int index);
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     int getHbaseColumnsToGTCount();
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     java.util.List<? extends 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder>
 
         getHbaseColumnsToGTOrBuilderList();
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder
 getHbaseColumnsToGTOrBuilder(
         int index);
@@ -137,10 +147,15 @@ public final class CubeVisitProtos {
               hbaseRawScan_ = input.readBytes();
               break;
             }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+            case 32: {
+              bitField0_ |= 0x00000008;
+              rowkeyPreambleSize_ = input.readInt32();
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                 hbaseColumnsToGT_ = new 
java.util.ArrayList<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>();
-                mutable_bitField0_ |= 0x00000008;
+                mutable_bitField0_ |= 0x00000010;
               }
               
hbaseColumnsToGT_.add(input.readMessage(org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.PARSER,
 extensionRegistry));
               break;
@@ -153,7 +168,7 @@ public final class CubeVisitProtos {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e.getMessage()).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
           hbaseColumnsToGT_ = 
java.util.Collections.unmodifiableList(hbaseColumnsToGT_);
         }
         this.unknownFields = unknownFields.build();
@@ -767,36 +782,52 @@ public final class CubeVisitProtos {
       return hbaseRawScan_;
     }
 
-    // repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;
-    public static final int HBASECOLUMNSTOGT_FIELD_NUMBER = 4;
+    // required int32 rowkeyPreambleSize = 4;
+    public static final int ROWKEYPREAMBLESIZE_FIELD_NUMBER = 4;
+    private int rowkeyPreambleSize_;
+    /**
+     * <code>required int32 rowkeyPreambleSize = 4;</code>
+     */
+    public boolean hasRowkeyPreambleSize() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>required int32 rowkeyPreambleSize = 4;</code>
+     */
+    public int getRowkeyPreambleSize() {
+      return rowkeyPreambleSize_;
+    }
+
+    // repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;
+    public static final int HBASECOLUMNSTOGT_FIELD_NUMBER = 5;
     private 
java.util.List<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>
 hbaseColumnsToGT_;
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     public 
java.util.List<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>
 getHbaseColumnsToGTList() {
       return hbaseColumnsToGT_;
     }
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     public java.util.List<? extends 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder>
 
         getHbaseColumnsToGTOrBuilderList() {
       return hbaseColumnsToGT_;
     }
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     public int getHbaseColumnsToGTCount() {
       return hbaseColumnsToGT_.size();
     }
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList
 getHbaseColumnsToGT(int index) {
       return hbaseColumnsToGT_.get(index);
     }
     /**
-     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+     * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
      */
     public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder
 getHbaseColumnsToGTOrBuilder(
         int index) {
@@ -807,6 +838,7 @@ public final class CubeVisitProtos {
       behavior_ = "";
       gtScanRequest_ = com.google.protobuf.ByteString.EMPTY;
       hbaseRawScan_ = com.google.protobuf.ByteString.EMPTY;
+      rowkeyPreambleSize_ = 0;
       hbaseColumnsToGT_ = java.util.Collections.emptyList();
     }
     private byte memoizedIsInitialized = -1;
@@ -826,6 +858,10 @@ public final class CubeVisitProtos {
         memoizedIsInitialized = 0;
         return false;
       }
+      if (!hasRowkeyPreambleSize()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
       memoizedIsInitialized = 1;
       return true;
     }
@@ -842,8 +878,11 @@ public final class CubeVisitProtos {
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         output.writeBytes(3, hbaseRawScan_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt32(4, rowkeyPreambleSize_);
+      }
       for (int i = 0; i < hbaseColumnsToGT_.size(); i++) {
-        output.writeMessage(4, hbaseColumnsToGT_.get(i));
+        output.writeMessage(5, hbaseColumnsToGT_.get(i));
       }
       getUnknownFields().writeTo(output);
     }
@@ -866,9 +905,13 @@ public final class CubeVisitProtos {
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(3, hbaseRawScan_);
       }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(4, rowkeyPreambleSize_);
+      }
       for (int i = 0; i < hbaseColumnsToGT_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, hbaseColumnsToGT_.get(i));
+          .computeMessageSize(5, hbaseColumnsToGT_.get(i));
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
@@ -908,6 +951,11 @@ public final class CubeVisitProtos {
         result = result && getHbaseRawScan()
             .equals(other.getHbaseRawScan());
       }
+      result = result && (hasRowkeyPreambleSize() == 
other.hasRowkeyPreambleSize());
+      if (hasRowkeyPreambleSize()) {
+        result = result && (getRowkeyPreambleSize()
+            == other.getRowkeyPreambleSize());
+      }
       result = result && getHbaseColumnsToGTList()
           .equals(other.getHbaseColumnsToGTList());
       result = result &&
@@ -935,6 +983,10 @@ public final class CubeVisitProtos {
         hash = (37 * hash) + HBASERAWSCAN_FIELD_NUMBER;
         hash = (53 * hash) + getHbaseRawScan().hashCode();
       }
+      if (hasRowkeyPreambleSize()) {
+        hash = (37 * hash) + ROWKEYPREAMBLESIZE_FIELD_NUMBER;
+        hash = (53 * hash) + getRowkeyPreambleSize();
+      }
       if (getHbaseColumnsToGTCount() > 0) {
         hash = (37 * hash) + HBASECOLUMNSTOGT_FIELD_NUMBER;
         hash = (53 * hash) + getHbaseColumnsToGTList().hashCode();
@@ -1055,9 +1107,11 @@ public final class CubeVisitProtos {
         bitField0_ = (bitField0_ & ~0x00000002);
         hbaseRawScan_ = com.google.protobuf.ByteString.EMPTY;
         bitField0_ = (bitField0_ & ~0x00000004);
+        rowkeyPreambleSize_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
         if (hbaseColumnsToGTBuilder_ == null) {
           hbaseColumnsToGT_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
+          bitField0_ = (bitField0_ & ~0x00000010);
         } else {
           hbaseColumnsToGTBuilder_.clear();
         }
@@ -1101,10 +1155,14 @@ public final class CubeVisitProtos {
           to_bitField0_ |= 0x00000004;
         }
         result.hbaseRawScan_ = hbaseRawScan_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.rowkeyPreambleSize_ = rowkeyPreambleSize_;
         if (hbaseColumnsToGTBuilder_ == null) {
-          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
             hbaseColumnsToGT_ = 
java.util.Collections.unmodifiableList(hbaseColumnsToGT_);
-            bitField0_ = (bitField0_ & ~0x00000008);
+            bitField0_ = (bitField0_ & ~0x00000010);
           }
           result.hbaseColumnsToGT_ = hbaseColumnsToGT_;
         } else {
@@ -1137,11 +1195,14 @@ public final class CubeVisitProtos {
         if (other.hasHbaseRawScan()) {
           setHbaseRawScan(other.getHbaseRawScan());
         }
+        if (other.hasRowkeyPreambleSize()) {
+          setRowkeyPreambleSize(other.getRowkeyPreambleSize());
+        }
         if (hbaseColumnsToGTBuilder_ == null) {
           if (!other.hbaseColumnsToGT_.isEmpty()) {
             if (hbaseColumnsToGT_.isEmpty()) {
               hbaseColumnsToGT_ = other.hbaseColumnsToGT_;
-              bitField0_ = (bitField0_ & ~0x00000008);
+              bitField0_ = (bitField0_ & ~0x00000010);
             } else {
               ensureHbaseColumnsToGTIsMutable();
               hbaseColumnsToGT_.addAll(other.hbaseColumnsToGT_);
@@ -1154,7 +1215,7 @@ public final class CubeVisitProtos {
               hbaseColumnsToGTBuilder_.dispose();
               hbaseColumnsToGTBuilder_ = null;
               hbaseColumnsToGT_ = other.hbaseColumnsToGT_;
-              bitField0_ = (bitField0_ & ~0x00000008);
+              bitField0_ = (bitField0_ & ~0x00000010);
               hbaseColumnsToGTBuilder_ = 
                 com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                    getHbaseColumnsToGTFieldBuilder() : null;
@@ -1180,6 +1241,10 @@ public final class CubeVisitProtos {
           
           return false;
         }
+        if (!hasRowkeyPreambleSize()) {
+          
+          return false;
+        }
         return true;
       }
 
@@ -1348,13 +1413,46 @@ public final class CubeVisitProtos {
         return this;
       }
 
-      // repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;
+      // required int32 rowkeyPreambleSize = 4;
+      private int rowkeyPreambleSize_ ;
+      /**
+       * <code>required int32 rowkeyPreambleSize = 4;</code>
+       */
+      public boolean hasRowkeyPreambleSize() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>required int32 rowkeyPreambleSize = 4;</code>
+       */
+      public int getRowkeyPreambleSize() {
+        return rowkeyPreambleSize_;
+      }
+      /**
+       * <code>required int32 rowkeyPreambleSize = 4;</code>
+       */
+      public Builder setRowkeyPreambleSize(int value) {
+        bitField0_ |= 0x00000008;
+        rowkeyPreambleSize_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int32 rowkeyPreambleSize = 4;</code>
+       */
+      public Builder clearRowkeyPreambleSize() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        rowkeyPreambleSize_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;
       private 
java.util.List<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>
 hbaseColumnsToGT_ =
         java.util.Collections.emptyList();
       private void ensureHbaseColumnsToGTIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
           hbaseColumnsToGT_ = new 
java.util.ArrayList<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>(hbaseColumnsToGT_);
-          bitField0_ |= 0x00000008;
+          bitField0_ |= 0x00000010;
          }
       }
 
@@ -1362,7 +1460,7 @@ public final class CubeVisitProtos {
           
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList,
 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder,
 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder>
 hbaseColumnsToGTBuilder_;
 
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
java.util.List<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>
 getHbaseColumnsToGTList() {
         if (hbaseColumnsToGTBuilder_ == null) {
@@ -1372,7 +1470,7 @@ public final class CubeVisitProtos {
         }
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public int getHbaseColumnsToGTCount() {
         if (hbaseColumnsToGTBuilder_ == null) {
@@ -1382,7 +1480,7 @@ public final class CubeVisitProtos {
         }
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList
 getHbaseColumnsToGT(int index) {
         if (hbaseColumnsToGTBuilder_ == null) {
@@ -1392,7 +1490,7 @@ public final class CubeVisitProtos {
         }
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder setHbaseColumnsToGT(
           int index, 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList
 value) {
@@ -1409,7 +1507,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder setHbaseColumnsToGT(
           int index, 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder
 builderForValue) {
@@ -1423,7 +1521,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder 
addHbaseColumnsToGT(org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList
 value) {
         if (hbaseColumnsToGTBuilder_ == null) {
@@ -1439,7 +1537,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder addHbaseColumnsToGT(
           int index, 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList
 value) {
@@ -1456,7 +1554,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder addHbaseColumnsToGT(
           
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder
 builderForValue) {
@@ -1470,7 +1568,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder addHbaseColumnsToGT(
           int index, 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder
 builderForValue) {
@@ -1484,7 +1582,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder addAllHbaseColumnsToGT(
           java.lang.Iterable<? extends 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList>
 values) {
@@ -1498,12 +1596,12 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder clearHbaseColumnsToGT() {
         if (hbaseColumnsToGTBuilder_ == null) {
           hbaseColumnsToGT_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
+          bitField0_ = (bitField0_ & ~0x00000010);
           onChanged();
         } else {
           hbaseColumnsToGTBuilder_.clear();
@@ -1511,7 +1609,7 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public Builder removeHbaseColumnsToGT(int index) {
         if (hbaseColumnsToGTBuilder_ == null) {
@@ -1524,14 +1622,14 @@ public final class CubeVisitProtos {
         return this;
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder
 getHbaseColumnsToGTBuilder(
           int index) {
         return getHbaseColumnsToGTFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder
 getHbaseColumnsToGTOrBuilder(
           int index) {
@@ -1541,7 +1639,7 @@ public final class CubeVisitProtos {
         }
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public java.util.List<? extends 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder>
 
            getHbaseColumnsToGTOrBuilderList() {
@@ -1552,14 +1650,14 @@ public final class CubeVisitProtos {
         }
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder
 addHbaseColumnsToGTBuilder() {
         return getHbaseColumnsToGTFieldBuilder().addBuilder(
             
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.getDefaultInstance());
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder
 addHbaseColumnsToGTBuilder(
           int index) {
@@ -1567,7 +1665,7 @@ public final class CubeVisitProtos {
             index, 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.getDefaultInstance());
       }
       /**
-       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 4;</code>
+       * <code>repeated .CubeVisitRequest.IntList hbaseColumnsToGT = 5;</code>
        */
       public 
java.util.List<org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder>
 
            getHbaseColumnsToGTBuilderList() {
@@ -1580,7 +1678,7 @@ public final class CubeVisitProtos {
           hbaseColumnsToGTBuilder_ = new 
com.google.protobuf.RepeatedFieldBuilder<
               
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList,
 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntList.Builder,
 
org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos.CubeVisitRequest.IntListOrBuilder>(
                   hbaseColumnsToGT_,
-                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  ((bitField0_ & 0x00000010) == 0x00000010),
                   getParentForChildren(),
                   isClean());
           hbaseColumnsToGT_ = null;
@@ -1776,6 +1874,51 @@ public final class CubeVisitProtos {
        * <code>optional int32 aggregatedRowCount = 4;</code>
        */
       int getAggregatedRowCount();
+
+      // optional double systemCpuLoad = 5;
+      /**
+       * <code>optional double systemCpuLoad = 5;</code>
+       */
+      boolean hasSystemCpuLoad();
+      /**
+       * <code>optional double systemCpuLoad = 5;</code>
+       */
+      double getSystemCpuLoad();
+
+      // optional double freePhysicalMemorySize = 6;
+      /**
+       * <code>optional double freePhysicalMemorySize = 6;</code>
+       */
+      boolean hasFreePhysicalMemorySize();
+      /**
+       * <code>optional double freePhysicalMemorySize = 6;</code>
+       */
+      double getFreePhysicalMemorySize();
+
+      // optional double freeSwapSpaceSize = 7;
+      /**
+       * <code>optional double freeSwapSpaceSize = 7;</code>
+       */
+      boolean hasFreeSwapSpaceSize();
+      /**
+       * <code>optional double freeSwapSpaceSize = 7;</code>
+       */
+      double getFreeSwapSpaceSize();
+
+      // optional string hostname = 8;
+      /**
+       * <code>optional string hostname = 8;</code>
+       */
+      boolean hasHostname();
+      /**
+       * <code>optional string hostname = 8;</code>
+       */
+      java.lang.String getHostname();
+      /**
+       * <code>optional string hostname = 8;</code>
+       */
+      com.google.protobuf.ByteString
+          getHostnameBytes();
     }
     /**
      * Protobuf type {@code CubeVisitResponse.Stats}
@@ -1848,6 +1991,26 @@ public final class CubeVisitProtos {
                 aggregatedRowCount_ = input.readInt32();
                 break;
               }
+              case 41: {
+                bitField0_ |= 0x00000010;
+                systemCpuLoad_ = input.readDouble();
+                break;
+              }
+              case 49: {
+                bitField0_ |= 0x00000020;
+                freePhysicalMemorySize_ = input.readDouble();
+                break;
+              }
+              case 57: {
+                bitField0_ |= 0x00000040;
+                freeSwapSpaceSize_ = input.readDouble();
+                break;
+              }
+              case 66: {
+                bitField0_ |= 0x00000080;
+                hostname_ = input.readBytes();
+                break;
+              }
             }
           }
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -1952,11 +2115,106 @@ public final class CubeVisitProtos {
         return aggregatedRowCount_;
       }
 
+      // optional double systemCpuLoad = 5;
+      public static final int SYSTEMCPULOAD_FIELD_NUMBER = 5;
+      private double systemCpuLoad_;
+      /**
+       * <code>optional double systemCpuLoad = 5;</code>
+       */
+      public boolean hasSystemCpuLoad() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double systemCpuLoad = 5;</code>
+       */
+      public double getSystemCpuLoad() {
+        return systemCpuLoad_;
+      }
+
+      // optional double freePhysicalMemorySize = 6;
+      public static final int FREEPHYSICALMEMORYSIZE_FIELD_NUMBER = 6;
+      private double freePhysicalMemorySize_;
+      /**
+       * <code>optional double freePhysicalMemorySize = 6;</code>
+       */
+      public boolean hasFreePhysicalMemorySize() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double freePhysicalMemorySize = 6;</code>
+       */
+      public double getFreePhysicalMemorySize() {
+        return freePhysicalMemorySize_;
+      }
+
+      // optional double freeSwapSpaceSize = 7;
+      public static final int FREESWAPSPACESIZE_FIELD_NUMBER = 7;
+      private double freeSwapSpaceSize_;
+      /**
+       * <code>optional double freeSwapSpaceSize = 7;</code>
+       */
+      public boolean hasFreeSwapSpaceSize() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional double freeSwapSpaceSize = 7;</code>
+       */
+      public double getFreeSwapSpaceSize() {
+        return freeSwapSpaceSize_;
+      }
+
+      // optional string hostname = 8;
+      public static final int HOSTNAME_FIELD_NUMBER = 8;
+      private java.lang.Object hostname_;
+      /**
+       * <code>optional string hostname = 8;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string hostname = 8;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            hostname_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string hostname = 8;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
       private void initFields() {
         serviceStartTime_ = 0L;
         serviceEndTime_ = 0L;
         scannedRowCount_ = 0;
         aggregatedRowCount_ = 0;
+        systemCpuLoad_ = 0D;
+        freePhysicalMemorySize_ = 0D;
+        freeSwapSpaceSize_ = 0D;
+        hostname_ = "";
       }
       private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
@@ -1982,6 +2240,18 @@ public final class CubeVisitProtos {
         if (((bitField0_ & 0x00000008) == 0x00000008)) {
           output.writeInt32(4, aggregatedRowCount_);
         }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeDouble(5, systemCpuLoad_);
+        }
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          output.writeDouble(6, freePhysicalMemorySize_);
+        }
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          output.writeDouble(7, freeSwapSpaceSize_);
+        }
+        if (((bitField0_ & 0x00000080) == 0x00000080)) {
+          output.writeBytes(8, getHostnameBytes());
+        }
         getUnknownFields().writeTo(output);
       }
 
@@ -2007,6 +2277,22 @@ public final class CubeVisitProtos {
           size += com.google.protobuf.CodedOutputStream
             .computeInt32Size(4, aggregatedRowCount_);
         }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(5, systemCpuLoad_);
+        }
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(6, freePhysicalMemorySize_);
+        }
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(7, freeSwapSpaceSize_);
+        }
+        if (((bitField0_ & 0x00000080) == 0x00000080)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(8, getHostnameBytes());
+        }
         size += getUnknownFields().getSerializedSize();
         memoizedSerializedSize = size;
         return size;
@@ -2050,6 +2336,23 @@ public final class CubeVisitProtos {
           result = result && (getAggregatedRowCount()
               == other.getAggregatedRowCount());
         }
+        result = result && (hasSystemCpuLoad() == other.hasSystemCpuLoad());
+        if (hasSystemCpuLoad()) {
+          result = result && (Double.doubleToLongBits(getSystemCpuLoad())    
== Double.doubleToLongBits(other.getSystemCpuLoad()));
+        }
+        result = result && (hasFreePhysicalMemorySize() == 
other.hasFreePhysicalMemorySize());
+        if (hasFreePhysicalMemorySize()) {
+          result = result && 
(Double.doubleToLongBits(getFreePhysicalMemorySize())    == 
Double.doubleToLongBits(other.getFreePhysicalMemorySize()));
+        }
+        result = result && (hasFreeSwapSpaceSize() == 
other.hasFreeSwapSpaceSize());
+        if (hasFreeSwapSpaceSize()) {
+          result = result && (Double.doubleToLongBits(getFreeSwapSpaceSize())  
  == Double.doubleToLongBits(other.getFreeSwapSpaceSize()));
+        }
+        result = result && (hasHostname() == other.hasHostname());
+        if (hasHostname()) {
+          result = result && getHostname()
+              .equals(other.getHostname());
+        }
         result = result &&
             getUnknownFields().equals(other.getUnknownFields());
         return result;
@@ -2079,6 +2382,25 @@ public final class CubeVisitProtos {
           hash = (37 * hash) + AGGREGATEDROWCOUNT_FIELD_NUMBER;
           hash = (53 * hash) + getAggregatedRowCount();
         }
+        if (hasSystemCpuLoad()) {
+          hash = (37 * hash) + SYSTEMCPULOAD_FIELD_NUMBER;
+          hash = (53 * hash) + hashLong(
+              Double.doubleToLongBits(getSystemCpuLoad()));
+        }
+        if (hasFreePhysicalMemorySize()) {
+          hash = (37 * hash) + FREEPHYSICALMEMORYSIZE_FIELD_NUMBER;
+          hash = (53 * hash) + hashLong(
+              Double.doubleToLongBits(getFreePhysicalMemorySize()));
+        }
+        if (hasFreeSwapSpaceSize()) {
+          hash = (37 * hash) + FREESWAPSPACESIZE_FIELD_NUMBER;
+          hash = (53 * hash) + hashLong(
+              Double.doubleToLongBits(getFreeSwapSpaceSize()));
+        }
+        if (hasHostname()) {
+          hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
+          hash = (53 * hash) + getHostname().hashCode();
+        }
         hash = (29 * hash) + getUnknownFields().hashCode();
         memoizedHashCode = hash;
         return hash;
@@ -2196,6 +2518,14 @@ public final class CubeVisitProtos {
           bitField0_ = (bitField0_ & ~0x00000004);
           aggregatedRowCount_ = 0;
           bitField0_ = (bitField0_ & ~0x00000008);
+          systemCpuLoad_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000010);
+          freePhysicalMemorySize_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000020);
+          freeSwapSpaceSize_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000040);
+          hostname_ = "";
+          bitField0_ = (bitField0_ & ~0x00000080);
           return this;
         }
 
@@ -2240,6 +2570,22 @@ public final class CubeVisitProtos {
             to_bitField0_ |= 0x00000008;
           }
           result.aggregatedRowCount_ = aggregatedRowCount_;
+          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          result.systemCpuLoad_ = systemCpuLoad_;
+          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+            to_bitField0_ |= 0x00000020;
+          }
+          result.freePhysicalMemorySize_ = freePhysicalMemorySize_;
+          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+            to_bitField0_ |= 0x00000040;
+          }
+          result.freeSwapSpaceSize_ = freeSwapSpaceSize_;
+          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+            to_bitField0_ |= 0x00000080;
+          }
+          result.hostname_ = hostname_;
           result.bitField0_ = to_bitField0_;
           onBuilt();
           return result;
@@ -2268,6 +2614,20 @@ public final class CubeVisitProtos {
           if (other.hasAggregatedRowCount()) {
             setAggregatedRowCount(other.getAggregatedRowCount());
           }
+          if (other.hasSystemCpuLoad()) {
+            setSystemCpuLoad(other.getSystemCpuLoad());
+          }
+          if (other.hasFreePhysicalMemorySize()) {
+            setFreePhysicalMemorySize(other.getFreePhysicalMemorySize());
+          }
+          if (other.hasFreeSwapSpaceSize()) {
+            setFreeSwapSpaceSize(other.getFreeSwapSpaceSize());
+          }
+          if (other.hasHostname()) {
+            bitField0_ |= 0x00000080;
+            hostname_ = other.hostname_;
+            onChanged();
+          }
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
@@ -2427,6 +2787,179 @@ public final class CubeVisitProtos {
           return this;
         }
 
+        // optional double systemCpuLoad = 5;
+        private double systemCpuLoad_ ;
+        /**
+         * <code>optional double systemCpuLoad = 5;</code>
+         */
+        public boolean hasSystemCpuLoad() {
+          return ((bitField0_ & 0x00000010) == 0x00000010);
+        }
+        /**
+         * <code>optional double systemCpuLoad = 5;</code>
+         */
+        public double getSystemCpuLoad() {
+          return systemCpuLoad_;
+        }
+        /**
+         * <code>optional double systemCpuLoad = 5;</code>
+         */
+        public Builder setSystemCpuLoad(double value) {
+          bitField0_ |= 0x00000010;
+          systemCpuLoad_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional double systemCpuLoad = 5;</code>
+         */
+        public Builder clearSystemCpuLoad() {
+          bitField0_ = (bitField0_ & ~0x00000010);
+          systemCpuLoad_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // optional double freePhysicalMemorySize = 6;
+        private double freePhysicalMemorySize_ ;
+        /**
+         * <code>optional double freePhysicalMemorySize = 6;</code>
+         */
+        public boolean hasFreePhysicalMemorySize() {
+          return ((bitField0_ & 0x00000020) == 0x00000020);
+        }
+        /**
+         * <code>optional double freePhysicalMemorySize = 6;</code>
+         */
+        public double getFreePhysicalMemorySize() {
+          return freePhysicalMemorySize_;
+        }
+        /**
+         * <code>optional double freePhysicalMemorySize = 6;</code>
+         */
+        public Builder setFreePhysicalMemorySize(double value) {
+          bitField0_ |= 0x00000020;
+          freePhysicalMemorySize_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional double freePhysicalMemorySize = 6;</code>
+         */
+        public Builder clearFreePhysicalMemorySize() {
+          bitField0_ = (bitField0_ & ~0x00000020);
+          freePhysicalMemorySize_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // optional double freeSwapSpaceSize = 7;
+        private double freeSwapSpaceSize_ ;
+        /**
+         * <code>optional double freeSwapSpaceSize = 7;</code>
+         */
+        public boolean hasFreeSwapSpaceSize() {
+          return ((bitField0_ & 0x00000040) == 0x00000040);
+        }
+        /**
+         * <code>optional double freeSwapSpaceSize = 7;</code>
+         */
+        public double getFreeSwapSpaceSize() {
+          return freeSwapSpaceSize_;
+        }
+        /**
+         * <code>optional double freeSwapSpaceSize = 7;</code>
+         */
+        public Builder setFreeSwapSpaceSize(double value) {
+          bitField0_ |= 0x00000040;
+          freeSwapSpaceSize_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional double freeSwapSpaceSize = 7;</code>
+         */
+        public Builder clearFreeSwapSpaceSize() {
+          bitField0_ = (bitField0_ & ~0x00000040);
+          freeSwapSpaceSize_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // optional string hostname = 8;
+        private java.lang.Object hostname_ = "";
+        /**
+         * <code>optional string hostname = 8;</code>
+         */
+        public boolean hasHostname() {
+          return ((bitField0_ & 0x00000080) == 0x00000080);
+        }
+        /**
+         * <code>optional string hostname = 8;</code>
+         */
+        public java.lang.String getHostname() {
+          java.lang.Object ref = hostname_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            hostname_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string hostname = 8;</code>
+         */
+        public com.google.protobuf.ByteString
+            getHostnameBytes() {
+          java.lang.Object ref = hostname_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            hostname_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string hostname = 8;</code>
+         */
+        public Builder setHostname(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+          hostname_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string hostname = 8;</code>
+         */
+        public Builder clearHostname() {
+          bitField0_ = (bitField0_ & ~0x00000080);
+          hostname_ = getDefaultInstance().getHostname();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string hostname = 8;</code>
+         */
+        public Builder setHostnameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+          hostname_ = value;
+          onChanged();
+          return this;
+        }
+
         // @@protoc_insertion_point(builder_scope:CubeVisitResponse.Stats)
       }
 
@@ -3220,21 +3753,24 @@ public final class CubeVisitProtos {
     java.lang.String[] descriptorData = {
       "\npstorage-hbase/src/main/java/org/apache" +
       "/kylin/storage/hbase/cube/v2/coprocessor" +
-      "/endpoint/protobuf/CubeVisit.proto\"\237\001\n\020C" +
+      "/endpoint/protobuf/CubeVisit.proto\"\273\001\n\020C" +
       "ubeVisitRequest\022\020\n\010behavior\030\001 \002(\t\022\025\n\rgtS" +
-      "canRequest\030\002 \002(\014\022\024\n\014hbaseRawScan\030\003 
\002(\014\0223" +
-      "\n\020hbaseColumnsToGT\030\004 \003(\0132\031.CubeVisitRequ" +
-      "est.IntList\032\027\n\007IntList\022\014\n\004ints\030\001 
\003(\005\"\304\001\n" +
-      "\021CubeVisitResponse\022\026\n\016compressedRows\030\001 \002" +
-      "(\014\022\'\n\005stats\030\002 \002(\0132\030.CubeVisitResponse.St" +
-      "ats\032n\n\005Stats\022\030\n\020serviceStartTime\030\001 
\001(\003\022\026",
-      "\n\016serviceEndTime\030\002 \001(\003\022\027\n\017scannedRowCoun" +
-      "t\030\003 \001(\005\022\032\n\022aggregatedRowCount\030\004 
\001(\0052F\n\020C" +
-      "ubeVisitService\0222\n\tvisitCube\022\021.CubeVisit" +
-      "Request\032\022.CubeVisitResponseB`\nEorg.apach" +
-      "e.kylin.storage.hbase.cube.v2.coprocesso" +
-      "r.endpoint.generatedB\017CubeVisitProtosH\001\210" +
-      "\001\001\240\001\001"
+      "canRequest\030\002 \002(\014\022\024\n\014hbaseRawScan\030\003 
\002(\014\022\032" +
+      "\n\022rowkeyPreambleSize\030\004 \002(\005\0223\n\020hbaseColum" +
+      "nsToGT\030\005 \003(\0132\031.CubeVisitRequest.IntList\032" +
+      "\027\n\007IntList\022\014\n\004ints\030\001 
\003(\005\"\251\002\n\021CubeVisitRe" +
+      "sponse\022\026\n\016compressedRows\030\001 
\002(\014\022\'\n\005stats\030" +
+      "\002 \002(\0132\030.CubeVisitResponse.Stats\032\322\001\n\005Stat",
+      "s\022\030\n\020serviceStartTime\030\001 
\001(\003\022\026\n\016serviceEn" +
+      "dTime\030\002 \001(\003\022\027\n\017scannedRowCount\030\003 
\001(\005\022\032\n\022" +
+      "aggregatedRowCount\030\004 \001(\005\022\025\n\rsystemCpuLoa" +
+      "d\030\005 \001(\001\022\036\n\026freePhysicalMemorySize\030\006 
\001(\001\022" +
+      "\031\n\021freeSwapSpaceSize\030\007 
\001(\001\022\020\n\010hostname\030\010" +
+      " \001(\t2F\n\020CubeVisitService\0222\n\tvisitCube\022\021." +
+      "CubeVisitRequest\032\022.CubeVisitResponseB`\nE" +
+      "org.apache.kylin.storage.hbase.cube.v2.c" +
+      "oprocessor.endpoint.generatedB\017CubeVisit" +
+      "ProtosH\001\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
       new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -3246,7 +3782,7 @@ public final class CubeVisitProtos {
           internal_static_CubeVisitRequest_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_CubeVisitRequest_descriptor,
-              new java.lang.String[] { "Behavior", "GtScanRequest", 
"HbaseRawScan", "HbaseColumnsToGT", });
+              new java.lang.String[] { "Behavior", "GtScanRequest", 
"HbaseRawScan", "RowkeyPreambleSize", "HbaseColumnsToGT", });
           internal_static_CubeVisitRequest_IntList_descriptor =
             
internal_static_CubeVisitRequest_descriptor.getNestedTypes().get(0);
           internal_static_CubeVisitRequest_IntList_fieldAccessorTable = new
@@ -3264,7 +3800,7 @@ public final class CubeVisitProtos {
           internal_static_CubeVisitResponse_Stats_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_CubeVisitResponse_Stats_descriptor,
-              new java.lang.String[] { "ServiceStartTime", "ServiceEndTime", 
"ScannedRowCount", "AggregatedRowCount", });
+              new java.lang.String[] { "ServiceStartTime", "ServiceEndTime", 
"ScannedRowCount", "AggregatedRowCount", "SystemCpuLoad", 
"FreePhysicalMemorySize", "FreeSwapSpaceSize", "Hostname", });
           return null;
         }
       };

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/protobuf/CubeVisit.proto
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/protobuf/CubeVisit.proto
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/protobuf/CubeVisit.proto
index 4ac6414..aa05c0b 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/protobuf/CubeVisit.proto
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/protobuf/CubeVisit.proto
@@ -15,7 +15,8 @@ message CubeVisitRequest {
     required string behavior = 1;
     required bytes gtScanRequest = 2;
     required bytes hbaseRawScan = 3;
-    repeated IntList hbaseColumnsToGT = 4;
+    required int32 rowkeyPreambleSize = 4;
+    repeated IntList hbaseColumnsToGT = 5;
     message IntList {
         repeated int32 ints = 1;
     }
@@ -27,6 +28,10 @@ message CubeVisitResponse {
         optional int64 serviceEndTime = 2;
         optional int32 scannedRowCount = 3;
         optional int32 aggregatedRowCount = 4;
+        optional double systemCpuLoad = 5;
+        optional double freePhysicalMemorySize = 6;
+        optional double freeSwapSpaceSize = 7;
+        optional string hostname = 8;
     }
     required bytes compressedRows = 1;
     required Stats stats = 2;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CreateHTableJob.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CreateHTableJob.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CreateHTableJob.java
index b29bd81..8bff4d1 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CreateHTableJob.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CreateHTableJob.java
@@ -55,7 +55,6 @@ import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeManager;
 import org.apache.kylin.cube.CubeSegment;
 import org.apache.kylin.cube.cuboid.Cuboid;
-import org.apache.kylin.cube.kv.RowConstants;
 import org.apache.kylin.cube.model.CubeDesc;
 import org.apache.kylin.engine.mr.HadoopUtil;
 import org.apache.kylin.engine.mr.common.AbstractHadoopJob;
@@ -84,7 +83,6 @@ public class CreateHTableJob extends AbstractHadoopJob {
     CubeDesc cubeDesc = null;
     String segmentName = null;
     KylinConfig kylinConfig;
-    public static final boolean ENABLE_CUBOID_SHARDING = true;
 
     @Override
     public int run(String[] args) throws Exception {
@@ -179,7 +177,7 @@ public class CreateHTableJob extends AbstractHadoopJob {
             IOUtils.closeStream(tempFileStream);
         }
         Map<Long, HyperLogLogPlusCounter> counterMap = Maps.newHashMap();
-        
+
         FileSystem fs = HadoopUtil.getFileSystem("file:///" + 
tempFile.getAbsolutePath());
         int samplingPercentage = 25;
         SequenceFile.Reader reader = null;
@@ -257,7 +255,7 @@ public class CreateHTableJob extends AbstractHadoopJob {
 
         Map<Long, Double> cubeSizeMap = Maps.newHashMap();
         for (Map.Entry<Long, Long> entry : cubeRowCountMap.entrySet()) {
-            cubeSizeMap.put(entry.getKey(), 
estimateCuboidStorageSize(cubeDesc, entry.getKey(), entry.getValue(), 
baseCuboidId, rowkeyColumnSize));
+            cubeSizeMap.put(entry.getKey(), 
estimateCuboidStorageSize(cubeSegment, entry.getKey(), entry.getValue(), 
baseCuboidId, rowkeyColumnSize));
         }
 
         for (Double cuboidSize : cubeSizeMap.values()) {
@@ -268,7 +266,7 @@ public class CreateHTableJob extends AbstractHadoopJob {
         nRegion = Math.max(kylinConfig.getHBaseRegionCountMin(), nRegion);
         nRegion = Math.min(kylinConfig.getHBaseRegionCountMax(), nRegion);
 
-        if (ENABLE_CUBOID_SHARDING) {//&& (nRegion > 1)) {
+        if (cubeSegment.isEnableSharding()) {//&& (nRegion > 1)) {
             //use prime nRegions to help random sharding
             int original = nRegion;
             nRegion = Primes.nextPrime(nRegion);//return 2 for input 1
@@ -290,7 +288,7 @@ public class CreateHTableJob extends AbstractHadoopJob {
         logger.info("Expecting " + nRegion + " regions.");
         logger.info("Expecting " + mbPerRegion + " MB per region.");
 
-        if (ENABLE_CUBOID_SHARDING) {
+        if (cubeSegment.isEnableSharding()) {
             //each cuboid will be split into different number of shards
             HashMap<Long, Short> cuboidShards = Maps.newHashMap();
             double[] regionSizes = new double[nRegion];
@@ -357,14 +355,11 @@ public class CreateHTableJob extends AbstractHadoopJob {
     /**
      * Estimate the cuboid's size
      *
-     * @param cubeDesc
-     * @param cuboidId
-     * @param rowCount
      * @return the cuboid size in M bytes
      */
-    private static double estimateCuboidStorageSize(CubeDesc cubeDesc, long 
cuboidId, long rowCount, long baseCuboidId, List<Integer> rowKeyColumnLength) {
+    private static double estimateCuboidStorageSize(CubeSegment cubeSegment, 
long cuboidId, long rowCount, long baseCuboidId, List<Integer> 
rowKeyColumnLength) {
 
-        int bytesLength = RowConstants.ROWKEY_HEADER_LEN;
+        int bytesLength = cubeSegment.getRowKeyPreambleSize();
 
         long mask = Long.highestOneBit(baseCuboidId);
         long parentCuboidIdActualLength = Long.SIZE - 
Long.numberOfLeadingZeros(baseCuboidId);
@@ -377,7 +372,7 @@ public class CreateHTableJob extends AbstractHadoopJob {
 
         // add the measure length
         int space = 0;
-        for (MeasureDesc measureDesc : cubeDesc.getMeasures()) {
+        for (MeasureDesc measureDesc : 
cubeSegment.getCubeDesc().getMeasures()) {
             DataType returnType = 
measureDesc.getFunction().getReturnDataType();
             if (returnType.isHLLC()) {
                 // for HLL, it will be compressed when export to bytes

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
index 221be8a..cdc259b 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
@@ -11,6 +11,7 @@ import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy;
+import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.cube.model.CubeDesc;
@@ -33,7 +34,7 @@ public class CubeHTableUtil {
 
         HTableDescriptor tableDesc = new 
HTableDescriptor(TableName.valueOf(tableName));
         // 
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.html
-        tableDesc.setValue(HTableDescriptor.SPLIT_POLICY, 
ConstantSizeRegionSplitPolicy.class.getName());
+        tableDesc.setValue(HTableDescriptor.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
         tableDesc.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
         tableDesc.setValue(IRealizationConstants.HTableCreationTime, 
String.valueOf(System.currentTimeMillis()));
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseCuboidWriter.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseCuboidWriter.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseCuboidWriter.java
index d857fb1..31cce7b 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseCuboidWriter.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseCuboidWriter.java
@@ -34,22 +34,16 @@
 package org.apache.kylin.storage.hbase.steps;
 
 import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.BitSet;
 import java.util.List;
 
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
-import org.apache.kylin.common.util.ByteArray;
-import org.apache.kylin.common.util.Bytes;
-import org.apache.kylin.common.util.BytesUtil;
 import org.apache.kylin.common.util.ImmutableBitSet;
-import org.apache.kylin.common.util.ShardingHash;
 import org.apache.kylin.cube.CubeSegment;
 import org.apache.kylin.cube.cuboid.Cuboid;
 import org.apache.kylin.cube.inmemcubing.ICuboidWriter;
-import org.apache.kylin.cube.kv.RowConstants;
+import org.apache.kylin.cube.kv.AbstractRowKeyEncoder;
 import org.apache.kylin.cube.model.CubeDesc;
 import org.apache.kylin.cube.model.HBaseColumnDesc;
 import org.apache.kylin.cube.model.HBaseColumnFamilyDesc;
@@ -70,11 +64,13 @@ public final class HBaseCuboidWriter implements 
ICuboidWriter {
     private final List<KeyValueCreator> keyValueCreators;
     private final int nColumns;
     private final HTableInterface hTable;
-    private final ByteBuffer byteBuffer;
     private final CubeDesc cubeDesc;
     private final CubeSegment cubeSegment;
     private final Object[] measureValues;
+
     private List<Put> puts = Lists.newArrayList();
+    private AbstractRowKeyEncoder rowKeyEncoder;
+    private byte[] keybuf;
 
     public HBaseCuboidWriter(CubeSegment segment, HTableInterface hTable) {
         this.keyValueCreators = Lists.newArrayList();
@@ -87,7 +83,6 @@ public final class HBaseCuboidWriter implements ICuboidWriter 
{
         }
         this.nColumns = keyValueCreators.size();
         this.hTable = hTable;
-        this.byteBuffer = ByteBuffer.allocate(RowConstants.ROWKEY_BUFFER_SIZE);
         this.measureValues = new Object[cubeDesc.getMeasures().size()];
     }
 
@@ -97,38 +92,28 @@ public final class HBaseCuboidWriter implements 
ICuboidWriter {
         return result;
     }
 
-    private ByteBuffer createKey(Long cuboidId, GTRecord record) {
-        byteBuffer.clear();
-        byteBuffer.put(Bytes.toBytes((short) 0), 0, 
RowConstants.ROWKEY_SHARDID_LEN);//occupy space first
-        byteBuffer.put(Bytes.toBytes(cuboidId), 0, 
RowConstants.ROWKEY_CUBOIDID_LEN);
-        final int cardinality = BitSet.valueOf(new long[] { cuboidId 
}).cardinality();
-        for (int i = 0; i < cardinality; i++) {
-            final ByteArray byteArray = record.get(i);
-            byteBuffer.put(byteArray.array(), byteArray.offset(), 
byteArray.length());
+    //TODO:shardingonstreaming
+    private byte[] createKey(Long cuboidId, GTRecord record) {
+        if (rowKeyEncoder == null || rowKeyEncoder.getCuboidID() != cuboidId) {
+            rowKeyEncoder = AbstractRowKeyEncoder.createInstance(cubeSegment, 
Cuboid.findById(cubeDesc, cuboidId));
+            keybuf = rowKeyEncoder.createBuf();
         }
+        rowKeyEncoder.encode(record, record.getInfo().getPrimaryKey(), keybuf);
+        return keybuf;
 
-        //fill shard
-        short cuboidShardNum = cubeSegment.getCuboidShardNum(cuboidId);
-        short shardOffset = ShardingHash.getShard(byteBuffer.array(), //
-                RowConstants.ROWKEY_HEADER_LEN, byteBuffer.position() - 
RowConstants.ROWKEY_HEADER_LEN, cuboidShardNum);
-        Short cuboidShardBase = cubeSegment.getCuboidBaseShard(cuboidId);
-        short finalShard = ShardingHash.normalize(cuboidShardBase, 
shardOffset, cubeSegment.getTotalShards());
-        BytesUtil.writeShort(finalShard, byteBuffer.array(), 0, 
RowConstants.ROWKEY_SHARDID_LEN);
-
-        return byteBuffer;
     }
 
     @Override
     public void write(long cuboidId, GTRecord record) throws IOException {
-        final ByteBuffer key = createKey(cuboidId, record);
+        byte[] key = createKey(cuboidId, record);
         final Cuboid cuboid = Cuboid.findById(cubeDesc, cuboidId);
         final int nDims = cuboid.getColumns().size();
         final ImmutableBitSet bitSet = new ImmutableBitSet(nDims, nDims + 
cubeDesc.getMeasures().size());
 
         for (int i = 0; i < nColumns; i++) {
             final Object[] values = record.getValues(bitSet, measureValues);
-            final KeyValue keyValue = 
keyValueCreators.get(i).create(key.array(), 0, key.position(), values);
-            final Put put = new Put(copy(key.array(), 0, key.position()));
+            final KeyValue keyValue = keyValueCreators.get(i).create(key, 0, 
key.length, values);
+            final Put put = new Put(copy(key, 0, key.length));
             byte[] family = copy(keyValue.getFamilyArray(), 
keyValue.getFamilyOffset(), keyValue.getFamilyLength());
             byte[] qualifier = copy(keyValue.getQualifierArray(), 
keyValue.getQualifierOffset(), keyValue.getQualifierLength());
             byte[] value = copy(keyValue.getValueArray(), 
keyValue.getValueOffset(), keyValue.getValueLength());
@@ -158,7 +143,7 @@ public final class HBaseCuboidWriter implements 
ICuboidWriter {
 
     @Override
     public void close() {
-        
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseStreamingOutput.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseStreamingOutput.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseStreamingOutput.java
index 7b4e1a4..896bc72 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseStreamingOutput.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/HBaseStreamingOutput.java
@@ -51,6 +51,7 @@ public class HBaseStreamingOutput implements IStreamingOutput 
{
     public ICuboidWriter getCuboidWriter(IBuildable buildable) {
         try {
             CubeSegment cubeSegment = (CubeSegment) buildable;
+
             final HTableInterface hTable;
             hTable = createHTable(cubeSegment);
             return new HBaseCuboidWriter(cubeSegment, hTable);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/cube/v1/coprocessor/observer/AggregateRegionObserverTest.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/cube/v1/coprocessor/observer/AggregateRegionObserverTest.java
 
b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/cube/v1/coprocessor/observer/AggregateRegionObserverTest.java
index a88e147..a5aba2c 100644
--- 
a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/cube/v1/coprocessor/observer/AggregateRegionObserverTest.java
+++ 
b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/cube/v1/coprocessor/observer/AggregateRegionObserverTest.java
@@ -206,7 +206,7 @@ public class AggregateRegionObserverTest {
         t.setDatabase("DEFAULT");
         TblColRef[] cols = new TblColRef[] { newCol(1, "A", t), newCol(2, "B", 
t), newCol(3, "C", t), newCol(4, "D", t) };
         int[] sizes = new int[] { 1, 1, 1, 1 };
-        return new CoprocessorRowType(cols, sizes);
+        return new CoprocessorRowType(cols, sizes,0);
     }
 
     private TblColRef newCol(int i, String name, TableDesc t) {

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/RangeKeyDistributionJobTest.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/RangeKeyDistributionJobTest.java
 
b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/RangeKeyDistributionJobTest.java
index 05d0b08..eebd9cd 100644
--- 
a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/RangeKeyDistributionJobTest.java
+++ 
b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/steps/RangeKeyDistributionJobTest.java
@@ -32,10 +32,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-/**
- * @author ysong1
- * 
- */
 public class RangeKeyDistributionJobTest extends LocalFileMetadataTestCase {
 
     private Configuration conf;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fce575bc/webapp/app/js/model/cubeDescModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/cubeDescModel.js 
b/webapp/app/js/model/cubeDescModel.js
index 3376bfc..c9dfe56 100644
--- a/webapp/app/js/model/cubeDescModel.js
+++ b/webapp/app/js/model/cubeDescModel.js
@@ -51,7 +51,8 @@ KylinApp.service('CubeDescModel', function () {
       },
       "retention_range": "0",
       "auto_merge_time_ranges": [604800000, 2419200000],
-      "engine_type": 2
+      "engine_type": 2,
+      "storage_type":2
     };
 
     return cubeMeta;

Reply via email to