pgsql: Don't throw a warning if vacuum sees PD_ALL_VISIBLE flag set on

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема pgsql: Don't throw a warning if vacuum sees PD_ALL_VISIBLE flag set on
Дата
Msg-id E1Px28s-0007aH-5F@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Don't throw a warning if vacuum sees PD_ALL_VISIBLE flag set on a page that
contains newly-inserted tuples that according to our OldestXmin are not
yet visible to everyone. The value returned by GetOldestXmin() is conservative,
and it can move backwards on repeated calls, so if we see that contradiction
between the PD_ALL_VISIBLE flag and status of tuples on the page, we have to
assume it's because an earlier vacuum calculated a higher OldestXmin value,
and all the tuples really are visible to everyone.

We have received several reports of this bug, with the "PD_ALL_VISIBLE flag
was incorrectly set in relation ..." warning appearing in logs. We were
finally able to hunt it down with David Gould's help to run extra diagnostics
in an environment where this happened frequently.

Also reword the warning, per Robert Haas' suggestion, to not imply that the
PD_ALL_VISIBLE flag is necessarily at fault, as it might also be a symptom
of corruption on a tuple header.

Backpatch to 8.4, where the PD_ALL_VISIBLE flag was introduced.

Branch
------
REL9_0_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/b42225c101e61afdc9b4f5873654bc1e0c9f9179

Modified Files
--------------
src/backend/commands/vacuumlazy.c   |   20 ++++++++++++++++++--
src/backend/storage/ipc/procarray.c |   12 ++++++++++++
2 files changed, 30 insertions(+), 2 deletions(-)


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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Don't throw a warning if vacuum sees PD_ALL_VISIBLE flag set on
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Fix overly strict assertion in SummarizeOldestCommittedSxact().