On Tue, 2007-09-11 at 19:32 +0200, Florian G. Pflug wrote:
> Simon Riggs wrote:
> > On Tue, 2007-09-11 at 10:21 -0400, Tom Lane wrote:
> >> Simon Riggs <simon@2ndquadrant.com> writes:
> >>> 1. The ProcArrayLock is acquired Exclusive-ly by only one
> >>> remaining operation: XidCacheRemoveRunningXids(). Reducing things
> >>> to that level is brilliant work, Florian and Tom.
> >> It would be brilliant if it were true, but it isn't. Better look
> >> again.
> >
> > On the more detailed explanation, I say "in normal operation".
> >
> > My analytical notes attached to the original post show ProcArrayLock
> > is acquired exclusively during backend start, exit and while making a
> > prepared (twophase) commit. So yes, it is locked Exclusively in
> > other places, but they happen rarely and they actually add/remove
> > procs from the array, so its unlikely anything can change there
> > anyhow.
>
> Well, and during normal during COMMIT and ABORT, which might happen
> rather frequently ;-)
Agreed, that part of my assessment was not accurate...
-- Simon Riggs 2ndQuadrant http://www.2ndQuadrant.com