Sanjeet Malhotra created PHOENIX-7347:
-----------------------------------------
Summary: Use most up-to-date value Table level max lookback from
SYSCAT during flush
Key: PHOENIX-7347
URL: https://issues.apache.org/jira/browse/PHOENIX-7347
Project: Phoenix
Issue Type: Improvement
Affects Versions: 5.3.0
Reporter: Sanjeet Malhotra
Assignee: Sanjeet Malhotra
Currently to avoid fetching table level max lookback from SYSCAT while doing
flush (in preFlush hook) we use a cached value. The value of table level max
lookback is cached when compactions (minor and major both) are triggered. And,
that cached value is used in preFlush hook but it also means:
# We won't start preserving rows as soon as max lookback is altered so making
it very slow eventually consistent.
# Table level max lookback for a table and index can go out of sync for good
amount of time.
The reason we use cached max lookback value in preFlush but use latest value in
preCompact is: preFlush and in turn flush, can be called when cluster teardowns
and it gives an impression that ITs (e.g. SystemTablesCreationOnConnectionIT.
testDoNotUpgradePropSet()) got stuck while following is happening under the
hood: # We try to create Phoenix connection.
# As part of creating Phoenix connection, get call is made to hbase:meta to
check table state of SYSCAT.
# The get call is rejected as mini cluster is tearing down. Get call has a
check to see if RS is stopping (via checkOpen()).
# As Phoenix connection fails and HBase client uses RPCRetryingCaller so, it
keeps retrying until all attempts get exhausted.
# Once all attempts are exhausted exception is thrown back to caller code in
Phoenix.
Once exception is thrown back to Phoenix caller we can flush complete data as
in production, attempt to fetch max lookback from SYSCAT will fail only if
SYCAT is offline or all RS goes down on which SYSCAT can be hosted. In such
extreme scenario flushing some extra data is not an issue given minor/major
compactions will take care of removing excess data outside max lookback window.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)