diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 56ae070acb7de34cb5c01ddbc9eec8f60ee96024..39f6c68a6b2d1357274083eb3d1b96a7cc2d75a8 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.180 2004/08/28 20:31:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.181 2004/08/28 22:04:12 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -920,12 +920,12 @@ RecordTransactionAbort(void) * necessary but we may as well do it while we are here. * * The ordering here isn't critical but it seems best to mark the - * parent last. That reduces the chance that concurrent - * TransactionIdDidAbort calls will decide they need to do redundant - * work. + * parent first. This assures an atomic transition of all the + * subtransactions to aborted state from the point of view of + * concurrent TransactionIdDidAbort calls. */ - TransactionIdAbortTree(nchildren, children); TransactionIdAbort(xid); + TransactionIdAbortTree(nchildren, children); END_CRIT_SECTION(); } @@ -1062,8 +1062,8 @@ RecordSubTransactionAbort(void) * Mark the transaction aborted in clog. This is not absolutely * necessary but we may as well do it while we are here. */ - TransactionIdAbortTree(nchildren, children); TransactionIdAbort(xid); + TransactionIdAbortTree(nchildren, children); END_CRIT_SECTION(); }