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