public inbox for [email protected]  
help / color / mirror / Atom feed
From: Martin Lichtin <[email protected]>
To: [email protected]
Subject: Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake
Date: Wed, 29 Nov 2023 17:06:16 +0100
Message-ID: <[email protected]> (raw)
In-Reply-To: <CADK3HHJDQjz1a8EbE7LE1Cv0S57zR7nZ02=9hLqKmqF7VOq2ww@mail.gmail.com>
References: <[email protected]>
	<[email protected]>
	<CADK3HHKHZMi6FBJD6bp+_9W_HrFkGghevYeccrjv-+=+buGkMA@mail.gmail.com>
	<CADK3HHJDQjz1a8EbE7LE1Cv0S57zR7nZ02=9hLqKmqF7VOq2ww@mail.gmail.com>


On 28/11/2023 21:28, Dave Cramer wrote:
> On Tue, 28 Nov 2023 at 09:07, Dave Cramer <[email protected]> 
> wrote:
>
>     Hi Martin,
>
>     Thanks for the report. I'll have a look.
>     Dave Cramer
>
>     On Tue, 28 Nov 2023 at 08:27, Martin Lichtin <[email protected]>
>     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
>
>
> This Make sure to pass any network timeouts to the new SSL connection. 
> by davecramer · Pull Request #3040 · pgjdbc/pgjdbc (github.com) 
> <https://github.com/pgjdbc/pgjdbc/pull/3040> should fix the problem, 
> can you check ?

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 :)

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.

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.

- Martin


view thread (5+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox