pgsql: Avoid possible deadlock while locking multiple heap pages.

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Avoid possible deadlock while locking multiple heap pages.
Date: 2019-02-02 10:27:27
Message-ID: E1gpsWF-0007Xi-Bq@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Avoid possible deadlock while locking multiple heap pages.

To avoid deadlock, backend acquires a lock on heap pages in block
number order. In certain cases, lock on heap pages is dropped and
reacquired. In this case, the locks are dropped for reading in
corresponding VM page/s. The issue is we re-acquire locks in bufferId
order whereas the intention was to acquire in blockid order.

This commit ensures that we will always acquire locks on heap pages in
blockid order.

Reported-by: Nishant Fnu
Author: Nishant Fnu
Reviewed-by: Amit Kapila and Robert Haas
Backpatch-through: 9.4
Discussion: https://postgr.es/m/5883C831-2ED1-47C8-BFAC-2D5BAE5A8CAE@amazon.com

Branch
------
REL9_4_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/fba0a8292997c84f1642c8a8c601a24ffe1ed1f7

Modified Files
--------------
src/backend/access/heap/hio.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2019-02-03 08:50:05 pgsql: Add PG_CFLAGS, PG_CXXFLAGS, and PG_LDFLAGS variables to PGXS
Previous Message Noah Misch 2019-02-02 08:18:33 Re: pgsql: Remove references to Majordomo