This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.5 by this push:
     new d7b1954272b HBASE-28650 REST multiget endpoint returns 500 error if no 
rows are specified (#5999)
d7b1954272b is described below

commit d7b1954272ba0272e218e9bcf1aa510b5591d2c2
Author: Istvan Toth <[email protected]>
AuthorDate: Tue Jun 18 15:35:49 2024 +0200

    HBASE-28650 REST multiget endpoint returns 500 error if no rows are 
specified (#5999)
    
    Signed-off-by: Duo Zhang <[email protected]>
    (cherry picked from commit f2b7b77552ef1c4769a2c933c0f22f7cbfe2f237)
---
 .../apache/hadoop/hbase/rest/MultiRowResource.java   | 20 +++++++++++---------
 .../hadoop/hbase/rest/TestMultiRowResource.java      | 11 +++++++++++
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/MultiRowResource.java 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/MultiRowResource.java
index 8cce772472a..84912f500d3 100644
--- 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/MultiRowResource.java
+++ 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/MultiRowResource.java
@@ -98,19 +98,21 @@ public class MultiRowResource extends ResourceBase 
implements Constants {
         parsedParamFilter = pf.parseFilterString(filterBytes);
       }
       List<RowSpec> rowSpecs = new ArrayList<>();
-      for (String rk : params.get(ROW_KEYS_PARAM_NAME)) {
-        RowSpec rowSpec = new RowSpec(rk, keyEncoding);
+      if (params.containsKey(ROW_KEYS_PARAM_NAME)) {
+        for (String rk : params.get(ROW_KEYS_PARAM_NAME)) {
+          RowSpec rowSpec = new RowSpec(rk, keyEncoding);
 
-        if (this.versions != null) {
-          rowSpec.setMaxVersions(this.versions);
-        }
+          if (this.versions != null) {
+            rowSpec.setMaxVersions(this.versions);
+          }
 
-        if (this.columns != null) {
-          for (int i = 0; i < this.columns.length; i++) {
-            rowSpec.addColumn(Bytes.toBytes(this.columns[i]));
+          if (this.columns != null) {
+            for (int i = 0; i < this.columns.length; i++) {
+              rowSpec.addColumn(Bytes.toBytes(this.columns[i]));
+            }
           }
+          rowSpecs.add(rowSpec);
         }
-        rowSpecs.add(rowSpec);
       }
 
       MultiRowResultReader reader = new 
MultiRowResultReader(this.tableResource.getName(), rowSpecs,
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
index a603021bf0b..03c3fe06859 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
@@ -219,6 +219,17 @@ public class TestMultiRowResource {
     client.delete(row_6_url, extraHdr);
   }
 
+  @Test
+  public void testMultiCellGetNoKeys() throws IOException {
+    StringBuilder path = new StringBuilder();
+    path.append("/");
+    path.append(TABLE);
+    path.append("/multiget");
+
+    Response response = client.get(path.toString(), Constants.MIMETYPE_XML);
+    assertEquals(404, response.getCode());
+  }
+
   @Test
   public void testMultiCellGetXML() throws IOException {
     String row_5_url = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1;

Reply via email to