[ 
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)

Reply via email to