Re: [PATCH] Clarify the behavior of the system when approaching XID wraparound
Aleksander Alekseev <aleksander@timescale.com>
From: Aleksander Alekseev <aleksander@timescale.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-01-16T12:50:57Z
Lists: pgsql-hackers
Attachments
- v2-0001-Correct-the-docs-about-preventing-XID-wraparound.patch (application/octet-stream) patch v2-0001
- v2-0003-Fix-the-message-in-case-of-exceeding-xidWarnLimit.patch (application/octet-stream) patch v2-0003
- v2-0004-Don-t-recommend-running-VACUUM-in-a-single-user-m.patch (application/octet-stream) patch v2-0004
- v2-0002-Fix-the-message-in-case-of-approaching-xidWrapLim.patch (application/octet-stream) patch v2-0002
Hi hackers,
> The proposed patchset changes the documentation and the error messages
> accordingly, making them less misleading. 0001 corrects the
> documentation but doesn't touch the code. 0002 and 0003 correct the
> messages shown when approaching xidWrapLimit and xidWarnLimit
> accordingly.
A colleague of mine, Oleksii Kliukin, pointed out that the
recommendation about running VACUUM in a single-user mode is also
outdated, as it was previously reported in [1]. I didn't believe it at
first and decided to double-check:
```
=# select * from phonebook;
id | name | phone
----+---------+-------
1 | Alex | 123
5 | Charlie | 789
2 | Bob | 456
6 | Ololo | 789
(4 rows)
=# insert into phonebook values (7, 'Trololo', 987);
ERROR: database is not accepting commands to avoid wraparound data
loss in database "template1"
HINT: Stop the postmaster and vacuum that database in single-user mode.
You might also need to commit or roll back old prepared transactions,
or drop stale replication slots.
=# VACUUM FREEZE;
VACUUM
=# insert into phonebook values (7, 'Trololo', 987);
INSERT 0 1
=# SELECT current_setting('wal_level');
current_setting
-----------------
logical
```
Unfortunately the [1] discussion went nowhere. So I figured it would
be appropriate to add corresponding changes to the proposed patchset
since it's relevant and is registered in the CF app already. PFA
patchset v2 which now also includes 0004.
[1]: https://www.postgresql.org/message-id/flat/CAMT0RQTmRj_Egtmre6fbiMA9E2hM3BsLULiV8W00stwa3URvzA%40mail.gmail.com
--
Best regards,
Aleksander Alekseev
Commits
-
Reword messages about impending (M)XID exhaustion.
- 2406c4e34ccc 17.0 landed
-
Talk about assigning, rather than generating, new MultiXactIds.
- a1a5da8cb74b 17.0 landed
-
Update the documentation on recovering from (M)XID exhaustion.
- 81b3df0f1b89 14.10 landed
- fdfb141a7467 15.5 landed
- 08c1795c52b8 16.1 landed
- a70bce43fbce 17.0 landed