On Mon, 2008-11-03 at 06:41 +0000, Simon Riggs wrote:
> On Mon, 2008-11-03 at 12:16 +1300, Mark Kirkwood wrote:
>
> > Trying out a few different scenarios I ran across this:
> >
> > CONTEXT: xlog redo update: rel 1663/16384/16397; tid 9614/62; new 158828/59
> > DEBUG: start recovery xid = 7002 lsn = 0/6F012EE4
> > CONTEXT: xlog redo update: rel 1663/16384/16397; tid 9614/62; new 158828/59
> > TRAP: FailedAssertion("!(!((UnobservedXids[index]) != ((TransactionId)
> > 0)))", File: "procarray.c", Line: 2037)
>
> OK, thanks Mark. I'll start looking at it now.
It's nice to know the exact line something fails on. I'd instrumented
the whole of the UnobservedXids code to trap failures. I've had a couple
of errors in that already during development. But what to do about it?
I'm thinking the best way to handle this is just to simplify this part
of the code some, rather than continue tweaking it. The code attempts to
optimise the removal of UnobservedXids, but that feels now like a
premature optimisation. So I can probably drop ~100 lines of code.
I'm now adding the btree logic also, as well as updating the patch to
current head. So I'll return with an updated patch as soon as all that's
done and I've run a complete re-test.
-- Simon Riggs www.2ndQuadrant.comPostgreSQL Training, Services and Support