Re: OOM in libpq and infinite loop with getCopyStart() - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: OOM in libpq and infinite loop with getCopyStart()
Date
Msg-id CAA4eK1KR4NjUGAUgB4NSt8eyHd3+kgmWVJ0zZHAOE6NX5TW-rg@mail.gmail.com
Whole thread Raw
In response to Re: OOM in libpq and infinite loop with getCopyStart()  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: OOM in libpq and infinite loop with getCopyStart()
List pgsql-hackers
On Mon, Mar 21, 2016 at 10:13 PM, Robert Haas <robertmhaas@gmail.com> wrote:
>
> On Tue, Mar 1, 2016 at 12:38 AM, Michael Paquier
> <michael.paquier@gmail.com> wrote:
> > Thoughts? I have registered that in the CF app, and a patch is attached.
>
> It is very difficult to believe that this is a good idea:
>
> --- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
> +++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
> @@ -445,6 +445,7 @@ libpqrcv_PQexec(const char *query)
>          if (PQresultStatus(lastResult) == PGRES_COPY_IN ||
>              PQresultStatus(lastResult) == PGRES_COPY_OUT ||
>              PQresultStatus(lastResult) == PGRES_COPY_BOTH ||
> +            PQresultStatus(lastResult) == PGRES_FATAL_ERROR ||
>              PQstatus(streamConn) == CONNECTION_BAD)
>              break;
>      }
>
> I mean, why would it be a good idea to blindly skip over fatal errors?
>

I think it is not about skipping the FATAL error, rather to stop trying to get further results on FATAL error.  This is to ensure that OOM error is reported rather that ignored.  There has been discussion about this previously as well [1].


pgsql-hackers by date:

Previous
From: Haribabu Kommi
Date:
Subject: Re: [HACKERS] Re: [HACKERS] Re: [HACKERS] Windows service is not starting so there’s message in log: FATAL: "could not create shared memory segment “Global/PostgreSQL.851401618”: Permission denied”
Next
From: Peter Geoghegan
Date:
Subject: Re: Minor bug affecting ON CONFLICT lock wait log messages