You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2013/07/09 14:05:56 UTC

svn commit: r1501210 - in /hbase/branches/0.95/hbase-server/src: main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java

Author: larsgeorge
Date: Tue Jul  9 12:05:56 2013
New Revision: 1501210

URL: http://svn.apache.org/r1501210
Log:
HBASE-8819 Port HBASE-5428 to Thrift 2

Modified:
    hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java
    hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java

Modified: hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java?rev=1501210&r1=1501209&r2=1501210&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java (original)
+++ hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java Tue Jul  9 12:05:56 2013
@@ -40,6 +40,7 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.filter.ParseFilter;
 import org.apache.hadoop.hbase.thrift.CallQueue;
 import org.apache.hadoop.hbase.thrift.CallQueue.Call;
 import org.apache.hadoop.hbase.thrift.ThriftMetrics;
@@ -194,6 +195,25 @@ public class ThriftServer {
   }
 
   /**
+   * Adds the option to pre-load filters at startup.
+   *
+   * @param conf  The current configuration instance.
+   */
+  protected static void registerFilters(Configuration conf) {
+    String[] filters = conf.getStrings("hbase.thrift.filters");
+    if(filters != null) {
+      for(String filterClass: filters) {
+        String[] filterPart = filterClass.split(":");
+        if(filterPart.length != 2) {
+          log.warn("Invalid filter specification " + filterClass + " - skipping");
+        } else {
+          ParseFilter.registerFilter(filterPart[0], filterPart[1]);
+        }
+      }
+    }
+  }
+
+  /**
    * Start up the Thrift2 server.
    * 
    * @param args
@@ -237,6 +257,7 @@ public class ThriftServer {
 
       conf.set("hbase.regionserver.thrift.server.type", implType);
       conf.setInt("hbase.regionserver.thrift.port", listenPort);
+      registerFilters(conf);
 
       // Construct correct ProtocolFactory
       boolean compact = cmd.hasOption("compact");

Modified: hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java?rev=1501210&r1=1501209&r2=1501210&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java (original)
+++ hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java Tue Jul  9 12:05:56 2013
@@ -27,6 +27,7 @@ import org.apache.hadoop.hbase.HColumnDe
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.MediumTests;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.filter.ParseFilter;
 import org.apache.hadoop.hbase.test.MetricsAssertHelper;
 import org.apache.hadoop.hbase.thrift.ThriftMetrics;
 import org.apache.hadoop.hbase.thrift2.generated.TColumn;
@@ -55,6 +56,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 
 import static org.junit.Assert.*;
 import static java.nio.ByteBuffer.wrap;
@@ -625,7 +627,6 @@ public class TestThriftHBaseServiceHandl
     int scanId = handler.openScanner(table, scan);
     List<TResult> results = null;
     for (int i = 0; i < 10; i++) {
-      System.out.println("batch: " + i);
       // get batch for single row (10x10 is what we expect)
       results = handler.getScannerRows(scanId, 1);
       assertEquals(1, results.size());
@@ -636,7 +637,6 @@ public class TestThriftHBaseServiceHandl
       for (int y = 0; y < 10; y++) {
         int colNum = y + (10 * i);
         String colNumPad = pad(colNum, (byte) 3);
-        System.out.println("col" + colNumPad + ": " + new String(cols.get(y).getQualifier()));
         assertArrayEquals(("col" + colNumPad).getBytes(), cols.get(y).getQualifier());
       }
     }
@@ -655,6 +655,15 @@ public class TestThriftHBaseServiceHandl
   }
 
   @Test
+  public void testFilterRegistration() throws Exception {
+    Configuration conf = UTIL.getConfiguration();
+    conf.set("hbase.thrift.filters", "MyFilter:filterclass");
+    ThriftServer.registerFilters(conf);
+    Map<String, String> registeredFilters = ParseFilter.getAllFilters();
+    assertEquals("filterclass", registeredFilters.get("MyFilter"));
+  }
+
+  @Test
   public void testMetrics() throws Exception {
     Configuration conf = UTIL.getConfiguration();
     ThriftMetrics metrics = getMetrics(conf);