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

    https://github.com/apache/phoenix/pull/290#discussion_r164230652
  
    --- 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 --
    
    @JamesRTaylor
    > we should store the client timestamp when we first received the exception
    
    What about cases where the client never got the exception, though?  That's 
actually the case that this code is meant to address - if for some reason a 
client is writing and then goes away before receiving the IndexWriteException, 
we want new/other client threads to not use the index if the index is in 
PENDING_DISABLE for too long.


---

Reply via email to