Re: BUG #5459: Unable to cancel query while in send() - Mailing list pgsql-bugs

From Andres Freund
Subject Re: BUG #5459: Unable to cancel query while in send()
Date
Msg-id 201005121030.53490.andres@anarazel.de
Whole thread Raw
In response to Re: BUG #5459: Unable to cancel query while in send()  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: BUG #5459: Unable to cancel query while in send()
List pgsql-bugs
Hi,

On Wednesday 12 May 2010 03:44:16 Tom Lane wrote:
> "Mason Hale" <mason@onespot.com> writes:
> > ISSUE: unable to cancel queries using pg_cancel_backend(), that are in
> > send() function call, waiting on client receipt of data.
> I think what you are describing is a kernel bug.  There's not a lot
> we can do about it if the send() call hangs.  Considering the kernel
> already knows the connection is closed (per the CLOSE_WAIT state shown
> by netstat) the send() should return failure immediately, and it's not
> doing so.
I can reproduce the issue though when the connection just is very, very slow
(high packet loss). Uppon receiving a signal the send returns with EINTR uppon
which point I think a check for interrupts might be placed.

> There might be some TCP-level incompatibility involved between the
> database and gateway server TCP stacks, since the combination of the
> FIN_WAIT2 and CLOSE_WAIT states really ought not persist very long;
> but I'm not a network hacker so I'm a bit out of my depth in diagnosing
> that aspect of it.
There is a userland implementation (ssh) involved, so that does sound likely.

Andres

pgsql-bugs by date:

Previous
From: bryanh@giraffe-data.com (Bryan Henderson)
Date:
Subject: Re: bool: symbol name collision
Next
From: Russell Smith
Date:
Subject: Re: PostgreSQL 8.4 - dumping database connection privileges