[ 
https://issues.apache.org/jira/browse/HBASE-15016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15150727#comment-15150727
 ] 

stack commented on HBASE-15016:
-------------------------------

[~eshcar] Thanks. My fault for not getting to this sooner.

Patch LGTM. Only odd thing is calling through to Stores every time we up the 
size of the memstore:

Changing....

2885            long newSize = this.addAndGetGlobalMemstoreSize(addedSize);     
        
2886            if (isFlushSize(newSize)) {             
2887              requestFlush();               
2888            }

to

2901            this.addAndGetGlobalMemstoreSize(addedSize);
2902            requestFlushIfNeeded();


Add least pass the value returned by addAndGetGlobalMemstoreSize to 
requestFlushIfNeeded so we don't need to get it again (avoid the extra volatile 
read)

Shouldn't RegionServicesForStores be an Interface (The HRegion does the 
implementation, at least at first?)

There is only one sequenceid in the system so no need of the WAL qualifier here 
getWalSequenceId (in fact sequenceid comes from mvcc even when it comes up out 
of WAL).

We should not have getSequenceId as a public method on Region. It is too 
dangerous exposing it so. We can not guarantee at the Region level that the 
sequenceid we give out at that level has all writes with less sequenceids acked 
and persisted to the WAL.

Otherwise, the patch is great.


> StoreServices facility in Region
> --------------------------------
>
>                 Key: HBASE-15016
>                 URL: https://issues.apache.org/jira/browse/HBASE-15016
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Eshcar Hillel
>            Assignee: Eshcar Hillel
>         Attachments: HBASE-15016-V01.patch, HBASE-15016-V02.patch, 
> HBASE-15016-V03.patch, HBASE-15016-V04.patch, Regioncounters.pdf, 
> suggestion.patch
>
>
> The default implementation of a memstore ensures that between two flushes the 
> memstore size increases monotonically. Supporting new memstores that store 
> data in different formats (specifically, compressed), or that allows to 
> eliminate data redundancies in memory (e.g., via compaction), means that the 
> size of the data stored in memory can decrease even between two flushes. This 
> requires memstores to have access to facilities that manipulate region 
> counters and synchronization.
> This subtasks introduces a new region interface -- StoreServices, through 
> which store components can access these facilities.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to