Re: Error code for "terminating connection due to conflict with recovery" - Mailing list pgsql-hackers

From Robert Haas
Subject Re: Error code for "terminating connection due to conflict with recovery"
Date
Msg-id AANLkTik2Ptbr53wMZii-BFygWWbsEcdxk18jd2QapFcX@mail.gmail.com
Whole thread Raw
In response to Re: Error code for "terminating connection due to conflict with recovery"  (Simon Riggs <simon@2ndQuadrant.com>)
Responses Re: Error code for "terminating connection due to conflict with recovery"  (Simon Riggs <simon@2ndQuadrant.com>)
Re: Error code for "terminating connection due to conflict with recovery"  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Mon, Jan 31, 2011 at 6:07 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
> On Mon, 2011-01-31 at 16:24 -0500, Tom Lane wrote:
>> Simon Riggs <simon@2ndQuadrant.com> writes:
>> > On Mon, 2011-01-31 at 14:58 -0500, Tom Lane wrote:
>> >> The trouble with ERRCODE_ADMIN_SHUTDOWN is that it might lead a
>> >> connection pooler to expect that *all* its connections are going bad,
>> >> not just the ones that are connected to a specific database.  I think
>> >> this is a bad decision.  Programs that are interested in testing for this
>> >> case at all are likely to need to be worried about that distinction.
>>
>> > That's a reasonable argument.
>>
>> > My objection to a new code is only to one that is so specific that
>> > people have to program for ERRCODE_BLUE_MOON_ON_A_LEAP_YEAR.
>>
>> What's wrong with ERRCODE_DATABASE_DROPPED, or something like that?
>>
>> > Can we invent a new "catch-all" that might be used here? Something that
>> > means "unknown operational error, not sure what to do".
>>
>> Because that's not the situation here.  We know exactly what a pooler
>> should do.  It might be an infrequent case, but obscurantism isn't going
>> to help anyone.
>
> OK, that makes sense to me.
>
> I would make ERRCODE_DATABASE_DROPPED an Invalid Authorization error,
> rather than a Transaction Rollback code. So sqlstate 28P02
>
> The sensible handling of such an error is not to retry, or at least to
> switch to an alternate if one is available.
>
> Ready to commit if no objection.

ISTM it should still be in class 40.  There's nothing wrong with the
user's authorization; we've just decided to roll back the transaction
for our own purposes.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: Error code for "terminating connection due to conflict with recovery"
Next
From: "Kevin Grittner"
Date:
Subject: Re: SSI patch version 14