[
https://issues.apache.org/jira/browse/HBASE-14497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sean Busbey updated HBASE-14497:
--------------------------------
Fix Version/s: 1.2.7
> Reverse Scan threw StackOverflow caused by readPt checking
> ----------------------------------------------------------
>
> Key: HBASE-14497
> URL: https://issues.apache.org/jira/browse/HBASE-14497
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.0, 0.98.14, 1.3.0
> Reporter: Yerui Sun
> Assignee: Yerui Sun
> Priority: Major
> Fix For: 2.0.0, 1.3.0, 0.98.16, 1.2.7
>
> Attachments: 14497-branch-1-v6.patch, 14497-master-v6.patch,
> HBASE-14497-0.98-v6.patch, HBASE-14497-0.98.patch,
> HBASE-14497-branch-1-v2.patch, HBASE-14497-branch-1-v3.patch,
> HBASE-14497-branch-1-v6.patch, HBASE-14497-branch-1.patch,
> HBASE-14497-master-v2.patch, HBASE-14497-master-v3.patch,
> HBASE-14497-master-v3.patch, HBASE-14497-master-v4.patch,
> HBASE-14497-master-v5.patch, HBASE-14497-master.patch
>
>
> I met stack overflow error in StoreFileScanner.seekToPreviousRow using
> reversed scan. I searched and founded HBASE-14155, but it seems to be a
> different reason.
> The seekToPreviousRow will fetch the row which closest before, and compare
> mvcc to the readPt, which acquired when scanner created. If the row's mvcc is
> bigger than readPt, an recursive call of seekToPreviousRow will invoked, to
> find the next closest before row.
> Considering we created a scanner for reversed scan, and some data with
> smaller rows was written and flushed, before calling scanner next. When
> seekToPreviousRow was invoked, it would call itself recursively, until all
> rows which written after scanner created were iterated. The depth of
> recursive calling stack depends on the count of rows, the stack overflow
> error will be threw if the count of rows is large, like 10000.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)