Github user JamesRTaylor commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/290#discussion_r164551154
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java ---
    @@ -312,6 +317,16 @@ private static QueryPlan addPlan(PhoenixStatement 
statement, SelectStatement sel
             return null;
         }
     
    +    // returns true if we can still use the index
    +    // retuns false if we've been in PENDING_DISABLE too long - index 
should be considered disabled
    +    private static boolean isUnderPendingDisableThreshold(PhoenixStatement 
statement, PTable indexTable) {
    +        return EnvironmentEdgeManager
    +                .currentTimeMillis() - 
indexTable.getIndexDisableTimestamp() <= statement
    --- End diff --
    
    If you're rerunning the query, the current time should change. You should 
have a new TableRef for the new query (the old one won't change). The timestamp 
should come from the client-side cache and should be updated in 
MetaDataClient.updateCache() here:
    
        // if we aren't adding the table, we still need to update the resolved 
time of the table
        connection.updateResolvedTimestamp(table, resolvedTime);
    
    The updateCache call should be made by 
FromCompiler.BaseColumnResolver.createTableRef() and the timestamp in the 
TableRef should be set based on the one in MetaDataMutationResult.


---

Reply via email to