Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-1590

Remove workarounds for DCHECK in sorter.cc:549 (var_len_blocks[0]->Pin() fails to pin), when running parallel test

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              tarmstrong Tim Armstrong
              ippokratis Ippokratis Pandis
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: