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.
---