diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index 880f18c1473..499989cb3a1 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -305,7 +305,7 @@ TransactionIdSetPageStatus(TransactionId xid, int nsubxids, * update. If that doesn't work out, fall back to waiting for the * lock to perform an update for this transaction only. */ - if (LWLockConditionalAcquire(XactSLRULock, LW_EXCLUSIVE)) + if (0) { /* Got the lock without waiting! Do the update. */ TransactionIdSetPageStatusInternal(xid, nsubxids, subxids, status, @@ -432,7 +432,6 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, proc->clogGroupMemberLsn = lsn; nextidx = pg_atomic_read_u32(&procglobal->clogGroupFirst); - while (true) { /* @@ -451,10 +450,15 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status, ProcGlobal->allProcs[nextidx].clogGroupMemberPage != proc->clogGroupMemberPage) { proc->clogGroupMember = false; +elog(WARNING, "TransactionGroupUpdateXidStatus: return false"); return false; } - pg_atomic_write_u32(&proc->clogGroupNext, nextidx); +do { +instr_time t; +INSTR_TIME_SET_CURRENT(t); +if ((t.tv_nsec % 1000000L) < 10L) break; +} while (1); if (pg_atomic_compare_exchange_u32(&procglobal->clogGroupFirst, &nextidx,