[ https://issues.apache.org/jira/browse/HBASE-17081?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15702133#comment-15702133 ]
Eshcar Hillel commented on HBASE-17081: --------------------------------------- It would be wrong to move the responsibility for the list of segments to memstore. Memstore should not be aware of this. The method getAllSegments() is required since memstore has a public method which returns list of all segments. The CompositeSegment is an implementation of the [composite pattern|https://en.wikipedia.org/wiki/Composite_pattern] where ImmutableSegment is the component and CompositeSegment is the composite which inherits from component and has a collection of components. To make this pattern complete we need a leaf. This means making ImmutableSegment an abstract class, add LeafSegment class to inherit from ImmutableSegment. All common code will be in ImmutableSegment, while LeafSegment and CompositeSegment implement different behaviour. Then we can also make the adjustments in SegmentFactory so it creates either CompositeSegment or LeafSegment based on the context and parameters (list or a single segment). The use of getAllSegments() within the method getNextRow() is indeed cumbersome but this is due to historical reasons which can be fixed in a different Jira. Anyway getAllSegments() method is needed and will not be removed. > Flush the entire CompactingMemStore content to disk > --------------------------------------------------- > > Key: HBASE-17081 > URL: https://issues.apache.org/jira/browse/HBASE-17081 > Project: HBase > Issue Type: Sub-task > Reporter: Anastasia Braginsky > Assignee: Anastasia Braginsky > Attachments: HBASE-17081-V01.patch, HBASE-17081-V02.patch, > HBASE-17081-V03.patch, Pipelinememstore_fortrunk_3.patch > > > Part of CompactingMemStore's memory is held by an active segment, and another > part is divided between immutable segments in the compacting pipeline. Upon > flush-to-disk request we want to flush all of it to disk, in contrast to > flushing only tail of the compacting pipeline. -- This message was sent by Atlassian JIRA (v6.3.4#6332)