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)

Reply via email to