pgsql: Fix inadequate buffer locking in FSM and VM pagere-initializati

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix inadequate buffer locking in FSM and VM pagere-initializati
Дата
Msg-id E1fe0Nx-00024E-7B@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix inadequate buffer locking in FSM and VM page re-initialization.

When reading an existing FSM or VM page that was found to be corrupt by the
buffer manager, the code applied PageInit() to reinitialize the page, but
did so without any locking.  There is thus a hazard that two backends might
concurrently do PageInit, which in itself would still be OK, but the slower
one might then zero over subsequent data changes applied by the faster one.
Even that is unlikely to be fatal; but it's not desirable, so add locking
to prevent it.

This does not add any locking overhead in the normal code path where the
page is OK.  It's not immediately obvious that that's safe, but I believe
it is, for reasons explained in the added comments.

Problem noted by R P Asim.  It's been like this for a long time, so
back-patch to all supported branches.

Discussion: https://postgr.es/m/CANXE4Te4G0TGq6cr0-TvwP0H4BNiK_-hB5gHe8mF+nz0mcYfMQ@mail.gmail.com

Branch
------
REL9_4_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/6d2d5ab173a9b4a131827313522451dff3fb4ac1

Modified Files
--------------
src/backend/access/heap/visibilitymap.c   | 21 ++++++++++++++++++++-
src/backend/storage/freespace/freespace.c | 21 ++++++++++++++++++++-
2 files changed, 40 insertions(+), 2 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: pgsql: docs: Remove "New" description of the libpqxx interface
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Improve performance of tuple conversion map generation