You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2016/02/17 17:29:18 UTC

[jira] [Commented] (HBASE-15016) StoreServices facility in Region

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