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;