James Taylor created PHOENIX-4027:
-------------------------------------

             Summary: Mark index as disabled during partial rebuild after 
configurable amount of time
                 Key: PHOENIX-4027
                 URL: https://issues.apache.org/jira/browse/PHOENIX-4027
             Project: Phoenix
          Issue Type: Bug
            Reporter: James Taylor


Instead of marking an index as permanently disabled in the partial index 
rebuilder when a failure occurs, we should let it try again up to a 
configurable amount of time. The reason is that the fail-fast approach with the 
lower RPC timeout will continue to cause a failure until the index region can 
be written to. This will allow us to ride out region moves without a long RPC 
time out and thus without holding handler threads for long periods of time. We 
can base the failure on the INDEX_DISABLE_TIMESTAMP value of an index as we 
walk through the scan results here in MetaDataRegionObserver. :
{code}
                do {
                    results.clear();
                    hasMore = scanner.next(results);
                    if (results.isEmpty()) break;

                    Result r = Result.create(results);
                    byte[] disabledTimeStamp = 
r.getValue(PhoenixDatabaseMetaData.TABLE_FAMILY_BYTES,
                        PhoenixDatabaseMetaData.INDEX_DISABLE_TIMESTAMP_BYTES);
                    byte[] indexState = 
r.getValue(PhoenixDatabaseMetaData.TABLE_FAMILY_BYTES,
                            PhoenixDatabaseMetaData.INDEX_STATE_BYTES);

                    if (disabledTimeStamp == null || disabledTimeStamp.length 
== 0) {
                        continue;
                    }

                    // TODO: if disabledTimeStamp - System.currentTimeMillis() 
> configurableAmount 
                    // then disable the index.
{code}
I'd propose we allow 30 minutes to get an index back online.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to