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)