On 10.06.2011 18:05, Kevin Grittner wrote:
> Heikki Linnakangas<heikki.linnakangas@enterprisedb.com> wrote:
>> * Is the SXACT_FLAG_ROLLED_BACK flag necessary? It's only set in
>> ReleasePredicateLocks() for a fleeting moment while the
>> function releases all conflicts and locks held by the
>> transaction, and finally the sxact struct itself containing the
>> flag.
>
> I think that one can go away. It had more of a point many months
> ago before we properly sorted out what belongs in
> PreCommit_CheckForSerializationFailure() and what belongs in
> ReleasePredicateLocks(). The point at which we reached clarity on
> that and moved things around, this flag probably became obsolete.
>
>> Also, isn't a transaction that's already been marked for death
>> the same as one that has already rolled back, for the purposes
>> of detecting conflicts?
>
> Yes.
>
> We should probably ignore any marked-for-death transaction during
> conflict detection and serialization failure detection. As a start,
> anywhere there is now a check for rollback and not for this, we
> should change it to this.
Ok, I removed the SXACT_FLAG_ROLLED_BACK flag. I also renamed the
marked-for-death flag into SXACT_FLAG_DOOMED; that's a lot shorter.
> There may be some places this can be
> checked which haven't yet been identified and touched.
Yeah - in 9.2.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com