Re: ERROR: cannot GetMultiXactIdMembers() during recovery
От | Andres Freund |
---|---|
Тема | Re: ERROR: cannot GetMultiXactIdMembers() during recovery |
Дата | |
Msg-id | 20150223141300.GB30784@awork2.anarazel.de обсуждение исходный текст |
Ответ на | ERROR: cannot GetMultiXactIdMembers() during recovery (Marko Tiikkaja <marko@joh.to>) |
Ответы |
Re: ERROR: cannot GetMultiXactIdMembers() during recovery
Re: ERROR: cannot GetMultiXactIdMembers() during recovery |
Список | pgsql-hackers |
Hi, On 2015-02-23 15:00:35 +0100, Marko Tiikkaja wrote: > Andres asked me on IRC to report this here. Since we upgraded our standby > servers to 9.1.15 (though the master is still running 9.1.14), we've seen > the error in $SUBJECT a number of times. FWIW, I think this is just as borked in 9.1.14 and will likely affect all of 9.0 - 9.2. The problem is that in those releases multixacts aren't maintained on the standby in a way that allows access. index_getnext() itself is actually pretty easy to fix, it already checks whether the scan started while in recovery when using the result of the error triggering HeapTupleSatisfiesVacuum(), just too late. I don't remember other HTSV callers that can run in recovery, given that DDL is obviously impossible and we don't support serializable while in recovery. Alternatively we could make MultiXactIdIsRunning() return false < 9.3 when in recovery. I think that'd end up fixing things, but it seems awfully fragile to me. I do see a HTSU in pgrowlocks.c - that's not really safe during recovery< 9.3, given it accesses multixacts. I guess it needsto throw an error. I wonder if we shouldn't put a Assert() in HTSV/HTSU to prevent such problems. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: