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] [Created] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner
Date Thu, 16 Feb 2017 14:57:41 GMT
Eshcar Hillel created HBASE-17655:

             Summary: 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

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