Riza Suminto created IMPALA-10337:
-------------------------------------

             Summary: DCHECK hit at SpillableRowBatchQueue when row size exceed 
max reservation
                 Key: IMPALA-10337
                 URL: https://issues.apache.org/jira/browse/IMPALA-10337
             Project: IMPALA
          Issue Type: Bug
          Components: Backend
    Affects Versions: Impala 3.4.0
            Reporter: Riza Suminto


While working on IMPALA-9856, I found that the following DCHECK in 
SpillableRowBatchQueue::AddBatch consistently hit when result spooling is 
enabled and row size is larger than resource_profile_.max_reservation, causing 
impalad to crash.
 
[https://github.com/apache/impala/blob/eea617b/be/src/runtime/spillable-row-batch-queue.cc#L97]

We can reproduce this issue by adding the following query options in
 query_test/test_insert.py::TestInsertQueries::test_insert_large_string
{code:java}
    self.client.set_configuration_option("spool_query_results", "1")
    self.client.set_configuration_option("max_row_size", "257mb"){code}
Additionally, setting max_result_spooling_mem to 512MB will increase
 resource_profile_.max_reservation to fit the large row and avoid this DCHECK.

Instead of DCHECK, I think impalad should return error status, suggesting that 
user need to set larger max_result_spooling_mem.

Another solution is to also consider max_row_size when computing 
maxMemReservationBytes in PlanRootSink.java.
 
[https://github.com/apache/impala/blob/eea617b/fe/src/main/java/org/apache/impala/planner/PlanRootSink.java#L74]



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

Reply via email to