hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Heng Chen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14189) CF Level BC setting should override global one.
Date Thu, 12 Nov 2015 02:42:10 GMT

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

Heng Chen commented on HBASE-14189:
-----------------------------------

{quote}
A change of boolean type to Boolean will do the work of new Enum no? When on the table or
CF the setting is no set, we can avoid serialize that attribute into HCD?
{quote}

Sounds good!  I will do it

> CF Level BC setting should override global one.
> -----------------------------------------------
>
>                 Key: HBASE-14189
>                 URL: https://issues.apache.org/jira/browse/HBASE-14189
>             Project: HBase
>          Issue Type: Improvement
>          Components: BlockCache
>    Affects Versions: 2.0.0
>            Reporter: Heng Chen
>            Assignee: Heng Chen
>         Attachments: HBASE-14189.patch, HBASE-14189_v1.patch, HBASE-14189_v2.patch, HBASE-14189_v3.patch,
HBASE-14189_v4.patch, HBASE-14189_v5.patch
>
>
> The original description is ambiguous. I think i will rewrite it.
> Let's see {{BlockCache}} constructor firstly
> {code}
>   public CacheConfig(Configuration conf, HColumnDescriptor family) {
>     this(CacheConfig.instantiateBlockCache(conf),
>         family.isBlockCacheEnabled(),
>         family.isInMemory(),
>         // For the following flags we enable them regardless of per-schema settings
>         // if they are enabled in the global configuration.
>         conf.getBoolean(CACHE_BLOCKS_ON_WRITE_KEY,
>             DEFAULT_CACHE_DATA_ON_WRITE) || family.isCacheDataOnWrite(),
>         conf.getBoolean(CACHE_INDEX_BLOCKS_ON_WRITE_KEY,
>             DEFAULT_CACHE_INDEXES_ON_WRITE) || family.isCacheIndexesOnWrite(),
>         conf.getBoolean(CACHE_BLOOM_BLOCKS_ON_WRITE_KEY,
>             DEFAULT_CACHE_BLOOMS_ON_WRITE) || family.isCacheBloomsOnWrite(),
>         conf.getBoolean(EVICT_BLOCKS_ON_CLOSE_KEY,
>             DEFAULT_EVICT_ON_CLOSE) || family.isEvictBlocksOnClose(),
>         conf.getBoolean(CACHE_DATA_BLOCKS_COMPRESSED_KEY, DEFAULT_CACHE_DATA_COMPRESSED),
>         conf.getBoolean(PREFETCH_BLOCKS_ON_OPEN_KEY,
>             DEFAULT_PREFETCH_ON_OPEN) || family.isPrefetchBlocksOnOpen(),
>         conf.getBoolean(HColumnDescriptor.CACHE_DATA_IN_L1,
>             HColumnDescriptor.DEFAULT_CACHE_DATA_IN_L1) || family.isCacheDataInL1(),
>         conf.getBoolean(DROP_BEHIND_CACHE_COMPACTION_KEY,DROP_BEHIND_CACHE_COMPACTION_DEFAULT)
>      );
>   }
> {code}
> If we dig in it,  we will see {{CacheConfig.cacheDataOnRead}} is used to accept {{family.isBlockCacheEnabled()}}.
 
> I think it is confused as comments about {{cacheDataOnRead}}
> {code}
>   /**
>    * Whether blocks should be cached on read (default is on if there is a
>    * cache but this can be turned off on a per-family or per-request basis).
>    * If off we will STILL cache meta blocks; i.e. INDEX and BLOOM types.
>    * This cannot be disabled.
>    */
>   private boolean cacheDataOnRead;
> {code}
> So i think we should use another variable to represent for {{family.isBlockCacheEnabled()}}.
> The secondary point is we use 'or' to decide {{cacheDataOnWrite}} is on/off when both
CF and global has this setting.
> {code}
> conf.getBoolean(CACHE_BLOCKS_ON_WRITE_KEY,
>             DEFAULT_CACHE_DATA_ON_WRITE) || family.isCacheDataOnWrite()
> {code}
> IMO we should use CF Level setting to override global setting. 



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

Mime
View raw message