You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Hudson (JIRA)" <ji...@apache.org> on 2018/01/08 20:48:01 UTC

[jira] [Commented] (HBASE-14497) Reverse Scan threw StackOverflow caused by readPt checking

    [ https://issues.apache.org/jira/browse/HBASE-14497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16317040#comment-16317040 ] 

Hudson commented on HBASE-14497:
--------------------------------

SUCCESS: Integrated in Jenkins build HBase-1.2-IT #1056 (See [https://builds.apache.org/job/HBase-1.2-IT/1056/])
HBASE-19730 Backport HBASE-14497 Reverse Scan threw StackOverflow caused (tedyu: rev 85c3e5c2e1e85eed4c12368ed3d5295b8d374f43)
* (edit) hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
* (edit) hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java
* (edit) hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java


> 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
>             Fix For: 2.0.0, 1.3.0, 0.98.16
>
>         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
(v6.4.14#64029)