| From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | pgsql-committers <pgsql-committers(at)postgresql(dot)org> |
| Subject: | Re: pgsql: libpq: Notice errors a backend may have sent just before dying. |
| Date: | 2015-11-12 18:28:24 |
| Message-ID: | CA+TgmoaS2twJ2dtM=wv52p+2gqFDqWqWrf2MjG75bzG_42-P2Q@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
On Thu, Nov 12, 2015 at 11:54 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> I wrote:
>> After looking around, I suspect what actually happened in your test
>> was that we kept pumping pqReadData until it realized it was seeing EOF,
>> whereupon it did pqDropConnection(), and guess what that does:
>
>> /* Discard any unread/unsent data */
>> conn->inStart = conn->inCursor = conn->inEnd = 0;
>> conn->outCount = 0;
>
> So after further review, this is a bug I introduced in 210eb9b74:
> the fact that some code paths flushed the buffers and some did not
> was less of an oversight than it appeared. That explains why the
> problem wasn't noticed years ago, because we'd certainly tested
> pqHandleSendFailure and friends before.
>
> I'm inclined to deal with this by adding a "dropInput" boolean flag
> to pqDropConnection(), rather than reverting the centralization of
> that logic altogether.
>
> I'll go clean this up ...
Thanks. I guess I should have studied this more deeply.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
| From | Date | Subject | |
|---|---|---|---|
| Next Message | pgsql | 2015-11-12 19:23:34 | pgsql: Tag refs/tags/REL9_5_BETA2 was created |
| Previous Message | Tom Lane | 2015-11-12 18:04:01 | pgsql: Fix unwanted flushing of libpq's input buffer when socket EOF is |