[ https://issues.apache.org/jira/browse/HBASE-5922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13268126#comment-13268126 ]
stack commented on HBASE-5922: ------------------------------ bq. What about you Stack? I'm staying out of you fellas' way. You lot seem to be figuring it out just fine. Let me know if you want me to write a test. bq. If you test seekTo() on the bottom file passing the splitKey as the key, it will give the KV as the last KV in the file.. Not null... So we need to be consistent right This seems correct to me... that we should be returning last key in the bottom (the 'before') rather than a null. Going by Todd's comment above, the test to write should be at the StoreFile level since it is the user of HalfFile. I could do a test that had a StoreFile on a top half and another on a bottom half. Then I'd verify the seekBefore around the extremes (it should be doing the before as Anoop suggests and not returning the passed key, if it exists). This is a bad bug that you fellas have found. > 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