You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by "Kevin Minder (JIRA)" <ji...@apache.org> on 2016/04/14 21:48:25 UTC

[jira] [Assigned] (KNOX-709) HBase request URLs must not be URL encoded

     [ https://issues.apache.org/jira/browse/KNOX-709?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kevin Minder reassigned KNOX-709:
---------------------------------

    Assignee: Kevin Minder

> HBase request URLs must not be URL encoded
> ------------------------------------------
>
>                 Key: KNOX-709
>                 URL: https://issues.apache.org/jira/browse/KNOX-709
>             Project: Apache Knox
>          Issue Type: Bug
>    Affects Versions: 0.9.0
>            Reporter: Kevin Minder
>            Assignee: Kevin Minder
>             Fix For: 0.9.0
>
>
> A recent change to deal with URL encoding seems to have caused an issue with HBase.  Ultimately this appears to be a problem with HBase improperly decoding a URL but this needs to be accounted for in Knox.  You can see from the audit log output below that colons and commas in the URL path are being encoded and HBase appears to be decoding them improperly.
> {code}
> 16/04/12 13:40:24 ||20f26ac5-f2ea-4b41-8050-9bbbfc08f660|audit|WEBHBASE|guest|||dispatch|uri|http://localhost:60080/test_table/*/family1%3Arow2_col1%2Cfamily2%3A/0%2C9223372036854775807?v=1&user.name=guest|success|Response status: 500
> 16/04/12 13:40:24 ||20f26ac5-f2ea-4b41-8050-9bbbfc08f660|audit|WEBHBASE|guest|||access|uri|/gateway/sandbox/hbase/test_table/*/family1:row2_col1,family2:/0,9223372036854775807?v=1|success|Response status: 500
> {code}
> This results in failures containing this message found but enabling HTTP client logging.
> {code}
> <h3>Caused by:</h3><pre>java.lang.NumberFormatException: For input string: "0,9223372036854775807"
> 	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
> 	at java.lang.Long.parseLong(Long.java:441)
> 	at java.lang.Long.valueOf(Long.java:540)
> 	at org.apache.hadoop.hbase.rest.RowSpec.parseTimestamp(RowSpec.java:167)
> 	at org.apache.hadoop.hbase.rest.RowSpec.&lt;init&gt;(RowSpec.java:62)
> 	at org.apache.hadoop.hbase.rest.RowResource.&lt;init&gt;(RowResource.java:77)
> 	at org.apache.hadoop.hbase.rest.TableResource.getRowResourceWithSuffixGlobbing(TableResource.java:119)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.invokeSubLocator(SubLocatorRule.java:180)
> 	at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:107)
> 	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> 	at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134)
> 	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> 	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
> 	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> 	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
> 	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
> 	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
> 	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
> 	at org.apache.hadoop.hbase.rest.filter.GzipFilter.doFilter(GzipFilter.java:76)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:767)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> 	at org.mortbay.jetty.Server.handle(Server.java:326)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> 	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
> 	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)