Re: when the startup process doesn't (logging startup delays)
Amul Sul <sulamul@gmail.com>
From: Amul Sul <sulamul@gmail.com>
To: Nitin Jadhav <nitinjadhavpostgres@gmail.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Tom Lane <tgl@sss.pgh.pa.us>, Robert Haas <robertmhaas@gmail.com>, Andres Freund <andres@anarazel.de>, Stephen Frost <sfrost@snowman.net>, Magnus Hagander <magnus@hagander.net>, Thomas Munro <thomas.munro@gmail.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2021-07-09T06:11:09Z
Lists: pgsql-hackers
Few comments for v4 patch:
@@ -7351,6 +7363,8 @@ StartupXLOG(void)
(errmsg("redo starts at %X/%X",
LSN_FORMAT_ARGS(ReadRecPtr))));
+ InitStartupProgress();
+
/*
* main redo apply loop
*/
@@ -7358,6 +7372,8 @@ StartupXLOG(void)
{
bool switchedTLI = false;
+ LogStartupProgress(RECOVERY_IN_PROGRESS, NULL);
+
#ifdef WAL_DEBUG
if (XLOG_DEBUG ||
(rmid == RM_XACT_ID && trace_recovery_messages <= DEBUG2) ||
@@ -7569,6 +7585,8 @@ StartupXLOG(void)
* end of main redo apply loop
*/
+ CloseStartupProgress(RECOVERY_END);
I am not sure I am getting the code flow correctly. From CloseStartupProgress()
naming it seems, it corresponds to InitStartupProgress() but what it is doing
is similar to LogStartupProgress(). I think it should be renamed to be inlined
with LogStartupProgress(), IMO.
---
+
+ /* Return if any invalid operation */
+ if (operation >= SYNCFS_END)
+ return;
....
+ /* Return if any invalid operation */
+ if (operation < SYNCFS_END)
+ return;
+
This part should be an assertion, it's the developer's responsibility to call
correctly.
---
+/*
+ * Codes of the operations performed during startup process
+ */
+typedef enum StartupProcessOp
+{
+ /* Codes for in-progress operations */
+ SYNCFS_IN_PROGRESS,
+ FSYNC_IN_PROGRESS,
+ RECOVERY_IN_PROGRESS,
+ RESET_UNLOGGED_REL_IN_PROGRESS,
+ /* Codes for end of operations */
+ SYNCFS_END,
+ FSYNC_END,
+ RECOVERY_END,
+ RESET_UNLOGGED_REL_END
+} StartupProcessOp;
+
Since we do have a separate call for the in-progress operation and the
end-operation, only a single enum would have been enough. If we do this, then I
think we should remove get_startup_process_operation_string() move messages to
the respective function.
---
Also, with your patch "make check-world" has few failures, kindly check that.
Regards,
Amul
On Mon, Jun 21, 2021 at 12:06 PM Nitin Jadhav
<nitinjadhavpostgres@gmail.com> wrote:
>
> > What is DUMMY about ? If you just want to separate the "start" from "end",
> > you could write:
> >
> > /* codes for start of operations */
> > FSYNC_IN_PROGRESS
> > SYNCFS_IN_PROGRESS
> > ...
> > /* codes for end of operations */
> > FSYNC_END
> > SYNCFS_END
> > ...
>
> That was by mistake and I have corrected it in the attached patch.
>
> Thanks & Regards,
> Nitin Jadhav
>
> On Thu, Jun 17, 2021 at 6:22 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
> >
> > + * Codes of the operations performed during startup process
> > + */
> > +typedef enum StartupProcessOp
> > +{
> > + SYNCFS_IN_PROGRESS,
> > + FSYNC_IN_PROGRESS,
> > + RECOVERY_IN_PROGRESS,
> > + RESET_UNLOGGED_REL_IN_PROGRESS,
> > + DUMMY,
> > + SYNCFS_END,
> > + FSYNC_END,
> > + RECOVERY_END,
> > + RESET_UNLOGGED_REL_END
> > +} StartupProcessOp;
> >
> > What is DUMMY about ? If you just want to separate the "start" from "end",
> > you could write:
> >
> > /* codes for start of operations */
> > FSYNC_IN_PROGRESS
> > SYNCFS_IN_PROGRESS
> > ...
> > /* codes for end of operations */
> > FSYNC_END
> > SYNCFS_END
> > ...
> >
> > Or group them together like:
> >
> > FSYNC_IN_PROGRESS,
> > FSYNC_END,
> > SYNCFS_IN_PROGRESS,
> > SYNCFS_END,
> > RECOVERY_IN_PROGRESS,
> > RECOVERY_END,
> > RESET_UNLOGGED_REL_IN_PROGRESS,
> > RESET_UNLOGGED_REL_END,
> >
> > --
> > Justin
Commits
-
Un-revert "Disable STARTUP_PROGRESS_TIMEOUT in standby mode."
- ecb01e6ebb5a 15.3 landed
-
Revert "Disable STARTUP_PROGRESS_TIMEOUT in standby mode."
- 1eadfbdd7eb0 15.2 landed
-
Disable STARTUP_PROGRESS_TIMEOUT in standby mode.
- 98e7234242a6 15.2 landed
- 8a2f783cc489 16.0 landed
-
Fix race condition in startup progress reporting.
- 5ccceb2946d4 15.0 landed
-
Report progress of startup operations that take a long time.
- 9ce346eabf35 15.0 landed
-
Add enable_timeout_every() to fire the same timeout repeatedly.
- 732e6677a667 15.0 landed