bharath v created IMPALA-7598:
---------------------------------
Summary: Planner timeline not set in the runtime profile incase of
errors
Key: IMPALA-7598
URL: https://issues.apache.org/jira/browse/IMPALA-7598
Project: IMPALA
Issue Type: Bug
Components: Frontend
Affects Versions: Impala 3.1.0
Reporter: bharath v
Currently, the frontend sets the "Query compilation" timeline only if
doCreateExecRequest() finishes successfully.
{code}
private TExecRequest doCreateExecRequest(TQueryCtx queryCtx...) {
...... <snip>......
timeline.markEvent("Planning finished");
result.setTimeline(timeline.toThrift());
return result;
}
{code}
There can be cases where the timeline could be useful for debugging when the
planning fails.
One recent case I came across is the exhaustion of retries on
InconsistentMetadataFetchException. For every retry of query due to this
exception, we add a timeline event.
{code}
while (true) {
try {
return doCreateExecRequest(queryCtx, timeline, explainString);
} catch (InconsistentMetadataFetchException e) {
if (attempt++ == INCONSISTENT_METADATA_NUM_RETRIES) {
throw e;
}
if (attempt > 1) {
// Back-off a bit on later retries.
Uninterruptibles.sleepUninterruptibly(200 * attempt,
TimeUnit.MILLISECONDS);
}
timeline.markEvent(
String.format("Retrying query planning due to inconsistent metadata
"
+ "fetch, attempt %s of %s: ",
attempt, INCONSISTENT_METADATA_NUM_RETRIES)
+ e.getMessage());
{code}
However, if the planning eventually fails, the timeline about retries is gone.
This would've confirmed that the query was re-tried for 10 times.
Would be really useful if we can populate the partial timeline, even if the
planning failed.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)