Re: Connection pool problem

From: Stéphane RIFF <stephane(dot)riff(at)cerene(dot)fr>
To: Oliver Jowett <oliver(at)opencloud(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Connection pool problem
Date: 2005-03-01 13:12:14
Message-ID: 42246A2E.60604@cerene.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

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

--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 266.5.2 - Release Date: 28/02/2005

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2005-03-01 13:24:20 Re: Connection pool problem
Previous Message Dave Cramer 2005-03-01 12:32:35 Re: impossible to update rows specifying columns with NULL