Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-3200 Replace BufferedBlockMgr with new buffer pool
  3. IMPALA-4831

Clients can violate BufferPool invariants by calling ReservationTracker methods directly.

    Details

      Description

      If a client unpins some pages, then calls ReservationTracker::DecreaseReservation(), it can leave too many dirty unpinned pages in memory.

      Similarly, a client can cause mischief by calling AllocateFrom() and ReleaseTo() or by creating child ReservationTrackers.

        Activity

        Hide
        tarmstrong Tim Armstrong added a comment -

        IMPALA-4831: enforce BufferPool reservation invariants

        Before this patch ill-behaved code outside BufferPool could
        violate BufferPool invariants by calling methods on ReservationTracker()
        such as DecreaseReservation() or ReleaseFrom() or by hooking
        up Clients and ReservationTrackers in the wrong way (e.g. sharing
        a ReservationTracker between two Clients).

        Now each client creates and owns its ReservationTracker and restricts
        which methods can be called from outside BufferPool. This also reduces
        the amount of boilerplate code required to set up and tear down a
        client.

        Change-Id: Ic5b0c335d6e73250f7e5a3b9ce2f999c5119c573
        Reviewed-on: http://gerrit.cloudera.org:8080/6313
        Reviewed-by: Dan Hecht <dhecht@cloudera.com>
        Tested-by: Impala Public Jenkins

        Show
        tarmstrong Tim Armstrong added a comment - IMPALA-4831 : enforce BufferPool reservation invariants Before this patch ill-behaved code outside BufferPool could violate BufferPool invariants by calling methods on ReservationTracker() such as DecreaseReservation() or ReleaseFrom() or by hooking up Clients and ReservationTrackers in the wrong way (e.g. sharing a ReservationTracker between two Clients). Now each client creates and owns its ReservationTracker and restricts which methods can be called from outside BufferPool. This also reduces the amount of boilerplate code required to set up and tear down a client. Change-Id: Ic5b0c335d6e73250f7e5a3b9ce2f999c5119c573 Reviewed-on: http://gerrit.cloudera.org:8080/6313 Reviewed-by: Dan Hecht <dhecht@cloudera.com> Tested-by: Impala Public Jenkins —

          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:

              Development