Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BCE361891A for ; Thu, 12 Nov 2015 02:42:11 +0000 (UTC) Received: (qmail 82712 invoked by uid 500); 12 Nov 2015 02:42:11 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 82592 invoked by uid 500); 12 Nov 2015 02:42:11 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 82561 invoked by uid 99); 12 Nov 2015 02:42:11 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Nov 2015 02:42:11 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id F2B002C1F5A for ; Thu, 12 Nov 2015 02:42:10 +0000 (UTC) Date: Thu, 12 Nov 2015 02:42:10 +0000 (UTC) From: "Heng Chen (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-14189) CF Level BC setting should override global one. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ 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)