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

BufferedTupleStream::PrepareForRead() does not handle pin failure correctly

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: Impala 2.3.0, Impala 2.5.0, Impala 2.6.0
    • Fix Version/s: Impala 2.5.2
    • Component/s: Backend

      Description

      PrepareForRead() allows callers to use it in two different modes. In one of the modes it does not report pin failures. The code was written assuming that it will have reservations. This can result it hitting a DCHECK or going down some strange code paths:

            bool current_pinned;
            RETURN_IF_ERROR((*it)->Pin(&current_pinned));
            if (!current_pinned) {
              DCHECK(got_buffer != NULL) << "Should have reserved enough blocks";
              *got_buffer = false;
              return Status::OK();
            }
      

        Attachments

          Activity

            People

            • Assignee:
              tarmstrong Tim Armstrong
              Reporter:
              tarmstrong Tim Armstrong
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: