Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue
| От | Álvaro Herrera |
|---|---|
| Тема | Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue |
| Дата | |
| Msg-id | 202511071410.52ll56eyixx7@alvherre.pgsql обсуждение исходный текст |
| Ответ на | Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue (Heikki Linnakangas <hlinnaka@iki.fi>) |
| Список | pgsql-hackers |
One thing I noticed while testing this is that asyncQueueAddEntries()
fills the end of a page with a dummy entry, when the next notify doesn't
fit. However, this dummy entry contains a very valid TransactionId,
which the new freezing code will try to look up and freeze. I think
this is somewhat bogus -- we shouldn't even try to look up that XID in
the first place. I propose to clear it like this
@@ -1419,6 +1424,7 @@ asyncQueueAddEntries(ListCell *nextNotify)
*/
qe.length = QUEUE_PAGESIZE - offset;
qe.dboid = InvalidOid;
+ qe.xid = InvalidTransactionId;
qe.data[0] = '\0'; /* empty channel */
qe.data[1] = '\0'; /* empty payload */
}
(Line numbers do not match, because I have other local changes.)
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"I'm always right, but sometimes I'm more right than other times."
(Linus Torvalds)
https://lore.kernel.org/git/Pine.LNX.4.58.0504150753440.7211@ppc970.osdl.org/
В списке pgsql-hackers по дате отправления: