Thread: set_ps_display during recovery

set_ps_display during recovery

From
Simon Riggs
Date:
Small patch to set ps display during recovery, so we can see the current
WAL file being processed in both crash and archive recovery.

Very simple patch, but useful. Tested.

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com

Attachment

Re: set_ps_display during recovery

From
Tom Lane
Date:
Simon Riggs <simon@2ndquadrant.com> writes:
> Small patch to set ps display during recovery, so we can see the current
> WAL file being processed in both crash and archive recovery.

Hmm, not right there, because we don't know that the file actually
exists yet.  Applied with modifications ...

            regards, tom lane

Re: set_ps_display during recovery

From
Simon Riggs
Date:
On Sat, 2007-09-29 at 14:34 -0400, Tom Lane wrote:
> Simon Riggs <simon@2ndquadrant.com> writes:
> > Small patch to set ps display during recovery, so we can see the current
> > WAL file being processed in both crash and archive recovery.
>
> Hmm, not right there, because we don't know that the file actually
> exists yet.  Applied with modifications ...

Double hmmm, that means when we are waiting for file X in pg_standby the
ps display will still show "recovering X-1". I'd prefer to set ps before
the call to RestoreArchivedFile(), since that is where the wait occurs.
I got that wrong myself.

Perhaps we could add these lines?

Index: src/backend/access/transam/xlog.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/access/transam/xlog.c,v
retrieving revision 1.282
diff -c -r1.282 xlog.c
*** src/backend/access/transam/xlog.c   26 Sep 2007 22:36:30 -0000
1.282
--- src/backend/access/transam/xlog.c   30 Sep 2007 07:39:43 -0000
***************
*** 2299,2304 ****
--- 2299,2309 ----
                if (InArchiveRecovery)
                {
                        XLogFileName(xlogfname, tli, log, seg);
+                       /* Report recovery progress in PS display */
+                       strcpy(activitymsg, "restoring  ");
+                       XLogFileName(activitymsg + 11, tli, log, seg);
+                       set_ps_display(activitymsg, false);
+
                        restoredFromArchive = RestoreArchivedFile(path,
xlogfname,

"RECOVERYXLOG",

XLogSegSize);

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


Re: set_ps_display during recovery

From
Tom Lane
Date:
Simon Riggs <simon@2ndquadrant.com> writes:
> On Sat, 2007-09-29 at 14:34 -0400, Tom Lane wrote:
>> Hmm, not right there, because we don't know that the file actually
>> exists yet.  Applied with modifications ...

> Double hmmm, that means when we are waiting for file X in pg_standby the
> ps display will still show "recovering X-1". I'd prefer to set ps before
> the call to RestoreArchivedFile(), since that is where the wait occurs.
> I got that wrong myself.

Well, if you think that's an important time component --- which it could
be in archive situations, I guess --- there should be a separate PS
display state for it.  Perhaps "fetching XXX" vs "restoring XXX"?

            regards, tom lane

Re: set_ps_display during recovery

From
Simon Riggs
Date:
On Sun, 2007-09-30 at 10:28 -0400, Tom Lane wrote:
> Simon Riggs <simon@2ndquadrant.com> writes:
> > On Sat, 2007-09-29 at 14:34 -0400, Tom Lane wrote:
> >> Hmm, not right there, because we don't know that the file actually
> >> exists yet.  Applied with modifications ...
>
> > Double hmmm, that means when we are waiting for file X in pg_standby the
> > ps display will still show "recovering X-1". I'd prefer to set ps before
> > the call to RestoreArchivedFile(), since that is where the wait occurs.
> > I got that wrong myself.
>
> Well, if you think that's an important time component --- which it could
> be in archive situations, I guess --- there should be a separate PS
> display state for it.

Agreed. I think it will save time answering questions on -admin later.

> Perhaps "fetching XXX" vs "restoring XXX"?

Restoring is the right term, I think.

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


Re: set_ps_display during recovery

From
Simon Riggs
Date:
On Sun, 2007-09-30 at 10:28 -0400, Tom Lane wrote:
> Perhaps "fetching XXX" vs "restoring XXX"?

Not sure if I read you right, so one more time for clarity:

IMHO wording should be
  "restoring  X" before we send to archive to get file (archive only)
  "recovering X" once we have the file (archive or not)

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


Re: set_ps_display during recovery

From
Tom Lane
Date:
Simon Riggs <simon@2ndquadrant.com> writes:
> On Sun, 2007-09-30 at 10:28 -0400, Tom Lane wrote:
>> Perhaps "fetching XXX" vs "restoring XXX"?

> Not sure if I read you right, so one more time for clarity:

> IMHO wording should be
>   "restoring  X" before we send to archive to get file (archive only)
>   "recovering X" once we have the file (archive or not)

Those two words seem close enough in meaning that most admins wouldn't
be clear on the difference.  I like "fetching" or "retrieving" for
the activity of getting a WAL segment from an archive, because in cases
where the activity takes long enough to be noticeable, it's probably
because you are physically getting the file from someplace else.
In the specific context of a warm standby machine, "waiting for" would
be the bon mot, but that would probably be inappropriate for other
contexts.

As for the second-phase activity, "recovering" is fine, or maybe
"processing"?

            regards, tom lane

Re: set_ps_display during recovery

From
Simon Riggs
Date:
On Sun, 2007-09-30 at 11:16 -0400, Tom Lane wrote:
> Simon Riggs <simon@2ndquadrant.com> writes:
> > On Sun, 2007-09-30 at 10:28 -0400, Tom Lane wrote:
> >> Perhaps "fetching XXX" vs "restoring XXX"?
>
> > Not sure if I read you right, so one more time for clarity:
>
> > IMHO wording should be
> >   "restoring  X" before we send to archive to get file (archive only)
> >   "recovering X" once we have the file (archive or not)
>
> Those two words seem close enough in meaning that most admins wouldn't
> be clear on the difference.

OK, I see that.

> I like "fetching" or "retrieving" for
> the activity of getting a WAL segment from an archive, because in cases
> where the activity takes long enough to be noticeable, it's probably
> because you are physically getting the file from someplace else.
> In the specific context of a warm standby machine, "waiting for" would
> be the bon mot, but that would probably be inappropriate for other
> contexts.

"Waiting for" sounds best I think. It might be waiting for a manual tape
mount for example, not just a warm standby. If the wait isn't very long
it won't hardly notice anyway.

> As for the second-phase activity, "recovering" is fine, or maybe
> "processing"?

Yes, Recovering is fine.

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


Re: set_ps_display during recovery

From
Tom Lane
Date:
Simon Riggs <simon@2ndquadrant.com> writes:
> On Sun, 2007-09-30 at 11:16 -0400, Tom Lane wrote:
>> I like "fetching" or "retrieving" for
>> the activity of getting a WAL segment from an archive, because in cases
>> where the activity takes long enough to be noticeable, it's probably
>> because you are physically getting the file from someplace else.

> "Waiting for" sounds best I think. It might be waiting for a manual tape
> mount for example, not just a warm standby. If the wait isn't very long
> it won't hardly notice anyway.

Hmm ... I guess that's OK, because after all we *are* waiting for the
restore_command to do something.  Will make it so.

            regards, tom lane