Re: Connection pool problem - Mailing list pgsql-jdbc
From | Stéphane RIFF |
---|---|
Subject | Re: Connection pool problem |
Date | |
Msg-id | 42246A2E.60604@cerene.fr Whole thread Raw |
In response to | Re: Connection pool problem (Oliver Jowett <oliver@opencloud.com>) |
Responses |
Re: Connection pool problem
Re: Connection pool problem |
List | 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
pgsql-jdbc by date: