[
https://issues.apache.org/jira/browse/IMPALA-10583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17319344#comment-17319344
]
ASF subversion and git services commented on IMPALA-10583:
----------------------------------------------------------
Commit e01b6312593197749a17dd6895f976c35eac5769 in impala's branch
refs/heads/master from Riza Suminto
[ https://gitbox.apache.org/repos/asf?p=impala.git;h=e01b631 ]
IMPALA-10583: Fix bug on unbounded result spooling memory config.
Two bugs happening on result spooling when we set two of its query
options to 0 (unbounded).
The first bug happens if max_spilled_result_spooling_mem =
0 (unbounded). max_unpinned_bytes_ in SpillableRowBatchQueue will be set
to 0, SpillableRowBatchQueue::IsFull() then will always return true, and
the query hang. This patch fix it by setting max_unpinned_bytes_ to
INT64_MAX if max_spilled_result_spooling_mem = 0.
The second bug happens if we set max_result_spooling_mem =
0 (unbounded). PlanRootSink.java will peg maxMemReservationBytes to
always equal to minMemReservationBytes. This patch fixes this by
reverting to the default max_result_spooling_mem (100MB).
Testing:
- Add test_unbounded_result_spooling_mem.
- Pass core tests.
Change-Id: If8f5e3668281bba8813f8082f45b4faa7721530e
Reviewed-on: http://gerrit.cloudera.org:8080/17187
Reviewed-by: Impala Public Jenkins <[email protected]>
Tested-by: Impala Public Jenkins <[email protected]>
> Result spooling hang with unbounded spooling mem limit.
> -------------------------------------------------------
>
> Key: IMPALA-10583
> URL: https://issues.apache.org/jira/browse/IMPALA-10583
> Project: IMPALA
> Issue Type: Bug
> Components: Backend, Frontend
> Affects Versions: Impala 4.0
> Reporter: Riza Suminto
> Assignee: Riza Suminto
> Priority: Major
>
> Looking at BufferedPlanRootSink and SpillableRowBatchQueue, it seems the code
> fail to anticipate if max_spilled_result_spooling_mem = 0 (unbounded).
> max_unpinned_bytes_ will be set to 0 and SpillableRowBatchQueue::IsFull()
> will always be true. We should change max_unpinned_bytes_ to INT64_MAX if
> max_spilled_result_spooling_mem = 0.
> Another bug happen when setting max_result_spooling_mem = 0 (unbounded). When
> this happen, PlanRootSink.java will peg maxMemReservationBytes to always
> equal to minMemReservationBytes. I think we should override it to the default
> max_result_spooling_mem (100MB) or set it equal to mem_limit of the query
> pool.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]