diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 0f913897acc..9fe62e2c2fe 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -653,6 +653,7 @@ ProcArrayRemove(PGPROC *proc, TransactionId latestXid)
 	LWLockRelease(ProcArrayLock);
 }
 
+extern bool am_walsender;
 
 /*
  * ProcArrayEndTransaction -- mark a transaction as no longer running
@@ -670,6 +671,8 @@ ProcArrayRemove(PGPROC *proc, TransactionId latestXid)
 void
 ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid)
 {
+	if (am_walsender)
+		pg_usleep(100000);
 	if (TransactionIdIsValid(latestXid))
 	{
 		/*
