You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2012/08/28 22:56:19 UTC

svn commit: r1378335 - in /hbase/branches/0.89-fb/src/main: java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java java/org/apache/hadoop/hbase/thrift/generated/TScan.java resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

Author: mbautin
Date: Tue Aug 28 20:56:18 2012
New Revision: 1378335

URL: http://svn.apache.org/viewvc?rev=1378335&view=rev
Log:
[master] Add support to call setBatch for a scan in ThriftServerRunner

Author: jeremyfein

Summary:
Extends the thrift interface to include new field batchSize on TScan when
opening a scanner using TScan. When set, this field triggers a call to
"setBatch" on the scan object to limit number of values reurned.

Test Plan: Need to deploy on test cluster

Reviewers: nzhang, chaoyc, mbautin, aaiyer

Reviewed By: aaiyer

CC: hbase-eng@, davejwatson

Differential Revision: https://phabricator.fb.com/D551420

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/generated/TScan.java
    hbase/branches/0.89-fb/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java?rev=1378335&r1=1378334&r2=1378335&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java Tue Aug 28 20:56:18 2012
@@ -1305,6 +1305,9 @@ public class ThriftServerRunner implemen
         if (tScan.isSetCachingBlocksEnabled()) {
           scan.setCacheBlocks(tScan.isCachingBlocksEnabled());
         }
+        if (tScan.isSetBatchLimit()) {
+          scan.setBatch(tScan.getBatchLimit());
+        }
         if(tScan.isSetColumns() && tScan.getColumns().size() != 0) {
           for(ByteBuffer column : tScan.getColumns()) {
             byte [][] famQf = KeyValue.parseColumn(getBytes(column));

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/generated/TScan.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/generated/TScan.java?rev=1378335&r1=1378334&r2=1378335&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/generated/TScan.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/generated/TScan.java Tue Aug 28 20:56:18 2012
@@ -40,6 +40,7 @@ public class TScan implements org.apache
   private static final org.apache.thrift.protocol.TField CACHING_FIELD_DESC = new org.apache.thrift.protocol.TField("caching", org.apache.thrift.protocol.TType.I32, (short)5);
   private static final org.apache.thrift.protocol.TField FILTER_STRING_FIELD_DESC = new org.apache.thrift.protocol.TField("filterString", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField CACHING_BLOCKS_ENABLED_FIELD_DESC = new org.apache.thrift.protocol.TField("cachingBlocksEnabled", org.apache.thrift.protocol.TType.BOOL, (short)7);
+  private static final org.apache.thrift.protocol.TField BATCH_LIMIT_FIELD_DESC = new org.apache.thrift.protocol.TField("batchLimit", org.apache.thrift.protocol.TType.I32, (short)8);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -54,6 +55,7 @@ public class TScan implements org.apache
   public int caching; // optional
   public ByteBuffer filterString; // optional
   public boolean cachingBlocksEnabled; // optional
+  public int batchLimit; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -63,7 +65,8 @@ public class TScan implements org.apache
     COLUMNS((short)4, "columns"),
     CACHING((short)5, "caching"),
     FILTER_STRING((short)6, "filterString"),
-    CACHING_BLOCKS_ENABLED((short)7, "cachingBlocksEnabled");
+    CACHING_BLOCKS_ENABLED((short)7, "cachingBlocksEnabled"),
+    BATCH_LIMIT((short)8, "batchLimit");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -92,6 +95,8 @@ public class TScan implements org.apache
           return FILTER_STRING;
         case 7: // CACHING_BLOCKS_ENABLED
           return CACHING_BLOCKS_ENABLED;
+        case 8: // BATCH_LIMIT
+          return BATCH_LIMIT;
         default:
           return null;
       }
@@ -135,8 +140,9 @@ public class TScan implements org.apache
   private static final int __TIMESTAMP_ISSET_ID = 0;
   private static final int __CACHING_ISSET_ID = 1;
   private static final int __CACHINGBLOCKSENABLED_ISSET_ID = 2;
-  private BitSet __isset_bit_vector = new BitSet(3);
-  private _Fields optionals[] = {_Fields.START_ROW,_Fields.STOP_ROW,_Fields.TIMESTAMP,_Fields.COLUMNS,_Fields.CACHING,_Fields.FILTER_STRING,_Fields.CACHING_BLOCKS_ENABLED};
+  private static final int __BATCHLIMIT_ISSET_ID = 3;
+  private BitSet __isset_bit_vector = new BitSet(4);
+  private _Fields optionals[] = {_Fields.START_ROW,_Fields.STOP_ROW,_Fields.TIMESTAMP,_Fields.COLUMNS,_Fields.CACHING,_Fields.FILTER_STRING,_Fields.CACHING_BLOCKS_ENABLED,_Fields.BATCH_LIMIT};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -155,6 +161,8 @@ public class TScan implements org.apache
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , "Text")));
     tmpMap.put(_Fields.CACHING_BLOCKS_ENABLED, new org.apache.thrift.meta_data.FieldMetaData("cachingBlocksEnabled", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.BATCH_LIMIT, new org.apache.thrift.meta_data.FieldMetaData("batchLimit", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TScan.class, metaDataMap);
   }
@@ -187,6 +195,7 @@ public class TScan implements org.apache
       this.filterString = other.filterString;
     }
     this.cachingBlocksEnabled = other.cachingBlocksEnabled;
