From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Fix race condition in reading commit timestamps |
Date: | 2017-01-19 21:24:47 |
Message-ID: | E1cUKCN-0001JH-2b@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix race condition in reading commit timestamps
If a user requests the commit timestamp for a transaction old enough
that its data is concurrently being truncated away by vacuum at just the
right time, they would receive an ugly internal file-not-found error
message from slru.c rather than the expected NULL return value.
In a primary server, the window for the race is very small: the lookup
has to occur exactly between the two calls by vacuum, and there's not a
lot that happens between them (mostly just a multixact truncate). In a
standby server, however, the window is larger because the truncation is
executed as soon as the WAL record for it is replayed, but the advance
of the oldest-Xid is not executed until the next checkpoint record.
To fix in the primary, simply reverse the order of operations in
vac_truncate_clog. To fix in the standby, augment the WAL truncation
record so that the standby is aware of the new oldest-XID value and can
apply the update immediately. WAL version bumped because of this.
No backpatch, because of the low importance of the bug and its rarity.
Author: Craig Ringer
Reviewed-By: Petr Jelínek, Peter Eisentraut
Discussion: https://postgr.es/m/CAMsr+YFhVtRQT1VAwC+WGbbxZZRzNou=N9Ed-FrCqkwQ8H8oJQ@mail.gmail.com
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/8eace46d34ab6ac0d887aa4d3504bc4222c2e448
Modified Files
--------------
src/backend/access/rmgrdesc/committsdesc.c | 6 +++---
src/backend/access/transam/commit_ts.c | 21 +++++++++++++--------
src/backend/commands/vacuum.c | 10 +++++++++-
src/include/access/commit_ts.h | 8 ++++++++
src/include/access/xlog_internal.h | 2 +-
5 files changed, 34 insertions(+), 13 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2017-01-19 22:23:26 | Re: pgsql: Adapt python regression tests to 69f4b9c85f16. |
Previous Message | Peter Eisentraut | 2017-01-19 21:20:27 | Re: pgsql: Add function to import operating system collations |