On Thu, Oct 27, 2005 at 10:23:07AM -0400, Tom Lane wrote: > Alvaro Herrera <[EMAIL PROTECTED]> writes: > > I think the problem is that CreateMultiXactId calls > > GetNewMultiXactId and then RecordNewMultiXact, and the lock is released > > between the calls. So one backend could try to read the offset before > > another one had the time to finish writing it. > > Ugh, yes, that is clearly a hole :-( even if it turns out not to explain > Matteo's observation. > > I don't see any easy way to fix this except by introducing a lot more > locking than is there now --- ie, holding the MultiXactGenLock until the > new mxact's starting offset has been written to disk. Any better ideas?
I don't see immediatly if it's feasible or not. But another approach is to detect when it happened, and retry. Parts of the buffer code do this for example... Hope this helps, -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.
pgpmVhI1j4eti.pgp
Description: PGP signature