From: Heikki Linnakangas Date: Thu, 7 Jul 2011 21:36:30 +0000 (+0300) Subject: There's a small window wherein a transaction is committed but not yet X-Git-Tag: REL9_1_BETA3~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b47c67ccde6ec91219ad4aba515a48c136f9568;p=postgresql There's a small window wherein a transaction is committed but not yet on the finished list, and we shouldn't flag it as a potential conflict if so. We can also skip adding a doomed transaction to the list of possible conflicts because we know it won't commit. Dan Ports and Kevin Grittner. --- diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index d93de7de90..3c3a6a9d96 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -1677,8 +1677,9 @@ RegisterSerializableTransactionInt(Snapshot snapshot) othersxact != NULL; othersxact = NextPredXact(othersxact)) { - if (!SxactIsOnFinishedList(othersxact) && - !SxactIsReadOnly(othersxact)) + if (!SxactIsCommitted(othersxact) + && !SxactIsDoomed(othersxact) + && !SxactIsReadOnly(othersxact)) { SetPossibleUnsafeConflict(sxact, othersxact); }