diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index 880f18c1473..126502363f5 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -432,7 +432,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, proc->clogGroupMemberLsn = lsn; nextidx = pg_atomic_read_u32(&procglobal->clogGroupFirst); - +elog(WARNING, "TransactionGroupUpdateXidStatus: %d, %d", proc->pgprocno, nextidx); while (true) { /* @@ -451,9 +451,10 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, ProcGlobal->allProcs[nextidx].clogGroupMemberPage != proc->clogGroupMemberPage) { proc->clogGroupMember = false; +elog(WARNING, "TransactionGroupUpdateXidStatus: return false (%d)", nextidx); return false; } - +elog(WARNING, "TransactionGroupUpdateXidStatus: pg_atomic_write_u32 nextidx: %p, %d", &proc->clogGroupNext, nextidx); pg_atomic_write_u32(&proc->clogGroupNext, nextidx); if (pg_atomic_compare_exchange_u32(&procglobal->clogGroupFirst, @@ -461,7 +462,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, (uint32) proc->pgprocno)) break; } - +elog(WARNING, "TransactionGroupUpdateXidStatus: after while: %d", nextidx); /* * If the list was not empty, the leader will update the status of our * XID. It is impossible to have followers without a leader because the @@ -489,6 +490,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, /* Fix semaphore count for any absorbed wakeups */ while (extraWaits-- > 0) PGSemaphoreUnlock(proc->sem); +elog(WARNING, "TransactionGroupUpdateXidStatus: return true (%d)", nextidx); return true; } @@ -540,8 +542,8 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, while (wakeidx != INVALID_PGPROCNO) { PGPROC *proc = &ProcGlobal->allProcs[wakeidx]; - wakeidx = pg_atomic_read_u32(&proc->clogGroupNext); +elog(WARNING, "TransactionGroupUpdateXidStatus: pg_atomic_write_u32 INVALID_PGPROCNO: %p, %d", &proc->clogGroupNext, INVALID_PGPROCNO); pg_atomic_write_u32(&proc->clogGroupNext, INVALID_PGPROCNO); /* ensure all previous writes are visible before follower continues. */ @@ -553,6 +555,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, PGSemaphoreUnlock(proc->sem); } +elog(WARNING, "TransactionGroupUpdateXidStatus: end"); return true; }