RE: Timeout parameters

Jamison, Kirk <k.jamison@jp.fujitsu.com>

From: "Jamison, Kirk" <k.jamison@jp.fujitsu.com>
To: "Nagaura, Ryohei" <nagaura.ryohei@jp.fujitsu.com>, "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>
Cc: 'Michael Paquier' <michael@paquier.xyz>, "AYahorau@ibagroup.eu" <AYahorau@ibagroup.eu>, 'Fabien COELHO' <coelho@cri.ensmp.fr>, "'pgsql-hackers@postgresql.org'" <pgsql-hackers@postgresql.org>, "MikalaiKeida@ibagroup.eu" <MikalaiKeida@ibagroup.eu>
Date: 2019-02-26T01:08:30Z
Lists: pgsql-hackers
On Monday, February 25, 2019 1:49 PM (GMT+9), Nagaura, Ryohei wrote:

> Thank you for discussion.
> I made documentation about socket_timeout and reflected Tsunakawa-san's
> comment in the new patch.
> # Mainly only fixing documentation...
> The current documentation of socket_timeout is as follows:
> socket_timeout
> Controls the number of second of client's waiting time for individual socket
> read/write operations. This can be used both as a force global query timeout
> and network problems detector. A value of zero (the default) turns this off.

Thanks for the update.
However, your socket_timeout patch currently does not apply.
$ git apply ../socket_timeout_v5.patch
fatal: corrupt patch at line 24
--> l24: diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c

>socket_timeout
>
> Controls the number of second of client's waiting time for individual socket read/write
> operations. This can be used both as a force global query timeout and network problems
> detector. A value of zero (the default) turns this off.

Got the doc fix. I wonder if we need to document what effect the parameter does:
terminating the connection. How about:

Controls the number of seconds of client-server communication inactivity
before forcibly closing the connection in order to prevent client from
infinite waiting for individual socket read/write operations. This can
be used both as a force global query timeout and network problems 
detector, i.e. hardware failure and dead connection. A value of zero 
(the default) turns this off.

Well, you may remove the "i.e. hardware failure and dead connection" if
that's not necessary.

I know you've only added the doc recommendation.
But regarding the code, you may also fix other parts:
a. Use parse_int_param instead of atoi
>+		conn->socket_timeout = atoi(conn->pgsocket_timeout);

b. proper spacing after comma
>+	{"socket_timeout", NULL, NULL, NULL,
>+		"Socket-timeout","",10,		/* strlen(INT32_MAX) == 10 */
>+	offsetof(struct pg_conn, pgsocket_timeout)},
... 
>+		result = pqSocketCheck(conn,forRead,forWrite,finish_time);

There are probably other parts I missed.

Regards,
Kirk Jamison


Commits

  1. Add support TCP user timeout in libpq and the backend server