[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2019-02-06 Thread Sean Busbey (JIRA)


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

Sean Busbey updated HBASE-17655:

Fix Version/s: 2.0.0-alpha-1

> 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
>Priority: Major
> Fix For: 2.0.0-alpha-1
>
> 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
(v7.6.3#76005)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-03-20 Thread Eshcar Hillel (JIRA)

 [ 
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-V08.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, 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)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-03-02 Thread Eshcar Hillel (JIRA)

 [ 
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-V07.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, 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
>
>
> 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)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-28 Thread Eshcar Hillel (JIRA)

 [ 
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-V06.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, HBASE-17655-V02.patch, 
> HBASE-17655-V03.patch, HBASE-17655-V04.patch, HBASE-17655-V05.patch, 
> HBASE-17655-V05.patch, HBASE-17655-V06.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)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-28 Thread Eshcar Hillel (JIRA)

 [ 
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-V05.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, HBASE-17655-V02.patch, 
> HBASE-17655-V03.patch, HBASE-17655-V04.patch, HBASE-17655-V05.patch, 
> HBASE-17655-V05.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)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-27 Thread Eshcar Hillel (JIRA)

 [ 
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-V05.patch

fix findbugs warning 

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


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-27 Thread Eshcar Hillel (JIRA)

 [ 
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-V04.patch

Fixed test. Rerunning QA.

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


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-27 Thread Eshcar Hillel (JIRA)

 [ 
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-V03.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, HBASE-17655-V02.patch, 
> HBASE-17655-V03.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)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-27 Thread Eshcar Hillel (JIRA)

 [ 
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-V02.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, HBASE-17655-V02.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)


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-16 Thread Eshcar Hillel (JIRA)

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

Eshcar Hillel updated HBASE-17655:
--
Description: 
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(...).

  was:
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(...).


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

[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-16 Thread Eshcar Hillel (JIRA)

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


[jira] [Updated] (HBASE-17655) Removing MemStoreScanner and SnapshotScanner

2017-02-16 Thread Eshcar Hillel (JIRA)

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