Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL - Mailing list pgsql-patches

From Oliver Jowett
Subject Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL
Date
Msg-id 4320CE22.4070408@opencloud.com
Whole thread Raw
In response to Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL (was Re: [HACKERS] Feature freeze date for 8.1)  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL (was Re: [HACKERS] Feature freeze date for 8.1)
List pgsql-patches
Tom Lane wrote:
> Oliver Jowett <oliver@opencloud.com> writes:
>
>>The assumption I'm making is that if the TCP_* values are present at
>>compile time, then you can make a setsockopt() call and get a sane error
>>code back if there's no support -- rather than a segfault, or having the
>>OS spontaneously do weird things to the connection, or anything like
>>that. Is that a reasonable thing to assume?
>
>
> Well, on a sane OS it's reasonable.  I dunno about Windows ;-)
>
> One question to ask is whether we should treat the setsockopt failure
> as fatal or not.  It seems to me that aborting the connection could
> reasonably be called an overreaction to a bad parameter setting;
> couldn't we just set the GUC variable to zero and keep going?

There's no real reason why not; currently the code looks like this:

>   /* Set default keepalive parameters. This should also catch
>    * misconfigurations (non-zero values when socket options aren't
>    * supported)
>    */
>   if (pq_setkeepalivesidle(tcp_keepalives_idle, port) != STATUS_OK)
>     return STATUS_ERROR;
>
>   if (pq_setkeepalivesinterval(tcp_keepalives_interval, port) != STATUS_OK)
>     return STATUS_ERROR;
>
>   if (pq_setkeepalivescount(tcp_keepalives_count, port) != STATUS_OK)
>     return STATUS_ERROR;

We could just log (already done inside pq_*, IIRC) and continue, instead
of erroring out. It's just the way it is because I personally prefer
misconfigurations to break loudly, so you have to fix them ;-)

-O

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL
Next
From: Tom Lane
Date:
Subject: Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL (was Re: [HACKERS] Feature freeze date for 8.1)