Re: Connection pool problem

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Stéphane RIFF <stephane(dot)riff(at)cerene(dot)fr>
Cc: Oliver Jowett <oliver(at)opencloud(dot)com>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Connection pool problem
Date: 2005-03-01 13:24:20
Message-ID: 42246D04.1060506@fastcrypt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Stéphane RIFF 2005-03-01 13:37:33 Re: [SPAM] - Re: Connection pool problem - Found word(s) list
Previous Message Stéphane RIFF 2005-03-01 13:12:14 Re: Connection pool problem