On Mon, Dec 25, 2023 at 03:20:58PM +0900, Michael Paquier wrote: > pgstat_tracks_io_bktype() does not look correct to me. Why is the WAL > receiver considered as something correct in the list of backend types, > while the intention is to *not* add it to pg_stat_io? I have tried to > switche to the correct behavior of returning false for a > B_WAL_RECEIVER, to notice that pg_rewind's test 002_databases.pl > freezes on its shutdown sequence. Something weird is going on here. > Could you look at it? See the XXX comment in the attached, which is > the same behavior as v6-0002. It looks to me that the patch has > introduced an infinite loop tweaking pgstat_tracks_io_bktype() in an > incorrect way to avoid the root issue.
Ah, that's because it would trigger an assertion failure: TRAP: failed Assert("pgstat_tracks_io_op(MyBackendType, io_object, io_context, io_op)"), File: "pgstat_io.c", Line: 89, PID: 6824 postgres: standby_local: walreceiver (ExceptionalCondition+0xa8)[0x560d1b4dd38a] And the backtrace just tells that this is the WAL receiver initializing a WAL segment: #5 0x0000560d1b3322c8 in pgstat_count_io_op_n (io_object=IOOBJECT_WAL, io_context=IOCONTEXT_INIT, io_op=IOOP_WRITE, cnt=1) at pgstat_io.c:89 #6 0x0000560d1b33254a in pgstat_count_io_op_time (io_object=IOOBJECT_WAL, io_context=IOCONTEXT_INIT, io_op=IOOP_WRITE, start_time=..., cnt=1) at pgstat_io.c:181 #7 0x0000560d1ae7f932 in XLogFileInitInternal (logsegno=3, logtli=1, added=0x7ffd2733c6eb, path=0x7ffd2733c2e0 "pg_wal/00000001", '0' <repeats 15 times>, "3") at xlog.c:3115 #8 0x0000560d1ae7fc4e in XLogFileInit (logsegno=3, logtli=1) at xlog.c:3215 Wouldn't it be simpler to just bite the bullet in this case and handle WAL receivers in the IO tracking? -- Michael
signature.asc
Description: PGP signature