public inbox for [email protected]help / color / mirror / Atom feed
Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake 5+ messages / 2 participants [nested] [flat]
* Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake @ 2023-11-28 13:27 Martin Lichtin <[email protected]> 0 siblings, 1 reply; 5+ messages in thread From: Martin Lichtin @ 2023-11-28 13:27 UTC (permalink / raw) To: [email protected] 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 org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:571) at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:168) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:235) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:223) at org.postgresql.Driver.makeConnection(Driver.java:402) at org.postgresql.Driver.connect(Driver.java:261) at java.sql.DriverManager.getConnection(DriverManager.java:664) 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 - Martin ^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake @ 2023-11-28 14:07 Dave Cramer <[email protected]> parent: Martin Lichtin <[email protected]> 0 siblings, 1 reply; 5+ messages in thread From: Dave Cramer @ 2023-11-28 14:07 UTC (permalink / raw) To: Martin Lichtin <[email protected]>; +Cc: [email protected] 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 > org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:571) > at > org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:168) > at > org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:235) > at > org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) > at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:223) > at org.postgresql.Driver.makeConnection(Driver.java:402) > at org.postgresql.Driver.connect(Driver.java:261) > at java.sql.DriverManager.getConnection(DriverManager.java:664) > 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 > > - Martin > ^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake @ 2023-11-28 20:28 Dave Cramer <[email protected]> parent: Dave Cramer <[email protected]> 0 siblings, 1 reply; 5+ messages in thread From: Dave Cramer @ 2023-11-28 20:28 UTC (permalink / raw) To: Martin Lichtin <[email protected]>; +Cc: [email protected] 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 >> org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:571) >> at >> org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:168) >> at >> org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:235) >> at >> org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) >> at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:223) >> at org.postgresql.Driver.makeConnection(Driver.java:402) >> at org.postgresql.Driver.connect(Driver.java:261) >> at java.sql.DriverManager.getConnection(DriverManager.java:664) >> 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 ? Dave ^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake @ 2023-11-29 16:06 Martin Lichtin <[email protected]> parent: Dave Cramer <[email protected]> 0 siblings, 1 reply; 5+ messages in thread From: Martin Lichtin @ 2023-11-29 16:06 UTC (permalink / raw) To: [email protected] 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 ^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake @ 2023-11-29 16:12 Dave Cramer <[email protected]> parent: Martin Lichtin <[email protected]> 0 siblings, 0 replies; 5+ messages in thread From: Dave Cramer @ 2023-11-29 16:12 UTC (permalink / raw) To: Martin Lichtin <[email protected]>; +Cc: [email protected] On Wed, 29 Nov 2023 at 11:06, Martin Lichtin <[email protected]> wrote: > > On 28/11/2023 21:28, Dave Cramer wrote: > > On Tue, 28 Nov 2023 at 09:07, Dave Cramer <[email protected]> > <[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 :) > 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 > ^ permalink raw reply [nested|flat] 5+ messages in thread
end of thread, other threads:[~2023-11-29 16:12 UTC | newest] Thread overview: 5+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2023-11-28 13:27 Driver hangs in connect->MakeSSL.convert->SSLSocketImpl.startHandshake Martin Lichtin <[email protected]> 2023-11-28 14:07 ` Dave Cramer <[email protected]> 2023-11-28 20:28 ` Dave Cramer <[email protected]> 2023-11-29 16:06 ` Martin Lichtin <[email protected]> 2023-11-29 16:12 ` Dave Cramer <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox