Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
Impala 1.4.1, Impala 2.3.0
Description
I was running a parallel cancellation test and hit the DCHECK in L549 below.
I see that there are 7 var_len_blocks, but the Sorter::MinBuffersRequired is 6. It seems that (1) there were some large (varlen) strings which caused to reserve at least one additional var-len block; and (2) because of the parallel tests it failed to allocate the 7th block, which was not reserved. As a result we hit the DCHECK at L549.
A temporary fix is to not DCHECK but return OOM in cases where the number of var-len blocks is larger than the minimum reserved.
527Status Sorter::Run::PrepareRead() { ... 541 if (fixed_len_blocks_.size() > 0) { 542 bool pinned; 543 RETURN_IF_ERROR(fixed_len_blocks_[0]->Pin(&pinned)); 544 DCHECK(pinned); 545 } 546 if (has_var_len_slots_ && var_len_blocks_.size() > 0) { 547 bool pinned; 548 RETURN_IF_ERROR(var_len_blocks_[0]->Pin(&pinned)); 549=> DCHECK(pinned); 550 }
Attachments
Issue Links
- is related to
-
IMPALA-1240 TestCancellationFullSort hits mem limit of 300MB with tpch_parquet
- Resolved
-
IMPALA-2344 Remove workaround for sorter.cc:654: Check failed: pinned
- Resolved
- relates to
-
IMPALA-2369 Crash: impala::Sorter::Run::Init
- Resolved