hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eshcar Hillel (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner
Date Thu, 16 Feb 2017 19:31:41 GMT

     [ https://issues.apache.org/jira/browse/HBASE-17655?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Eshcar Hillel updated HBASE-17655:
    Status: Patch Available  (was: Open)

> Removing MemStoreScanner and SnapshotScanner
> --------------------------------------------
>                 Key: HBASE-17655
>                 URL: https://issues.apache.org/jira/browse/HBASE-17655
>             Project: HBase
>          Issue Type: Improvement
>          Components: Scanners
>    Affects Versions: 2.0.0
>            Reporter: Eshcar Hillel
>            Assignee: Eshcar Hillel
>         Attachments: HBASE-17655-V01.patch
> With CompactingMemstore becoming the new default, a store comprises multiple memory segments
and not just 1-2. MemStoreScanner encapsulates the scanning of all the segments in the memory
part of the store. SnapshotScanner is used to scan the snapshot segment upon flush to disk.
> Having the logic of scanners scattered in multiple classes (StoreScanner, SegmentScanner,
MemStoreScanner, SnapshotScanner) makes maintainance and debugging challenging tasks, not
always for a good reason.
> For example, MemStoreScanner has a KeyValueHeap (KVH). When creating the store scanner
which also has a KVH, this makes a KVH in a KVH. Reasoning about the correctness of the methods
supported by the scanner (seek, meet, hasNext, peek, etc.) is hard and debugging  them is
> In addition, by removing the MemStoreScanner layer we allow the store scanner to filter
in/out each one of the memory scanners instead of either taking them all (in most cases) or
discarding them all (rarely).
> SnapshotScanner is a simplified version of SegmentScanner as it is used only in a specific
context. However it is an additional implementation of the same logic with no real advantage
of improved performance.
> Therefore, I suggest removing both MemStoreScanner and SnapshotScanner. The code is adjusted
to handle the list of segment scanners they encapsulate.
> This is fits well with the current code since in most cases at some point a list of scanner
is expected and the current scanners are wrapped with Collections.singeltonList(...).

This message was sent by Atlassian JIRA

View raw message