Re: pgsql: Fix a couple of bugs in MultiXactId freezing
От | Andres Freund |
---|---|
Тема | Re: pgsql: Fix a couple of bugs in MultiXactId freezing |
Дата | |
Msg-id | 20131203231227.GH19016@awork2.anarazel.de обсуждение исходный текст |
Ответ на | Re: pgsql: Fix a couple of bugs in MultiXactId freezing (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: pgsql: Fix a couple of bugs in MultiXactId freezing
|
Список | pgsql-hackers |
On 2013-12-03 15:46:09 -0500, Tom Lane wrote: > Noah Misch <noah@leadboat.com> writes: > > I'd rather have an readily-verifiable fix that changes WAL format than a > > tricky fix that avoids doing so. So, modulo not having seen the change, +1. > > Yeah, same here. I am afraid it won't be *that* simple. We still need code to look into multis, check whether all members are ok wrt. cutoff_xid and replace them, either by the contained xid, or by a new multi with the still living members. Ugly. There's currently also the issue that heap_freeze_tuple() modifies the tuple inplace without a critical section. We're executing a HeapTupleSatisfiesVacuum() before we get to WAL logging things, that has plenty of rope to hang itself on. So that doesn't really seem ok to me? Attached is a pre-pre alpha patch for this. To fix the issue with the missing critical section it splits freezing into heap_prepare_freeze_tuple() and heap_execute_freeze_tuple(). The former doesn't touch tuples and is executed on the primary, and the second actually peforms the modifications and is executed both, during normal processing and recovery. Needs a fair bit of work: * Should move parts of the multixact processing into multixact.c, specifically it shouldn't require CreateMultiXactId() to be exported. * it relies on forward-declaring a struct in heapam.h that's actually defined heapam_xlog.h - that's pretty ugly. * any form of testing but make check/isolationcheck across SR. * lots of the comments around need to be added/reworked * has a simpler version of Alvaro's patch to HTSV in there Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Вложения
В списке pgsql-hackers по дате отправления: