Thread: pgsql: Report which WAL sync method we are trying to change *to* when it

pgsql: Report which WAL sync method we are trying to change *to* when it

From
mha@postgresql.org (Magnus Hagander)
Date:
Log Message:
-----------
Report which WAL sync method we are trying to change *to* when it fails,
not which one we had before (that worked, and thus is completley irrelevant)

Modified Files:
--------------
    pgsql/src/backend/access/transam:
        xlog.c (r1.304 -> r1.305)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlog.c?r1=1.304&r2=1.305)

On Mon, 2008-05-12 at 14:27 +0000, Magnus Hagander wrote:
> Log Message:
> -----------
> Report which WAL sync method we are trying to change *to* when it fails,
> not which one we had before (that worked, and thus is completley irrelevant)

Interesting perspective.

If it breaks, I'd rather be able to put it back the way it was than
regret in technicolour that my new choice was a bad one. ;-)
Not everybody keeps a change log.

Could we report both?

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


Re: pgsql: Report which WAL sync method we are trying to change *to* when it

From
Magnus Hagander
Date:
Simon Riggs wrote:
> On Mon, 2008-05-12 at 14:27 +0000, Magnus Hagander wrote:
> > Log Message:
> > -----------
> > Report which WAL sync method we are trying to change *to* when it
> > fails, not which one we had before (that worked, and thus is
> > completley irrelevant)
>
> Interesting perspective.
>
> If it breaks, I'd rather be able to put it back the way it was than
> regret in technicolour that my new choice was a bad one. ;-)

Well, the message itself indicated that it was the new one...


> Not everybody keeps a change log.
>
> Could we report both?

Yes, we could easily do that if we want to.

But - this is not the error you get when you try to set it. It's the
error you get when you try to *use* it. And really, it's a "should
never happen" error. (The reason it happens this time is due to another
bug). So I don't think doing so would actually help your case - it's
already covered elsewhere in the code where we'll rollback the setting
when you try to change it instead of PANICing.

//Magnus

Magnus Hagander <magnus@hagander.net> writes:
> Simon Riggs wrote:
>> Could we report both?

> Yes, we could easily do that if we want to.

It would be entirely silly to do so, since (a) the old value hasn't been
changed if we fail here, and (b) it's irrelevant to the nature of the
error.

What's also a bit silly is using PANIC for this report --- AFAICS plain
old ERROR is sufficient, since if we fail here we have not yet modified
any persistent state.  Just because it's a "can't happen" condition
doesn't justify making it a PANIC.

            regards, tom lane

On Mon, 2008-05-12 at 15:26 -0400, Tom Lane wrote:
> Magnus Hagander <magnus@hagander.net> writes:
> > Simon Riggs wrote:
> >> Could we report both?
>
> > Yes, we could easily do that if we want to.
>
> It would be entirely silly to do so, since (a) the old value hasn't been
> changed if we fail here, and (b) it's irrelevant to the nature of the
> error.

That's reasonable. If it is impossible to set it to an
impossible/failing value then that is even better.

Magnus seems to say it is possible to set this and then have it fail
later when it is used. Not sure which is correct.

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


Re: pgsql: Report which WAL sync method we are trying to change *to* when it

From
Magnus Hagander
Date:
Simon Riggs wrote:
> On Mon, 2008-05-12 at 15:26 -0400, Tom Lane wrote:
> > Magnus Hagander <magnus@hagander.net> writes:
> > > Simon Riggs wrote:
> > >> Could we report both?
> >
> > > Yes, we could easily do that if we want to.
> >
> > It would be entirely silly to do so, since (a) the old value hasn't
> > been changed if we fail here, and (b) it's irrelevant to the nature
> > of the error.
>
> That's reasonable. If it is impossible to set it to an
> impossible/failing value then that is even better.
>
> Magnus seems to say it is possible to set this and then have it fail
> later when it is used. Not sure which is correct.

It shouldn't ever happen. It happened here because there was a bug in
my original patch, that has now been fixed. So unless there are more
bugs in it, it is now back to can't happen.

//Magnus

Simon Riggs <simon@2ndquadrant.com> writes:
> Magnus seems to say it is possible to set this and then have it fail
> later when it is used. Not sure which is correct.

Per his comment just now, I think he'd gotten confused between
assign_xlog_sync_method (which sets the value) and issue_xlog_fsync
(which uses it).

            regards, tom lane

On Mon, 2008-05-12 at 21:49 +0200, Magnus Hagander wrote:
> Simon Riggs wrote:
> > On Mon, 2008-05-12 at 15:26 -0400, Tom Lane wrote:
> > > Magnus Hagander <magnus@hagander.net> writes:
> > > > Simon Riggs wrote:
> > > >> Could we report both?
> > >
> > > > Yes, we could easily do that if we want to.
> > >
> > > It would be entirely silly to do so, since (a) the old value hasn't
> > > been changed if we fail here, and (b) it's irrelevant to the nature
> > > of the error.
> >
> > That's reasonable. If it is impossible to set it to an
> > impossible/failing value then that is even better.
> >
> > Magnus seems to say it is possible to set this and then have it fail
> > later when it is used. Not sure which is correct.
>
> It shouldn't ever happen. It happened here because there was a bug in
> my original patch, that has now been fixed. So unless there are more
> bugs in it, it is now back to can't happen.

OK, good. Just checking it won't ever happen to me ;-)
(and if it does, I have a backout plan).

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