Re: Connection pool problem - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: Connection pool problem
Date
Msg-id 42246D04.1060506@fastcrypt.com
Whole thread Raw
In response to Re: Connection pool problem  (Stéphane RIFF <stephane.riff@cerene.fr>)
Responses Re: [SPAM] - Re: Connection pool problem - Found word(s) list
List pgsql-jdbc
Stephane,

You didn't read his email carefully enough. Close your connections in a
FINALLY block. That way they are guaranteed to be closed

as far as your exception below, that is very strange. If you are out of
connections on the server then you should get that error
not a bind exception ???

Dave


Stéphane RIFF wrote:

> You're right i forgot to call close() function in the catch block
> Thanks
>
> But know i sometimes get null connections from the datasource with
> exception like this :
> 2005-03-01 12:23:44,156 : [WARN] ConnectionPool -
> org.postgresql.util.PSQLException: The connection attempt failed
> because Exception: java.net.BindException: Address already in use:
> connect
> Stack Trace:
>
> java.net.BindException: Address already in use: connect
>    at java.net.PlainSocketImpl.socketConnect(Native Method)
>    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
>    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
>    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
>    at java.net.Socket.connect(Socket.java:452)
>    at java.net.Socket.connect(Socket.java:402)
>    at java.net.Socket.<init>(Socket.java:309)
>    at java.net.Socket.<init>(Socket.java:124)
>    at org.postgresql.core.PGStream.<init>(PGStream.java:47)
>    at
> org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJdbc1Connection.java:197)
>
>    at org.postgresql.Driver.connect(Driver.java:139)
>    at java.sql.DriverManager.getConnection(DriverManager.java:512)
>    at java.sql.DriverManager.getConnection(DriverManager.java:171)
>    at
> org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:48)
>
>    at
> org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
>
>    at
> org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771)
>
>    at
> org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
>
>    at
> fr.cerene.geosiara.gprs.receiver.ConnectionPool.getConnection(ConnectionPool.java:97)
>
>    at
> fr.cerene.geosiara.gprs.receiver.SQLoader.saveTrame(SQLoader.java:122)
>    at fr.cerene.geosiara.gprs.receiver.SQLoader$1.run(SQLoader.java:219)
>    at java.lang.Thread.run(Thread.java:534)
> End of Stack Trace
>
> 2005-03-01 12:23:44,156 : [WARN] SQLoader -
> java.lang.NullPointerException
>
> I saw on the web that this can happened when the max number of connection
> is reach but in my case postgresql is configure with 100 connections, in
> the process list i had  ~50 connections.
>
> Don't know what i can do...
>
> Oliver Jowett wrote:
>
>> Stéphane RIFF wrote:
>>
>>> I've create a connection pool with dbcp end another with
>>> Jdbc3PoolingDatasource,
>>> it seems to work well but :
>>> My pool is a eight connections pool, the problem is when i get some
>>> database exception (for example
>>> "constraint violation", "duplicate key on unique index"...) the
>>> connection didn't released to the pool.
>>> After eight exception my application wait for a connection from the
>>> pool which nerver give one because
>>> of the PSQLException thrown.
>>
>>
>>
>> Perhaps your code does not release the connection to the pool
>> correctly when handling the exception?
>>
>> The usual way to deal with this is to put connection releasing in a
>> finally block, so it's sure to be run however you exit the try{} block.
>>
>> If it's not that, I'd need to see your code to debug this further.
>>
>> -O
>>
>>
>
>
>

--
Dave Cramer
http://www.postgresintl.com
519 939 0336
ICQ#14675561


pgsql-jdbc by date:

Previous
From: Stéphane RIFF
Date:
Subject: Re: Connection pool problem
Next
From: Markus Schaber
Date:
Subject: Re: impossible to update rows specifying columns with NULL