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

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


The following commit(s) were added to refs/heads/branch-3 by this push:
     new d7a4ecffde9 HBASE-28662 Removing missing scanner via REST should 
return 404 (#5989)
d7a4ecffde9 is described below

commit d7a4ecffde9cb3afbfd79b13d25d0885d5862107
Author: Istvan Toth <[email protected]>
AuthorDate: Wed Jun 19 10:02:43 2024 +0200

    HBASE-28662 Removing missing scanner via REST should return 404 (#5989)
    
    Signed-off-by: Duo Zhang <[email protected]>
    (cherry picked from commit 85bd8eef2c4ff190ce3c248979e61280e2b4d5d5)
---
 .../org/apache/hadoop/hbase/rest/ScannerInstanceResource.java  | 10 ++++++++++
 .../java/org/apache/hadoop/hbase/rest/TestScannerResource.java |  6 ++++++
 2 files changed, 16 insertions(+)

diff --git 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerInstanceResource.java
 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerInstanceResource.java
index 951cafc8632..28ba60fa19b 100644
--- 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerInstanceResource.java
+++ 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/ScannerInstanceResource.java
@@ -161,6 +161,11 @@ public class ScannerInstanceResource extends ResourceBase {
     }
     servlet.getMetrics().incrementRequests(1);
     try {
+      if (generator == null) {
+        servlet.getMetrics().incrementFailedGetRequests(1);
+        return Response.status(Response.Status.NOT_FOUND).type(MIMETYPE_TEXT)
+          .entity("Not found" + CRLF).build();
+      }
       Cell value = generator.next();
       if (value == null) {
         if (LOG.isTraceEnabled()) {
@@ -199,6 +204,11 @@ public class ScannerInstanceResource extends ResourceBase {
       return Response.status(Response.Status.FORBIDDEN).type(MIMETYPE_TEXT)
         .entity("Forbidden" + CRLF).build();
     }
+    if (generator == null) {
+      servlet.getMetrics().incrementFailedDeleteRequests(1);
+      return Response.status(Response.Status.NOT_FOUND).type(MIMETYPE_TEXT)
+        .entity("Not found" + CRLF).build();
+    }
     if (ScannerResource.delete(id)) {
       servlet.getMetrics().incrementSucessfulDeleteRequests(1);
     } else {
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
index 4e23c708ff1..46be9a14960 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
@@ -393,4 +393,10 @@ public class TestScannerResource {
     response = client.get(scannerURI, Constants.MIMETYPE_PROTOBUF);
     assertEquals(410, response.getCode());
   }
+
+  @Test
+  public void deleteNonExistent() throws IOException {
+    Response response = client.delete("/" + TABLE + 
"/scanner/NONEXISTENT_SCAN");
+    assertEquals(404, response.getCode());
+  }
 }

Reply via email to