[
https://issues.apache.org/jira/browse/HBASE-5922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13268082#comment-13268082
]
Todd Johnson commented on HBASE-5922:
-------------------------------------
@Anoop, I think the confusion is that documentation quote is the HFileScanner
doc. As far as we can tell, it seems that another class is coordinating two
instances of the HalfStoreFileReader, one for the top and one for the bottom.
Each of these will return false if the search key is in the other half, but the
coordinating class will only return false in the condition you mention.
It seems to me that if your interpretation was correct and our was incorrect,
the test we submitted that searches for every key would fail the first time it
searched for something in the bottom half. Have you run this test? Do you have
any specific concerns about its accuracy? Do you have another test where our
fix would fail, but yours would succeed? Can you submit it as a patch?
> HalfStoreFileReader seekBefore causes StackOverflowError
> --------------------------------------------------------
>
> Key: HBASE-5922
> URL: https://issues.apache.org/jira/browse/HBASE-5922
> Project: HBase
> Issue Type: Bug
> Components: client, io
> Affects Versions: 0.90.0
> Environment: HBase 0.90.4
> Reporter: Nate Putnam
> Assignee: Nate Putnam
> Fix For: 0.90.0
>
> Attachments: HBASE-5922.patch, HBASE-5922.patch, HBASE-5922.v2.patch
>
>
> Calling HRegionServer.getClosestRowBefore() can cause a stack overflow if the
> underlying store file is a reference and the row key is in the bottom.
> java.io.IOException: java.io.IOException: java.lang.StackOverflowError
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.convertThrowableToIOE(HRegionServer.java:990)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.convertThrowableToIOE(HRegionServer.java:978)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.getClosestRowBefore(HRegionServer.java:1651)
> at sun.reflect.GeneratedMethodAccessor174.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:570)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1039)
> Caused by: java.lang.StackOverflowError
> at
> org.apache.hadoop.hbase.io.HalfStoreFileReader$1.seekBefore(HalfStoreFileReader.java:147)
> at
> org.apache.hadoop.hbase.io.HalfStoreFileReader$1.seekBefore(HalfStoreFileReader.java:149)
> at
> org.apache.hadoop.hbase.io.HalfStoreFileReader$1.seekBefore(HalfStoreFileReader.java:149)
> at
> org.apache.hadoop.hbase.io.HalfStoreFileReader$1.seekBefore(HalfStoreFileReader.java:149)
> at
> org.apache.hadoop.hbase.io.HalfStoreFileReader$1.seekBefore(HalfStoreFileReader.java:149)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira