[ https://issues.apache.org/jira/browse/PHOENIX-6655 ]
Gourab Taparia deleted comment on PHOENIX-6655:
-----------------------------------------
was (Author: gourab.taparia):
I was working on the changes to make sure WRITE_DATA_ON_CACHE is set both at
new table creation level and also during upgrades(in case the table already
exists). However during Integration test, I see that the property is not
getting picked up via CFD’s isCacheDataOnWrite method. When running the related
phoenix queries to set the WRITE_DATA_ON_CACHE, the property is not getting set
at ColumnFamilyDescriptor level rather it is getting set at the Table MetaData
level. Is this expected ? If yes, how can we leverage the CFD public methods to
respect it ?
{*}More details :{*}
Looks like when we set the property, it is getting set at the Table MetaData
level rather than the ColumnFamilyDescriptor level. The change made leverages
the ColumnFamilyDescriptor itself, and the WRITE_DATA_ON_CACHE property and its
[public
methods|https://github.com/apache/hbase/blob/branch-2.4/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.java#L997].
The CFD maintains a key value pair, has the defaults and reserved-key
[maintained|https://github.com/apache/hbase/blob/branch-2.4/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.java#L290].
From the underlying
[getValues|https://github.com/apache/hbase/blob/branch-2.4/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.java#L1092]
- it should also respect any other key added apart form the defaults/reserved
- and should be part of the CFD values map itself. I tried outputting the
underlying values map of CFD in the above test - however it doesn’t contain the
WRITE_DATA_ON_CACHE flag as a [meta data in
CFD|https://github.com/apache/hbase/blob/branch-2.4/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.java#L1119].
I tried reproducing this using standalone binaries too and it is showing the
same - For default/reserved keys they are shown as part of the “COLUMN FAMILIES
DESCRIPTION” - which in-turn are correctly exposed through CFD public methods.
However, for WRITE_DATA_ON_CACHE it is shown as part of Table metadata.
> SYSTEM.SEQUENCE should have CACHE_DATA_ON_WRITE set to true
> -----------------------------------------------------------
>
> Key: PHOENIX-6655
> URL: https://issues.apache.org/jira/browse/PHOENIX-6655
> Project: Phoenix
> Issue Type: Improvement
> Reporter: Geoffrey Jacoby
> Assignee: Gourab Taparia
> Priority: Major
>
> High volume use cases of Phoenix sequences need to write to the same row of
> SYSTEM.SEQUENCE very frequently, but each time we write, the block cache that
> row is in is invalidated and has to be loaded again.
> [~rushabh.shah] was looking at a case in our environment where a sequence was
> being used heavily and found lots of time spent reading the HFiles for the
> same Get of the sequence row within the SequenceRegionObserver increment
> coproc.
> [~apurtell] pointed out offline that HColumnDescriptor has a property,
> CACHE_DATA_ON_WRITE that keeps caches updated when a value is flushed. This
> should help improve contention on sequence increments.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)