[ https://issues.apache.org/jira/browse/HBASE-28999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dávid Paksy updated HBASE-28999: -------------------------------- Description: 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: {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} was: 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} > 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 > Priority: Major > > 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: > {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)