Ankit Singhal created PHOENIX-6298:
--------------------------------------
Summary: Use timestamp of PENDING_DISABLE_COUNT to calculate
elapse time for PENDING_DISABLE state
Key: PHOENIX-6298
URL: https://issues.apache.org/jira/browse/PHOENIX-6298
Project: Phoenix
Issue Type: Bug
Reporter: Ankit Singhal
Instead of taking indexDisableTimestamp to calculate the elapsed time, we
should be considering the last time we incr/decremented the counter for
PENDING_DISABLE_COUNT. as if the application writes failures span more than the
default threshold of 30 seconds, the index will unnecessarily get disabled even
though the client could have retried and made it active.
{code}
long elapsedSinceDisable =
EnvironmentEdgeManager.currentTimeMillis() - Math.abs(indexDisableTimestamp);
// on an index write failure, the server side transitions to PENDING_DISABLE,
then the client
// retries, and after retries are exhausted, disables the
index
if (indexState == PIndexState.PENDING_DISABLE) {
if (elapsedSinceDisable > pendingDisableThreshold) {
// too long in PENDING_DISABLE - client didn't
disable the index, so we do it here
IndexUtil.updateIndexState(conn,
indexTableFullName, PIndexState.DISABLE, indexDisableTimestamp);
}
continue;
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)