Quanlong Huang created IMPALA-10114:
---------------------------------------

             Summary: Consider using num_rows_fetched instead of fetched_rows 
in checking whether client has fetched any results in TryQueryRetry
                 Key: IMPALA-10114
                 URL: https://issues.apache.org/jira/browse/IMPALA-10114
             Project: IMPALA
          Issue Type: Sub-task
            Reporter: Quanlong Huang


In QueryDriver::TryQueryRetry, we use fetched_rows to check whether the client 
has fetched any results. If true, the retry will be skipped. Code snipper:
{code:c++}
    lock_guard<mutex> l(*client_request_state->lock());

    // Queries can only be retried if no rows for the query have been fetched
    // (IMPALA-9225).
    if (client_request_state->fetched_rows()) {
      string err_msg = Substitute("Skipping retry of query_id=$0 because the 
client has "
                                  "already fetched some rows",
          PrintId(query_id));
      VLOG_QUERY << err_msg;
      error->AddDetail(err_msg);
      return;
    }
{code}
https://github.com/apache/impala/blob/568b3394b2945d684d8fdb6c4f4e1f33cbf98898/be/src/runtime/query-driver.cc#L100

However, it's possible that fetched_rows is true but the client still fetches 
nothing due to timeout. For example, the following query takes more than 10s to 
materialize the first row batch after it comes into FINISHED state:
{code:sql}
select * from functional.alltypes where bool_col = sleep(600)
{code}

[~stakiar] points out that fetched_rows is protected by 
ClientRequestState::lock_ (held in TryQueryRetry), while num_rows_fetched_ is 
only protected by ClientRequestState::fetch_rows_lock_ which is not held in 
TryQueryRetry. We need to sort out the locking logic to switch to use 
num_rows_fetched.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org
For additional commands, e-mail: issues-all-h...@impala.apache.org

Reply via email to