From 20b6eb5bb7af574e4395f653917db5a54d13d7d5 Mon Sep 17 00:00:00 2001 From: Masahiro Ikeda Date: Tue, 28 Apr 2020 01:39:25 +0000 Subject: [PATCH v2] Fix to report wait events about timeline history file. Even though a timeline history file is read or written, some wait events are not reported. This patch fixes those issues. --- src/backend/access/transam/timeline.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/timeline.c b/src/backend/access/transam/timeline.c index de57d69..3e1b90f 100644 --- a/src/backend/access/transam/timeline.c +++ b/src/backend/access/transam/timeline.c @@ -123,8 +123,15 @@ readTimeLineHistory(TimeLineID targetTLI) * Parse the file... */ prevend = InvalidXLogRecPtr; - while (fgets(fline, sizeof(fline), fd) != NULL) + for (;;) { + char *result; + pgstat_report_wait_start(WAIT_EVENT_TIMELINE_HISTORY_READ); + result = fgets(fline, sizeof(fline), fd); + pgstat_report_wait_end(); + if (result == NULL) + break; + /* skip leading whitespace and check for # comment */ char *ptr; TimeLineID tli; @@ -393,6 +400,7 @@ writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI, nbytes = strlen(buffer); errno = 0; + pgstat_report_wait_start(WAIT_EVENT_TIMELINE_HISTORY_WRITE); if ((int) write(fd, buffer, nbytes) != nbytes) { int save_errno = errno; @@ -408,6 +416,7 @@ writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", tmppath))); } + pgstat_report_wait_end(); pgstat_report_wait_start(WAIT_EVENT_TIMELINE_HISTORY_SYNC); if (pg_fsync(fd) != 0) -- 2.9.5