+    this.batchLimit = other.batchLimit;
   }
 
   public TScan deepCopy() {
@@ -205,6 +214,8 @@ public class TScan implements org.apache
     this.filterString = null;
     setCachingBlocksEnabledIsSet(false);
     this.cachingBlocksEnabled = false;
+    setBatchLimitIsSet(false);
+    this.batchLimit = 0;
   }
 
   public byte[] getStartRow() {
@@ -417,6 +428,29 @@ public class TScan implements org.apache
     __isset_bit_vector.set(__CACHINGBLOCKSENABLED_ISSET_ID, value);
   }
 
+  public int getBatchLimit() {
+    return this.batchLimit;
+  }
+
+  public TScan setBatchLimit(int batchLimit) {
+    this.batchLimit = batchLimit;
+    setBatchLimitIsSet(true);
+    return this;
+  }
+
+  public void unsetBatchLimit() {
+    __isset_bit_vector.clear(__BATCHLIMIT_ISSET_ID);
+  }
+
+  /** Returns true if field batchLimit is set (has been assigned a value) and false otherwise */
+  public boolean isSetBatchLimit() {
+    return __isset_bit_vector.get(__BATCHLIMIT_ISSET_ID);
+  }
+
+  public void setBatchLimitIsSet(boolean value) {
+    __isset_bit_vector.set(__BATCHLIMIT_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case START_ROW:
@@ -475,6 +509,14 @@ public class TScan implements org.apache
       }
       break;
 
+    case BATCH_LIMIT:
+      if (value == null) {
+        unsetBatchLimit();
+      } else {
+        setBatchLimit((Integer)value);
+      }
+      break;
+
     }
   }
 
@@ -501,6 +543,9 @@ public class TScan implements org.apache
     case CACHING_BLOCKS_ENABLED:
       return Boolean.valueOf(isCachingBlocksEnabled());
 
+    case BATCH_LIMIT:
+      return Integer.valueOf(getBatchLimit());
+
     }
     throw new IllegalStateException();
   }
@@ -526,6 +571,8 @@ public class TScan implements org.apache
       return isSetFilterString();
     case CACHING_BLOCKS_ENABLED:
       return isSetCachingBlocksEnabled();
+    case BATCH_LIMIT:
+      return isSetBatchLimit();
     }
     throw new IllegalStateException();
   }
@@ -606,6 +653,15 @@ public class TScan implements org.apache
         return false;
     }
 
+    boolean this_present_batchLimit = true && this.isSetBatchLimit();
+    boolean that_present_batchLimit = true && that.isSetBatchLimit();
+    if (this_present_batchLimit || that_present_batchLimit) {
+      if (!(this_present_batchLimit && that_present_batchLimit))
+        return false;
+      if (this.batchLimit != that.batchLimit)
+        return false;
+    }
+
     return true;
   }
 
@@ -692,6 +748,16 @@ public class TScan implements org.apache
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetBatchLimit()).compareTo(typedOther.isSetBatchLimit());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetBatchLimit()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.batchLimit, typedOther.batchLimit);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -769,6 +835,12 @@ public class TScan implements org.apache
       sb.append(this.cachingBlocksEnabled);
       first = false;
     }
+    if (isSetBatchLimit()) {
+      if (!first) sb.append(", ");
+      sb.append("batchLimit:");
+      sb.append(this.batchLimit);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -879,6 +951,14 @@ public class TScan implements org.apache
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 8: // BATCH_LIMIT
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.batchLimit = iprot.readI32();
+              struct.setBatchLimitIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -944,6 +1024,11 @@ public class TScan implements org.apache
         oprot.writeBool(struct.cachingBlocksEnabled);
         oprot.writeFieldEnd();
       }
+      if (struct.isSetBatchLimit()) {
+        oprot.writeFieldBegin(BATCH_LIMIT_FIELD_DESC);
+        oprot.writeI32(struct.batchLimit);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -983,7 +1068,10 @@ public class TScan implements org.apache
       if (struct.isSetCachingBlocksEnabled()) {
         optionals.set(6);
       }
-      oprot.writeBitSet(optionals, 7);
+      if (struct.isSetBatchLimit()) {
+        optionals.set(7);
+      }
+      oprot.writeBitSet(optionals, 8);
       if (struct.isSetStartRow()) {
         oprot.writeBinary(struct.startRow);
       }
@@ -1011,12 +1099,15 @@ public class TScan implements org.apache
       if (struct.isSetCachingBlocksEnabled()) {
         oprot.writeBool(struct.cachingBlocksEnabled);
       }
+      if (struct.isSetBatchLimit()) {
+        oprot.writeI32(struct.batchLimit);
+      }
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, TScan struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(7);
+      BitSet incoming = iprot.readBitSet(8);
       if (incoming.get(0)) {
         struct.startRow = iprot.readBinary();
         struct.setStartRowIsSet(true);
@@ -1054,6 +1145,10 @@ public class TScan implements org.apache
         struct.cachingBlocksEnabled = iprot.readBool();
         struct.setCachingBlocksEnabledIsSet(true);
       }
+      if (incoming.get(7)) {
+        struct.batchLimit = iprot.readI32();
+        struct.setBatchLimitIsSet(true);
+      }
     }
   }
 

Modified: hbase/branches/0.89-fb/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift?rev=1378335&r1=1378334&r2=1378335&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift (original)
+++ hbase/branches/0.89-fb/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift Tue Aug 28 20:56:18 2012
@@ -130,7 +130,8 @@ struct TScan {
   4:optional list<Text> columns,
   5:optional i32 caching,
   6:optional Text filterString,
-  7:optional bool cachingBlocksEnabled
+  7:optional bool cachingBlocksEnabled,
+  8:optional i32 batchLimit
 }
 
 //