Re: [HACKERS] Heads-Up: multixact freezing bug

2013-11-28 Thread Andres Freund
On 2013-11-28 14:10:43 -0300, Alvaro Herrera wrote: > Andres Freund wrote: > > > Instead of calculating the multixact cutoff xid by using the global > > minimum of OldestMemberMXactId[] and OldestVisibleMXactId[] and then > > subtracting vacuum_freeze_min_age compute it solely as the minimum of >

Re: [HACKERS] Heads-Up: multixact freezing bug

2013-11-28 Thread Alvaro Herrera
Andres Freund wrote: > Instead of calculating the multixact cutoff xid by using the global > minimum of OldestMemberMXactId[] and OldestVisibleMXactId[] and then > subtracting vacuum_freeze_min_age compute it solely as the minimum of > OldestMemberMXactId[]. If we do that computation *after* doing

Re: [HACKERS] Heads-Up: multixact freezing bug

2013-11-28 Thread Andres Freund
On 2013-11-28 16:28:53 +0100, Andres Freund wrote: > My current thoughts are that we need to check whether any member of a > multixact needs freezing. If we find one we do MultiXactIdIsRunning() && > MultiXactIdWait() if!InRecovery. That's pretty unlikely to be necessary, > but afaics we cannot gua

[HACKERS] Heads-Up: multixact freezing bug

2013-11-28 Thread Andres Freund
Hello, Investigating corruption in a client's database we unfortunately found another data corrupting bug that's relevant for 9.3+: Since 9.3 heap_tuple_needs_freeze() and heap_freeze_tuple() don't correctly handle the xids contained in a multixact. They separately do a check for their respective