Detecting 'socket errors' - closing the Connection object - Mailing list pgsql-jdbc

From David Wall
Subject Detecting 'socket errors' - closing the Connection object
Date
Msg-id 00c301c34fae$edf5ab30$3201a8c0@rasta
Whole thread Raw
In response to Fix for receiving empty query errors.  (Kim Ho <kho@redhat.com>)
Responses Re: Detecting 'socket errors' - closing the Connection object  (Dmitry Tkach <dmitry@openratings.com>)
Re: Detecting 'socket errors' - closing the Connection object  (Oliver Jowett <oliver@opencloud.com>)
List pgsql-jdbc
I have a connection pool that opens several connections and passes them out
to individual threads as needed.  Normally this works just fine.  However,
if the postgresql database is restarted, or if the database is on another
network segment, hiccups on the network will cause socket errors on the
underlying JDBC connection.

When a connection is returned to the pool, I'm calling the 'isClosed()'
method to see if the underlying connection has been closed, but apparently
when there is a socket error, the JDBC connection is not automatically being
closed, despite the fact that such an error will always be unrecoverable.

I've also seen the same problem occur on the Oracle JDBC drivers (oracle sql
exception errors 17002 and 17008).

Is there a reason why the JDBC implementations don't close the Connection
object when they get an I/O error on the socket?  Or am I doing something
else wrong in trying to detect that the connection has failed and must be
closed and reopened before being used again?

Thanks,
David


pgsql-jdbc by date:

Previous
From: Kim Ho
Date:
Subject: Fix for receiving empty query errors.
Next
From: Fernando Nasser
Date:
Subject: Re: IN clauses via setObject(Collection) [Was: Re: Prepared