0001-Mark-up-faulty-error-handling-around-pgstat_count_io.patch

text/plain

Filename: 0001-Mark-up-faulty-error-handling-around-pgstat_count_io.patch
Type: text/plain
Part: 0
Message: faulty error handling around pgstat_count_io_op_time()

Patch

Format: format-patch
Series: patch 0001
Subject: Mark up faulty error handling around pgstat_count_io_op_time()
File+
src/backend/access/transam/xlog.c 1 0
src/backend/access/transam/xlogreader.c 1 0
src/backend/access/transam/xlogrecovery.c 1 0
src/backend/replication/walreceiver.c 1 0
From 0ba5461e52cb8fd7a9150ed6b37efcffac388287 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Fri, 12 Jun 2026 17:40:30 +0200
Subject: [PATCH] Mark up faulty error handling around
 pgstat_count_io_op_time()

---
 src/backend/access/transam/xlog.c         | 1 +
 src/backend/access/transam/xlogreader.c   | 1 +
 src/backend/access/transam/xlogrecovery.c | 1 +
 src/backend/replication/walreceiver.c     | 1 +
 4 files changed, 4 insertions(+)

diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 6c2304fef33..51a646190cf 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -2455,6 +2455,7 @@ XLogWrite(XLogwrtRqst WriteRqst, TimeLineID tli, bool flexible)
 				written = pg_pwrite(openLogFile, from, nleft, startoffset);
 				pgstat_report_wait_end();
 
+				// FIXME: reports UINT64_MAX bytes on error
 				pgstat_count_io_op_time(IOOBJECT_WAL, IOCONTEXT_NORMAL,
 										IOOP_WRITE, start, 1, written);
 
diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c
index 3145c58a9b1..9eec3da97e7 100644
--- a/src/backend/access/transam/xlogreader.c
+++ b/src/backend/access/transam/xlogreader.c
@@ -1598,6 +1598,7 @@ WALRead(XLogReaderState *state,
 #ifndef FRONTEND
 		pgstat_report_wait_end();
 
+		// FIXME: reports UINT64_MAX bytes on error
 		pgstat_count_io_op_time(IOOBJECT_WAL, IOCONTEXT_NORMAL, IOOP_READ,
 								io_start, 1, readbytes);
 #endif
diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c
index 73b78a83fa7..697c4f73ed5 100644
--- a/src/backend/access/transam/xlogrecovery.c
+++ b/src/backend/access/transam/xlogrecovery.c
@@ -3390,6 +3390,7 @@ XLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen,
 
 		pgstat_report_wait_end();
 
+		// FIXME: reports UINT64_MAX bytes on error
 		pgstat_count_io_op_time(IOOBJECT_WAL, IOCONTEXT_NORMAL, IOOP_READ,
 								io_start, 1, r);
 
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index d19317703c1..00e780575ef 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -954,6 +954,7 @@ XLogWalRcvWrite(char *buf, Size nbytes, XLogRecPtr recptr, TimeLineID tli)
 		byteswritten = pg_pwrite(recvFile, buf, segbytes, (pgoff_t) startoff);
 		pgstat_report_wait_end();
 
+		// FIXME: reports UINT64_MAX bytes on error
 		pgstat_count_io_op_time(IOOBJECT_WAL, IOCONTEXT_NORMAL,
 								IOOP_WRITE, start, 1, byteswritten);
 
-- 
2.54.0