On Wed, Jan 04, 2023 at 11:35:33AM +0530, Sravan Kumar wrote: > I have added the thread to the commitfest: > https://commitfest.postgresql.org/42/ > Did you get a chance to review the patch? Please let me know if you > need anything from my end.
This seems like worthwhile simplification to me. Ultimately, your patch shouldn't result in any sort of signficant behavior change, and I don't see any reason to further complicate the timeout calculation. The copy loop will run any time the archiver's latch is set, and it'll wait up to 60 seconds otherwise. As discussed upthread, it might be possible to remove the timeout completely, but that probably deserves its own thread. I noticed that time.h is no longer needed by the archiver, so I removed that and fixed an indentation nitpick in the attached v2. I'm going to set the commitfest entry to ready-for-committer shortly after sending this message. -- Nathan Bossart Amazon Web Services: https://aws.amazon.com
>From a06609e839f039b7e7806456eaf4ee113cfabc3c Mon Sep 17 00:00:00 2001 From: Sravan Velagandula <sravan.velagand...@enterprisedb.com> Date: Tue, 6 Dec 2022 06:21:38 -0500 Subject: [PATCH v2 1/1] simplify wait loop in the archiver --- src/backend/postmaster/pgarch.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 8ecdb9ca23..6e28067596 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -25,7 +25,6 @@ */ #include "postgres.h" -#include <time.h> #include <sys/stat.h> #include <unistd.h> @@ -297,7 +296,6 @@ pgarch_waken_stop(SIGNAL_ARGS) static void pgarch_MainLoop(void) { - pg_time_t last_copy_time = 0; bool time_to_stop; /* @@ -335,30 +333,21 @@ pgarch_MainLoop(void) /* Do what we're here for */ pgarch_ArchiverCopyLoop(); - last_copy_time = time(NULL); /* * Sleep until a signal is received, or until a poll is forced by - * PGARCH_AUTOWAKE_INTERVAL having passed since last_copy_time, or - * until postmaster dies. + * PGARCH_AUTOWAKE_INTERVAL, or until postmaster dies. */ if (!time_to_stop) /* Don't wait during last iteration */ { - pg_time_t curtime = (pg_time_t) time(NULL); - int timeout; - - timeout = PGARCH_AUTOWAKE_INTERVAL - (curtime - last_copy_time); - if (timeout > 0) - { - int rc; - - rc = WaitLatch(MyLatch, - WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, - timeout * 1000L, - WAIT_EVENT_ARCHIVER_MAIN); - if (rc & WL_POSTMASTER_DEATH) - time_to_stop = true; - } + int rc; + + rc = WaitLatch(MyLatch, + WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, + PGARCH_AUTOWAKE_INTERVAL * 1000L, + WAIT_EVENT_ARCHIVER_MAIN); + if (rc & WL_POSTMASTER_DEATH) + time_to_stop = true; } /* -- 2.25.1