Problem
I was experiencing a problem with C3P0, Hibernate, PostgresQL, whereby after random periods of time (eg 1 minute, 20 minutes, 4 hours), I would get the following quoted exception stack.
INFO | jvm 1 | 2008/08/05 21:46:49 | 2008-08-05 21:46:49,000 [Timer-0] (BasicResourcePool.java:1392) INFO - A checked-out resource is overdue, and will be destroyed: com.mchange.v2.c3p0.impl.NewPooledConnection@2d8ecc
INFO | jvm 1 | 2008/08/05 21:46:49 | 2008-08-05 21:46:49,000 [Timer-0] (BasicResourcePool.java:1395) INFO - Logging the stack trace by which the overdue resource was checked-out.
INFO | jvm 1 | 2008/08/05 21:46:49 | java.lang.Exception: DEBUG ONLY: Overdue resource check-out stack trace.
INFO | jvm 1 | 2008/08/05 21:46:49 | at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:506)
INFO | jvm 1 | 2008/08/05 21:46:49 | at com.mchange.v2.c3p0.impl.C3P0 PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
INFO | jvm 1 | 2008/08/05 21:46:49 | at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:35)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:129)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1290)
INFO | jvm 1 | 2008/08/05 21:46:49 | at au.com.impulsestudios.theapp.surveillance.dao.SurTasksDAOExt.cancelTasksFromThePast(SurTasksDAOExt.java:160)
INFO | jvm 1 | 2008/08/05 21:46:49 | at au.com.impulsestudios.theapp.surveillance.taskmanagement.TaskExecutor.run(TaskExecutor.java:107)
INFO | jvm 1 | 2008/08/05 21:46:49 | at java.lang.Thread.run(Thread.java:595)
INFO | jvm 1 | 2008/08/05 21:46:49 | 2008-08-05 21:46:49,000 [Thread-17] (JDBCExceptionReporter.java:71) WARN - SQL Error: 0, SQLState: 08006
INFO | jvm 1 | 2008/08/05 21:46:49 | 2008-08-05 21:46:49,000 [Thread-17] (JDBCExceptionReporter.java:72) ERROR - An I/O error occured while sending to thebackend.
INFO | jvm 1 | 2008/08/05 21:46:49 | 2008-08-05 21:46:49,000 [Thread-17] (SurTasksDAOExt.java:168) ERROR - Error trying to cancel tasks from the past. See exception stack. org.hibernate.exception.JDBCConnectionException: could not execute update query
INFO | jvm 1 | 2008/08/05 21:46:49 | org.hibernate.exception.JDBCConnection Exception: could not execute update query
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:84)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:334)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:209)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1126)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
INFO | jvm 1 | 2008/08/05 21:46:49 | at au.com.impulsestudios.theapp.surveillance.dao.SurTasksDAOExt.cancelTasksFromThePast(SurTasksDAOExt.java:163)
INFO | jvm 1 | 2008/08/05 21:46:49 | at au.com.impulsestudios.theapp.surveillance.taskmanagement.TaskExecutor.run(TaskExecutor.java:107)
INFO | jvm 1 | 2008/08/05 21:46:49 | at java.lang.Thread.run(Thread.java:595)
INFO | jvm 1 | 2008/08/05 21:46:49 | Caused by: org.postgresql.util.PSQLException: An I/O error occured while sending to the backend.
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:214)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:430)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:346)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:300)
INFO | jvm 1 | 2008/08/05 21:46:49 | at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:75)
INFO | jvm 1 | 2008/08/05 21:46:49 | ... 7 more
INFO | jvm 1 | 2008/08/05 21:46:49 | Caused by: java.net.SocketException: socket closed
INFO | jvm 1 | 2008/08/05 21:46:49 | at java.net.SocketInputStream.socketRead0(Native Method)
INFO | jvm 1 | 2008/08/05 21:46:49 | at java.net.SocketInputStream.read(SocketInputStream.java:129)
INFO | jvm 1 | 2008/08/05 21:46:49 | at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
INFO | jvm 1 | 2008/08/05 21:46:49 | at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:254)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1163)
INFO | jvm 1 | 2008/08/05 21:46:49 | at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
INFO | jvm 1 | 2008/08/05 21:46:49 | ... 12 more
Resolution
Make sure you have the correct postgresql java drivers installed for the version of postgresql you are deploying against! I was deploying against 8.2, but developing against 8.1. When I deployed I received the above errors. When I developed locally (on 8.1) I didn't.
After I fixed this up it worked like a charm.
PostgreSQL Driver Download Page

0 comments:
Post a Comment