[
https://issues.apache.org/jira/browse/HBASE-17655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15934772#comment-15934772
]
Hudson commented on HBASE-17655:
--------------------------------
SUCCESS: Integrated in Jenkins build HBase-Trunk_matrix #2713 (See
[https://builds.apache.org/job/HBase-Trunk_matrix/2713/])
HBASE-17655 Removing MemStoreScanner and SnapshotScanner (eshcar: rev
8f4ae0a0dcb658c4fe669bc4cdc68ad8e6219daf)
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/NoOpScanPolicyObserver.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.java
* (edit)
hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingToCellArrayMapMemStore.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/AbstractMemStore.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultStoreFlusher.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java
* (delete)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SnapshotScanner.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFlusher.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ImmutableSegment.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java
* (edit)
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SegmentScanner.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/MemStoreCompactor.java
* (edit)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.java
* (delete)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreScanner.java
> 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, HBASE-17655-V02.patch,
> HBASE-17655-V03.patch, HBASE-17655-V04.patch, HBASE-17655-V05.patch,
> HBASE-17655-V05.patch, HBASE-17655-V06.patch, HBASE-17655-V07.patch,
> HBASE-17655-V08.patch
>
>
> With CompactingMemstore becoming the new default, a store comprises multiple
> memory segments and not just 1-2. MemStoreScanner encapsulates the scanning
> of 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 inside a KVH. Reasoning
> about the correctness of the methods supported by the scanner (seek, next,
> hasNext, peek, etc.) is hard and debugging them is cumbersome.
> In addition, by removing the MemStoreScanner layer we allow store scanner to
> filter 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 fits well with the current code since in most cases at some point a list
> of scanner is expected, so passing the actual list of segment scanners is
> more natural than wrapping a single (high level) scanner with
> Collections.singeltonList(...).
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)