On Tue, 2010-04-27 at 17:24 -0400, Tom Lane wrote:
> Isn't the snapshotOldestActiveXid filter in
> RecordKnownAssignedTransactionIds completely wrong/useless/bogus?
>
> AFAICS, snapshotOldestActiveXid is only set once at the start of
> recovery. This means it will soon be too old to provide any useful
> filtering. But what's far worse is that the XID space will eventually
> wrap around, and that test will start filtering *everything*.
>
> I think we should just lose that test, as well as the variable.
Yes, though it looks like it is still necessary in creating a valid
initial state because otherwise we may have xids in KnownAssigned array
that are already complete. The comment there talks about wasting memory,
though it appears to be a correctness issue.
So perhaps a similar test is required in ProcArrayApplyRecoveryInfo()
but not in RecordKnownAssignedTransactionIds(). That way it is applied,
but only once at initialisation.
-- Simon Riggs www.2ndQuadrant.com