I wrote:
> But in the buildfarm failures I don't see any 'checkpoint complete'
> before the shutdown.
Ooops, I lied: we have at least one case where the checkpoint does
finish but then it hangs up anyway:
https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=melonworm&dt=2025-06-20%2019%3A59%3A31&stg=recovery-check
2025-06-20 20:05:32.548 UTC [3171474][client backend][61/2:0] LOG: statement: select
injection_points_wakeup('checkpoint-before-old-wal-removal')
2025-06-20 20:05:32.550 UTC [3162113][checkpointer][:0] LOG: checkpoint complete: wrote 1 buffers (0.0%), wrote 0 SLRU
buffers;0 WAL file(s) added, 0 removed, 0 recycled; write=0.045 s, sync=0.001 s, total=1.507 s; sync files=1,
longest=0.001s, average=0.001 s; distance=327688 kB, estimate=327688 kB; lsn=0/290020C0, redo lsn=0/29002068
2025-06-20 20:05:32.551 UTC [3171474][client backend][:0] LOG: disconnection: session time: 0:00:00.073 user=bf
database=postgreshost=[local]
2025-06-20 20:05:32.552 UTC [3170563][client backend][:0] LOG: disconnection: session time: 0:00:01.538 user=bf
database=postgreshost=[local]
2025-06-20 20:05:32.564 UTC [3163446][client backend][7/146:0] LOG: statement: SELECT 1
2025-06-20 20:05:32.564 UTC [3161873][postmaster][:0] LOG: received immediate shutdown request
2025-06-20 20:05:32.604 UTC [3161873][postmaster][:0] LOG: database system is shut down
I'm still confused about whether the 046 script intends to
sometimes test cases where the checkpoint doesn't have time to
complete. But it seems that whatever is going on here
is a bit subtle and platform-dependent.
regards, tom lane