Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake
Дата
Msg-id CADK3HHLztb1adqFPtuyZ+1QQXxEiVbOWwhFgST7a62sBAC=a_g@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake  (Martin Lichtin <lichtin@yahoo.com>)
Список pgsql-jdbc


On Wed, 29 Nov 2023 at 11:06, Martin Lichtin <lichtin@yahoo.com> wrote:


On 28/11/2023 21:28, Dave Cramer wrote:
On Tue, 28 Nov 2023 at 09:07, Dave Cramer <davecramer@postgres.rocks> wrote:
Hi Martin,

Thanks for the report. I'll have a look. 
Dave Cramer

On Tue, 28 Nov 2023 at 08:27, Martin Lichtin <lichtin@yahoo.com> wrote:

Hi

I'm seeing this thread hanging in the "getConnection" method, with no timeout in sight.
However, the PGXADataSource is configured with a "connectTimeout" of 10 seconds.

   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:171)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:464)
    at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:165)
    at sun.security.ssl.SSLTransport.decode(SSLTransport.java:109)
    at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1392)
    at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1300)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:435)
    at org.postgresql.ssl.MakeSSL.convert(MakeSSL.java:41)
...
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:103)
    at org.postgresql.xa.PGXADataSource.getXAConnection(PGXADataSource.java:49)
    at org.postgresql.xa.PGXADataSource.getXAConnection(PGXADataSource.java:35)

Any reason this timeout is not being applied here?

The version in use here is 42.3.6


Thanks! I'll try. Was hoping for a SNAPSHOT version with this change in, but looks like these are no longer produced(?), although mentioned here https://jdbc.postgresql.org/download/  Anyways, it will be quite hard to reproduce this socket-read hang situation, so not sure I'll be able to test the change :)


In order to create a snapshot version I would need to merge the change in.
 

Some more observations (obv from a newcomer to this space..):

As mentioned I'm setting "connectTimeout". Is this value somehow trickling down, and ending up at what's called "networkTimeout" in the code?
I'm asking as networkTimeout is not a connection parameter.. https://jdbc.postgresql.org/documentation/use/

Also confusing to me is the existing parameter "sslResponseTimeout", this defaults to 5 seconds, and is already documented as 'the maximum time to wait for a response after requesting an SSL encrypted connection from the server'. Shouldn't this value be used in above case.

Fair question 

Lastly, seeing "socketTimeout", however I would not want to set this one, as it could interfere with long-running queries, and to me, should not be used during connection setup.


Should probably reset it after connecting.

Thanks,
Dave 

- Martin

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Martin Lichtin
Дата:
Сообщение: Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake
Следующее
От: Rahul Uniyal
Дата:
Сообщение: Java - Inconsistent behaviour with double precession data type