Re: Nicer error when connecting to standby with hot_standby=off

Поиск
Список
Период
Сортировка
От James Coleman
Тема Re: Nicer error when connecting to standby with hot_standby=off
Дата
Msg-id CAAaqYe_3WG2DRWAzULChuwXuUvGWa08dmFeYRmP1w8U86fDh1A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Nicer error when connecting to standby with hot_standby=off  (Andres Freund <andres@anarazel.de>)
Ответы Re: Nicer error when connecting to standby with hot_standby=off  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
On Mon, Mar 9, 2020 at 6:28 PM Andres Freund <andres@anarazel.de> wrote:
>
> Hi,
>
> On 2020-03-08 20:12:21 -0400, James Coleman wrote:
> > I recently noticed while setting up a test environment that attempting to
> > connect to a standby running without hot_standby=on results in a fairly
> > generic error (I believe "the database system is starting up"). I don't
> > have my test setup running right now, so can't confirm with a repro case at
> > the moment, but with a little bit of spelunking I noticed that error text
> > only shows up in src/backend/postmaster/postmaster.c when
> > port->canAcceptConnections has the value CAC_STARTUP.
> >
> > Ideally the error message would include something along the lines of "The
> > server is running as a standby but cannot accept connections with
> > hot_standby=off".
>
> Yea, something roughly like that would be good.

Awesome, thanks for the early feedback!

> > I wanted to get some initial feedback on the idea before writing a patch:
> > does that seem like a reasonable change? Is it actually plausible to
> > distinguish between this state and "still recovering" (i.e., when starting
> > up a hot standby but initial recovery hasn't completed so it legitimately
> > can't accept connections yet)? If so, should we include the possibility if
> > hot_standby isn't on, just in case?
>
> Yes, it is feasible to distinguish those cases. And we should, if we're
> going to change things around.

I'll look into this hopefully soon, but it's helpful to know that it's
possible. Is it basically along the lines of checking to see if the
LSN is past the minimum recovery point?

> > The enum value CAC_STARTUP is defined in src/include/libpq/libpq-be.h,
> > which makes me wonder if changing this value would result in a wire
> > protocol change/something the client wants to know about? If so, I assume
> > it's not reasonable to change the value, but would it still be reasonable
> > to change the error text?
>
> The value shouldn't be visible to clients in any way. While not obvious
> from the name, there's this comment at the top of the header:
>
>  *        Note that this is backend-internal and is NOT exported to clients.
>  *        Structs that need to be client-visible are in pqcomm.h.

This is also helpful.

Thanks,
James



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Nicer error when connecting to standby with hot_standby=off
Следующее
От: Kyotaro Horiguchi
Дата:
Сообщение: Re: Reducing WaitEventSet syscall churn