hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ramkris...@apache.org
Subject hbase git commit: HBASE-16299 Update REST API scanner with ability to do reverse scan (Minwoo Kang)
Date Mon, 08 Aug 2016 08:57:49 GMT
Repository: hbase
Updated Branches:
  refs/heads/branch-1 0354dbf1e -> 657848144


HBASE-16299 Update REST API scanner with ability to do reverse scan
(Minwoo Kang)


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

Branch: refs/heads/branch-1
Commit: 65784814476ecdc0c2f86c6e346a5799bdb392b0
Parents: 0354dbf
Author: Ramkrishna <ramkrishna.s.vasudevan@intel.com>
Authored: Mon Aug 8 14:27:13 2016 +0530
Committer: Ramkrishna <ramkrishna.s.vasudevan@intel.com>
Committed: Mon Aug 8 14:27:13 2016 +0530

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/rest/Constants.java |  3 +-
 .../apache/hadoop/hbase/rest/TableResource.java |  2 +
 .../apache/hadoop/hbase/rest/TestTableScan.java | 51 ++++++++++++++++++++
 3 files changed, 55 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/65784814/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/Constants.java
----------------------------------------------------------------------
diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/Constants.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/Constants.java
index 505dbb3..54ce117 100644
--- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/Constants.java
+++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/Constants.java
@@ -68,7 +68,8 @@ public interface Constants {
   String SCAN_BATCH_SIZE = "batchsize";
   String SCAN_LIMIT = "limit";
   String SCAN_FETCH_SIZE = "hbase.rest.scan.fetchsize";
-  String SCAN_FILTER = "filter"; 
+  String SCAN_FILTER = "filter";
+  String SCAN_REVERSED = "reversed";
   String CUSTOM_FILTERS = "hbase.rest.custom.filters"; 
 
   String ROW_KEYS_PARAM_NAME = "row";

http://git-wip-us.apache.org/repos/asf/hbase/blob/65784814/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableResource.java
----------------------------------------------------------------------
diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableResource.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableResource.java
index ebf2d01..5671007 100644
--- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableResource.java
+++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableResource.java
@@ -134,6 +134,7 @@ public class TableResource extends ResourceBase {
       @DefaultValue("0") @QueryParam(Constants.SCAN_START_TIME) long startTime,
       @DefaultValue(Long.MAX_VALUE + "") @QueryParam(Constants.SCAN_END_TIME) long endTime,
       @DefaultValue("true") @QueryParam(Constants.SCAN_BATCH_SIZE) boolean cacheBlocks,
+      @DefaultValue("false") @QueryParam(Constants.SCAN_REVERSED) boolean reversed,
       @DefaultValue("") @QueryParam(Constants.SCAN_FILTER) String filters) {
     try {
       Filter filter = null;
@@ -200,6 +201,7 @@ public class TableResource extends ResourceBase {
       }
       int fetchSize = this.servlet.getConfiguration().getInt(Constants.SCAN_FETCH_SIZE, 10);
       tableScan.setCaching(fetchSize);
+      tableScan.setReversed(reversed);
      return new TableScanResource(hTable.getScanner(tableScan), userRequestedLimit);
     } catch (Exception exp) {
       servlet.getMetrics().incrementFailedScanRequests(1);

http://git-wip-us.apache.org/repos/asf/hbase/blob/65784814/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
----------------------------------------------------------------------
diff --git a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
index 9fc9301..874a390 100644
--- a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
+++ b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableScan.java
@@ -29,6 +29,7 @@ import java.io.InputStream;
 import java.io.Serializable;
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import javax.ws.rs.core.MediaType;
@@ -547,6 +548,56 @@ public class TestTableScan {
     assertEquals(0, count);
   }
 
+  @Test
+  public void testReversed() throws IOException, JAXBException {
+    StringBuilder builder = new StringBuilder();
+    builder.append("/*");
+    builder.append("?");
+    builder.append(Constants.SCAN_COLUMN + "=" + COLUMN_1);
+    builder.append("&");
+    builder.append(Constants.SCAN_START_ROW + "=aaa");
+    builder.append("&");
+    builder.append(Constants.SCAN_END_ROW + "=aay");
+    Response response = client.get("/" + TABLE + builder.toString(), Constants.MIMETYPE_XML);
+    assertEquals(200, response.getCode());
+    JAXBContext ctx = JAXBContext.newInstance(CellSetModel.class);
+    Unmarshaller ush = ctx.createUnmarshaller();
+    CellSetModel model = (CellSetModel) ush.unmarshal(response.getStream());
+    int count = TestScannerResource.countCellSet(model);
+    assertEquals(24, count);
+    List<RowModel> rowModels = model.getRows().subList(1, count);
+
+    //reversed
+    builder = new StringBuilder();
+    builder.append("/*");
+    builder.append("?");
+    builder.append(Constants.SCAN_COLUMN + "=" + COLUMN_1);
+    builder.append("&");
+    builder.append(Constants.SCAN_START_ROW + "=aay");
+    builder.append("&");
+    builder.append(Constants.SCAN_END_ROW + "=aaa");
+    builder.append("&");
+    builder.append(Constants.SCAN_REVERSED + "=true");
+    response = client.get("/" + TABLE + builder.toString(), Constants.MIMETYPE_XML);
+    assertEquals(200, response.getCode());
+    model = (CellSetModel) ush.unmarshal(response.getStream());
+    count = TestScannerResource.countCellSet(model);
+    assertEquals(24, count);
+    List<RowModel> reversedRowModels = model.getRows().subList(1, count);
+
+    Collections.reverse(reversedRowModels);
+    assertEquals(rowModels.size(), reversedRowModels.size());
+    for (int i = 0; i < rowModels.size(); i++) {
+      RowModel rowModel = rowModels.get(i);
+      RowModel reversedRowModel = reversedRowModels.get(i);
+
+      assertEquals(new String(rowModel.getKey(), "UTF-8"),
+          new String(reversedRowModel.getKey(), "UTF-8"));
+      assertEquals(new String(rowModel.getCells().get(0).getValue(), "UTF-8"),
+          new String(reversedRowModel.getCells().get(0).getValue(), "UTF-8"));
+    }
+  }
+
   public static class CustomFilter extends PrefixFilter {
     private byte[] key = null;
 


Mime
View raw message