[ 
https://issues.apache.org/jira/browse/HBASE-28999?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17903551#comment-17903551
 ] 

Istvan Toth commented on HBASE-28999:
-------------------------------------

No, 410 indicates that the resource will not be available later.



There is no really good match for the table disabled case. We'd ideally have a 
4xx message that indicates that the resource is temporarily unavailable, but I 
couldn't find one.

 

> Scan endpoint returns HTTP 500 Internal Server Error when table is disabled
> ---------------------------------------------------------------------------
>
>                 Key: HBASE-28999
>                 URL: https://issues.apache.org/jira/browse/HBASE-28999
>             Project: HBase
>          Issue Type: Task
>          Components: REST
>    Affects Versions: 4.0.0-alpha-1
>            Reporter: Dávid Paksy
>            Assignee: Dávid Paksy
>            Priority: Major
>              Labels: pull-request-available
>
> h2. Scenario
> Try to use stateless scanner a *disabled table* on REST interface.
> h2. Actual result
> Scan endpoint returns HTTP 500 Internal Server Error.
> {code:java}
> {
> "servlet":"org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer-33c2bd",
> "message":"Request failed.",
> "url":"/test/*",
> "status":"500"
> } {code}
> h2. Expected result
> It should NOT return HTTP 500 Internal Server Error.
> (?) Probably some client error status code (4xx).
> h2. How to reproduce
>  * Create a new table (e.g via hbase shell, etc)
>  * Disable the table
>  * Try to scan the table with the [stateless 
> scanner|https://issues.apache.org/jira/browse/HBASE-9343] REST endpoint
> {code:java}
> curl -v -X GET \
>   -H "Accept: application/json" \
>   "http://localhost:8080/test/*"; 
> ...
> < HTTP/1.1 500 Server Error
> ...{code}
> h2. Additional information
> REST server logs snippet:
> {code:java}
> 2024-11-26T08:53:25,140 WARN  [qtp485475507-50 {}] server.HttpChannel: 
> handleException /test/* com.fasterxml.jackson.databind.JsonMappingException: 
> org.apache.hadoop.hbase.TableNotEnabledException: test (through reference 
> chain: 
> org.apache.hadoop.hbase.rest.TableScanResource$CellSetModelStream["Row"])2024-11-26T08:53:25,141
>  WARN  [qtp485475507-50 {}] server.HttpChannelState: unhandled due to prior 
> sendErrorjavax.servlet.ServletException: 
> org.apache.hbase.thirdparty.org.glassfish.jersey.server.ContainerException: 
> com.fasterxml.jackson.databind.JsonMappingException: 
> org.apache.hadoop.hbase.TableNotEnabledException: test (through reference 
> chain: 
> org.apache.hadoop.hbase.rest.TableScanResource$CellSetModelStream["Row"])
> Caused by: java.io.UncheckedIOException: 
> org.apache.hadoop.hbase.TableNotEnabledException: test       at 
> org.apache.hadoop.hbase.client.ResultScanner$1.hasNext(ResultScanner.java:53) 
> ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]      at 
> org.apache.hadoop.hbase.rest.TableScanResource$1$1.hasNext(TableScanResource.java:77)
>  ~[hbase-rest-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT] {code}
> The other scan endpoint handles this better (returns HTTP 406 - Not 
> Acceptable):
> {code:java}
> curl -v -X PUT \                                                              
>        
>   -H "Accept: application/json" \
>   -H "Content-Type: text/xml" \                                 
>   -d '<Scanner batch="1"/>' \
>   "http://localhost:8080/test/scanner"; | jq
> * Host localhost:8080 was resolved.
> * IPv6: ::1
> * IPv4: 127.0.0.1
> * Connected to localhost (::1) port 8080
> > PUT /test/scanner HTTP/1.1
> > Host: localhost:8080
> > User-Agent: curl/8.9.1
> > Accept: application/json
> > Content-Type: text/xml
> > Content-Length: 20
> > 
> } [20 bytes data]
> * upload completely sent off: 20 bytes
> < HTTP/1.1 201 Created
> < X-Frame-Options: DENY
> < X-Content-Type-Options: nosniff
> < X-XSS-Protection: 1; mode=block
> < Location: http://localhost:8080/test/scanner/17327004740183794717d
> < Content-Length: 0
> curl -vi -X GET  -H "Accept: text/json" 
> http://localhost:8080/test/scanner/17327004740183794717d     
> * Host localhost:8080 was resolved.
> * IPv6: ::1
> * IPv4: 127.0.0.1
> *   Trying [::1]:8080...
> * Connected to localhost (::1) port 8080
> > GET /test/scanner/17327004740183794717d HTTP/1.1
> > Host: localhost:8080
> > User-Agent: curl/8.9.1
> > Accept: text/json
> > 
> * Request completely sent off
> < HTTP/1.1 406 Not Acceptable
> HTTP/1.1 406 Not Acceptable
> < X-Frame-Options: DENY
> X-Frame-Options: DENY
> < X-Content-Type-Options: nosniff
> X-Content-Type-Options: nosniff
> < X-XSS-Protection: 1; mode=block
> X-XSS-Protection: 1; mode=block
> < Cache-Control: must-revalidate,no-cache,no-store
> Cache-Control: must-revalidate,no-cache,no-store
> < Content-Type: text/json
> Content-Type: text/json
> < Content-Length: 187
> Content-Length: 187
> < 
> {
> "servlet":"org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer-1dfd5f51",
> "message":"Not Acceptable",
> "url":"/test/scanner/17327004740183794717d",
> "status":"406"
> * Connection #0 to host localhost left intact
> }%                                                                            
>                
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to