Re: A failure in 031_recovery_conflict.pl on Debian/s390x
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Christoph Berg <myon@debian.org>
Cc: Andres Freund <andres@anarazel.de>, Noah Misch <noah@leadboat.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-08-08T17:23:57Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix instability in 031_recovery_conflict.pl.
- 0174c2d213f6 17.0 landed
-
Fix recovery conflict SIGUSR1 handling.
- 0da096d78e1e 17.0 landed
-
Disable 031_recovery_conflict.pl in 15 and 16.
- e13de4913913 15.5 landed
- 8d1cf9674a25 16.0 landed
On Wed, Aug 9, 2023 at 2:01 AM Christoph Berg <myon@debian.org> wrote:
> Putting that patch on top of v8 made it pass 294 times before exiting
> like this:
>
> [08:52:34.134](0.032s) ok 1 - buffer pin conflict: cursor with conflicting pin established
> Waiting for replication conn standby's replay_lsn to pass 0/3430000 on primary
> done
> timed out waiting for match: (?^:User was holding shared buffer pin for too long) at t/031_recovery_conflict.pl line 318.
Can you reproduce that with logging like this added on top?
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index 5b663a2997..72f5274c95 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -629,6 +629,7 @@ SetStartupBufferPinWaitBufId(int bufid)
/* use volatile pointer to prevent code rearrangement */
volatile PROC_HDR *procglobal = ProcGlobal;
+ elog(LOG, "XXX SetStartupBufferPinWaitBufId(%d)", bufid);
procglobal->startupBufferPinWaitBufId = bufid;
}
@@ -640,8 +641,11 @@ GetStartupBufferPinWaitBufId(void)
{
/* use volatile pointer to prevent code rearrangement */
volatile PROC_HDR *procglobal = ProcGlobal;
+ int bufid;
- return procglobal->startupBufferPinWaitBufId;
+ bufid = procglobal->startupBufferPinWaitBufId;
+ elog(LOG, "XXX GetStartupBufferPinWaitBufId() -> %d", bufid);
+ return bufid;
}