You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Eshcar Hillel (JIRA)" <ji...@apache.org> on 2017/02/16 19:30:41 UTC
[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and
SnapshotScanner
[ https://issues.apache.org/jira/browse/HBASE-17655?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eshcar Hillel updated HBASE-17655:
----------------------------------
Attachment: HBASE-17655-V01.patch
> 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 cumbersome.
> 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
(v6.3.15#6346)