-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HBASE-28999 Return HTTP 503 when stateless scan REST endpoint is invoked on disabled table #6520
Conversation
…ked on disabled table Before it returned HTTP 500 Internal Server Error.
@@ -139,6 +139,9 @@ public TableScanResource getScanResource(final @PathParam("scanspec") String sca | |||
@DefaultValue("true") @QueryParam(Constants.SCAN_INCLUDE_START_ROW) boolean includeStartRow, | |||
@DefaultValue("false") @QueryParam(Constants.SCAN_INCLUDE_STOP_ROW) boolean includeStopRow) { | |||
try { | |||
if (servlet.getAdmin().isTableDisabled(TableName.valueOf(this.table))) { | |||
throw new ServiceUnavailableException("Table disabled."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To be completely honest I'm not 100% sure if this is the best way to solve this.
This newly created ServiceUnavailableException
class extends IOException
so that it will be caught and handled in the catch block below (also incrementing failed requests metrics).
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am worried that this explicit check may cause some extra network traffic.
Can we catch whatever exception HBase throws in this case, and process that ?
Also, the same check applies to most operations, so we should probably check this on all non-metadata endpoints.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Many thanks for the feedback. 👍
Good point, performance is very important. I'll look into it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked that the TableNotEnabledException
is coming via TableScanResource.CellSetModelStream
here: https://github.com/apache/hbase/blob/master/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableScanResource.java#L77
This code is actually called by JAXB / Jackson (for XML / JSON respectively).
The problem is that even if we catch the TableNotEnabledException
in the Iterator.hasNext()
implementation we cannot throw any checked Exceptions from there or return REST response.
Here is the full stacktrace:
2024-12-05T11:21:47,001 WARN [qtp485475507-43 {}] server.HttpChannel: handleException /test/* org.apache.hadoop.hbase.TableNotEnabledException: test
2024-12-05T11:21:47,001 WARN [qtp485475507-43 {}] server.HttpChannelState: unhandled due to prior sendError
javax.servlet.ServletException: java.io.UncheckedIOException: org.apache.hadoop.hbase.TableNotEnabledException: test
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:412) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hadoop.hbase.http.SecurityHeadersFilter.doFilter(SecurityHeadersFilter.java:66) ~[hbase-http-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.doFilter(ClickjackingPreventionFilter.java:49) ~[hbase-http-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hadoop.hbase.rest.filter.GzipFilter.doFilter(GzipFilter.java:73) ~[hbase-rest-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.Server.handle(Server.java:516) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[hbase-shaded-jetty-4.1.9.jar:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
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]
at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister$1.hasNext(Lister.java:285) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:137) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:159) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:597) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:328) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:498) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:320) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:249) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:110) ~[jaxb-api-2.3.1.jar:2.3.0]
at org.apache.hbase.thirdparty.org.glassfish.jersey.jaxb.internal.AbstractRootElementJaxbProvider.writeTo(AbstractRootElementJaxbProvider.java:181) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.jaxb.internal.AbstractRootElementJaxbProvider.writeTo(AbstractRootElementJaxbProvider.java:160) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:242) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:227) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:85) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:61) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1116) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:649) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:380) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:370) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:259) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397) ~[hbase-shaded-jersey-4.1.9.jar:?]
... 45 more
Caused by: org.apache.hadoop.hbase.TableNotEnabledException: test
at java.lang.Thread.getStackTrace(Thread.java:1619) ~[?:?]
at org.apache.hadoop.hbase.util.FutureUtils.setStackTrace(FutureUtils.java:144) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.util.FutureUtils.rethrow(FutureUtils.java:163) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.client.AsyncTableResultScanner.next(AsyncTableResultScanner.java:173) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.client.ResultScanner$1.hasNext(ResultScanner.java:51) ~[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]
at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister$1.hasNext(Lister.java:285) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:137) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:159) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:597) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:328) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:498) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:320) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:249) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:110) ~[jaxb-api-2.3.1.jar:2.3.0]
at org.apache.hbase.thirdparty.org.glassfish.jersey.jaxb.internal.AbstractRootElementJaxbProvider.writeTo(AbstractRootElementJaxbProvider.java:181) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.jaxb.internal.AbstractRootElementJaxbProvider.writeTo(AbstractRootElementJaxbProvider.java:160) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:242) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:227) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:85) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:61) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1116) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:649) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:380) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:370) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:259) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hadoop.hbase.http.SecurityHeadersFilter.doFilter(SecurityHeadersFilter.java:66) ~[hbase-http-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.doFilter(ClickjackingPreventionFilter.java:49) ~[hbase-http-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hadoop.hbase.rest.filter.GzipFilter.doFilter(GzipFilter.java:73) ~[hbase-rest-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.Server.handle(Server.java:516) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[hbase-shaded-jetty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[hbase-shaded-jetty-4.1.9.jar:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
at --------Future.get--------(Unknown Source) ~[?:?]
at org.apache.hadoop.hbase.client.AsyncRpcRetryingCaller.lambda$onError$2(AsyncRpcRetryingCaller.java:206) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.util.FutureUtils.lambda$addListener$0(FutureUtils.java:71) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
at org.apache.hadoop.hbase.client.RawAsyncHBaseAdmin.completeCheckTableState(RawAsyncHBaseAdmin.java:767) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.client.RawAsyncHBaseAdmin.lambda$isTableDisabled$40(RawAsyncHBaseAdmin.java:797) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.util.FutureUtils.lambda$addListener$0(FutureUtils.java:71) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
at org.apache.hadoop.hbase.ClientMetaTableAccessor.lambda$getTableState$0(ClientMetaTableAccessor.java:96) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.util.FutureUtils.lambda$addListener$0(FutureUtils.java:71) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
at org.apache.hadoop.hbase.client.AsyncSingleRequestRpcRetryingCaller.lambda$call$4(AsyncSingleRequestRpcRetryingCaller.java:92) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.util.FutureUtils.lambda$addListener$0(FutureUtils.java:71) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[?:?]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[?:?]
at org.apache.hadoop.hbase.client.ConnectionUtils$2.run(ConnectionUtils.java:628) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.com.google.protobuf.RpcUtil$1.run(RpcUtil.java:56) ~[hbase-shaded-protobuf-4.1.9.jar:4.1.9]
at org.apache.hbase.thirdparty.com.google.protobuf.RpcUtil$1.run(RpcUtil.java:47) ~[hbase-shaded-protobuf-4.1.9.jar:4.1.9]
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.onCallFinished(AbstractRpcClient.java:400) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.AbstractRpcClient$3.run(AbstractRpcClient.java:430) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.AbstractRpcClient$3.run(AbstractRpcClient.java:425) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.Call.callComplete(Call.java:117) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.Call.setResponse(Call.java:149) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.RpcConnection.finishCall(RpcConnection.java:396) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.RpcConnection.readResponse(RpcConnection.java:461) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.NettyRpcDuplexHandler.readResponse(NettyRpcDuplexHandler.java:125) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.ipc.NettyRpcDuplexHandler.channelRead(NettyRpcDuplexHandler.java:140) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[hbase-shaded-netty-4.1.9.jar:?]
at org.apache.hbase.thirdparty.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[hbase-shaded-netty-4.1.9.jar:?]
... 1 more
Do you maybe have any idea how to solve this? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The other endpoints have this code for that:
hbase/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/TableScanResource.java
Line 116 in 1880cb3
processException(exp); |
I think that would work here as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Of course we should add a new case for the not enabled case to the exception handler.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Many thanks for the suggestion but it will not work this particular case as the linked source is from the protobuf implementation which is very different: it uses the ProtobufStreamingOutput
class and it does not uses the CellSetModelStream
and that custom iterator implementation.
I did the change but the test will fail.
Here you can see why it will not work:
public CellSetModelStream get(final @Context UriInfo uriInfo) {
if (LOG.isTraceEnabled()) {
LOG.trace("GET " + uriInfo.getAbsolutePath());
}
servlet.getMetrics().incrementRequests(1);
try {
final int rowsToSend = userRequestedLimit;
servlet.getMetrics().incrementSucessfulScanRequests(1);
final Iterator<Result> itr = results.iterator();
return new CellSetModelStream(new ArrayList<RowModel>() {
@Override
public Iterator<RowModel> iterator() {
return new Iterator<RowModel>() {
int count = rowsToSend;
@Override
public boolean hasNext() {
return count > 0 && itr.hasNext(); // <-- Exception is thrown here (JAXB / Jackson calls this later)
}
@Override
public RowModel next() {
Result rs = itr.next();
if ((rs == null) || (count <= 0)) {
return null;
}
RowModel rModel = RestUtil.createRowModelFromResult(rs);
count--;
if (count == 0) {
results.close();
}
return rModel;
}
};
}
});
} catch (Exception exp) { // <-- Exception will not be caught here as "problematic" code is called later by JAXB / Jackson when serializing the response
servlet.getMetrics().incrementFailedScanRequests(1);
processException(exp);
LOG.warn(exp.toString(), exp);
return null;
}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually this Exception also happening in the protobuf case. There ProtobufStreamingOutput.write()
is invoked by Jersey because it is using a streaming output feature
Caused by: org.apache.hadoop.hbase.TableNotEnabledException: test
at java.lang.Thread.getStackTrace(Thread.java:1619) ~[?:?]
at org.apache.hadoop.hbase.util.FutureUtils.setStackTrace(FutureUtils.java:144) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.util.FutureUtils.rethrow(FutureUtils.java:163) ~[hbase-common-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.client.AsyncTableResultScanner.next(AsyncTableResultScanner.java:173) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.client.ResultScanner.next(ResultScanner.java:94) ~[hbase-client-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hadoop.hbase.rest.ProtobufStreamingOutput.write(ProtobufStreamingOutput.java:65) ~[hbase-rest-4.0.0-alpha-1-SNAPSHOT.jar:4.0.0-alpha-1-SNAPSHOT]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:55) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:37) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:242) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:227) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:85) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:61) ~[hbase-shaded-jersey-4.1.9.jar:?]
at org.apache.hbase.thirdparty.org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) ~[hbase-shaded-jersey-4.1.9.jar:?]
...
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
instead of eagerly checking if table is disabled. Reason: explicit check may cause some extra network traffic.
💔 -1 overall
This message was automatically generated. |
🎊 +1 overall
This message was automatically generated. |
I don't have a solution. Maybe we should just leave this be, and trade a good error message off for performance. |
Many thanks. I agree. Then I'll close this PR. |
Before this change it returned HTTP 500 Internal Server Error in this case.