[
https://issues.apache.org/jira/browse/HBASE-8856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13698575#comment-13698575
]
Robert Dyer commented on HBASE-8856:
------------------------------------
[~enis] I'm not entirely sure what the proper fix is, as I don't know the
semantics of this method that well. But it seems it is allowed to return null
"null if it cannot be split" so perhaps the fix is to check if the super call
returns null and just pass that null along? If that seems right I can easily
write such a patch.
[~ram_krish] Possibly, though the traces are very different. That issue might
fix why the super call returned null in the first place, but the code
definitely needs to handle nulls (as the super is allowed to return null) so
this issue still needs addressed.
> Crash when attempting split with DelimitedKeyPrefixRegionSplitPolicy
> --------------------------------------------------------------------
>
> Key: HBASE-8856
> URL: https://issues.apache.org/jira/browse/HBASE-8856
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.94.8
> Reporter: Robert Dyer
>
> I am using DelimitedKeyPrefixRegionSplitPolicy on my table. When I attempted
> to split the table from the web interface, it gives the error below.
> I believe the problem is
> org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy.getSplitPoint:75
> - the call from super.getSplitPoint() (line 71) returns null and this
> condition is not checked.
> -------
> HTTP ERROR 500
> Problem accessing /table.jsp. Reason:
> java.io.IOException: java.lang.NullPointerException: array
> at
> com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
> at com.google.common.primitives.Bytes.indexOf(Bytes.java:115)
> at
> org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy.getSplitPoint(DelimitedKeyPrefixRegionSplitPolicy.java:75)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.checkSplit(HRegion.java:5697)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.splitRegion(HRegionServer.java:3279)
> at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:320)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)
> Caused by:
> org.apache.hadoop.ipc.RemoteException: java.io.IOException:
> java.lang.NullPointerException: array
> at
> com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
> at com.google.common.primitives.Bytes.indexOf(Bytes.java:115)
> at
> org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy.getSplitPoint(DelimitedKeyPrefixRegionSplitPolicy.java:75)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.checkSplit(HRegion.java:5697)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.splitRegion(HRegionServer.java:3279)
> at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:320)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)
> at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:995)
> at
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:86)
> at com.sun.proxy.$Proxy11.splitRegion(Unknown Source)
> at org.apache.hadoop.hbase.client.HBaseAdmin.split(HBaseAdmin.java:1620)
> at org.apache.hadoop.hbase.client.HBaseAdmin.split(HBaseAdmin.java:1608)
> at org.apache.hadoop.hbase.client.HBaseAdmin.split(HBaseAdmin.java:1565)
> at org.apache.hadoop.hbase.client.HBaseAdmin.split(HBaseAdmin.java:1552)
> at
> org.apache.hadoop.hbase.generated.master.table_jsp._jspService(table_jsp.java:94)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
> 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.http.HttpServer$QuotingInputFilter.doFilter(HttpServer.java:835)
> 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.security.SecurityHandler.handle(SecurityHandler.java:216)
> at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> 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)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira