hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "stack (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15016) StoreServices facility in Region
Date Wed, 17 Feb 2016 16:29:18 GMT

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


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


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

View raw message