Impala Public Jenkins has submitted this change and it was merged.

Change subject: IMPALA-5113: fix dirty unpinned invariant
......................................................................


IMPALA-5113: fix dirty unpinned invariant

There were two bugs:
* The invariant was too strict and didn't take into account multiple
  pins of pages (which don't use buffers and therefore shouldn't count).
* The invariant wasn't enforced when reclaiming a clean page.

Change the logic so that it's implemented in terms of pages/buffers in
various states (this avoids the reservation double-counting and more
directly expresses the intent). To aid in this, refactor the page lists
to use a wrapper that tracks the # of bytes of pages in each list.

Testing:
Added a unit test that reproduces the issue and added stricter DCHECKs
to detect the issue in future.

Change-Id: I07e08acb6cf6839bfccbd09258c093b1c8252b25
Reviewed-on: http://gerrit.cloudera.org:8080/6469
Reviewed-by: Tim Armstrong <[email protected]>
Tested-by: Impala Public Jenkins
---
M be/src/runtime/bufferpool/buffer-pool-internal.h
M be/src/runtime/bufferpool/buffer-pool-test.cc
M be/src/runtime/bufferpool/buffer-pool.cc
M be/src/runtime/bufferpool/buffer-pool.h
M be/src/util/internal-queue.h
5 files changed, 262 insertions(+), 151 deletions(-)

Approvals:
  Impala Public Jenkins: Verified
  Tim Armstrong: Looks good to me, approved



-- 
To view, visit http://gerrit.cloudera.org:8080/6469
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I07e08acb6cf6839bfccbd09258c093b1c8252b25
Gerrit-PatchSet: 8
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Tim Armstrong <[email protected]>
Gerrit-Reviewer: Dan Hecht <[email protected]>
Gerrit-Reviewer: Impala Public Jenkins
Gerrit-Reviewer: Tim Armstrong <[email protected]>

Reply via email to