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: