You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2004/08/08 17:36:12 UTC

DO NOT REPLY [Bug 30523] New: - hands out connections though broken at back end

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30523>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=30523

hands out connections though broken at back end

           Summary: hands out connections though broken at back end
           Product: Commons
           Version: 1.0 Alpha
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: Normal
          Priority: Other
         Component: Dbcp
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: fredrik.wendt@linux.se


The setup:
Hibernate Session is fetched from a Hibernate SessionFactory, created from a
Hibernate Configuration which uses JNDI/DBCP setup by Tomcat. The entry is found
below.

The problem:
After tomcat has completed starting up, all is well. No problems, but if I
restart the PostgreSQL database (as in /etc/init.d/postgres restart), the
Connections handed out by DBCP fails to execute queries.

Actual results:
The pool becomes unusable.

Expected results:  
The pool detects the problem and reinitiates all connections to the database.

Stacktrace: (heavily reduced)
javax.servlet.ServletException: Couldn't load todo items from database.
        at
se.csbnet.nvg.worksupport.actions.ViewTodoList.service(ViewTodoList.java:49)
[...]
        at net.w_sys.mwa.filters.HibernateFilter.doFilter(HibernateFilter.java:142)
[...]
        at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
        at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
        at java.lang.Thread.run(Thread.java:534)
Could not execute query
net.sf.hibernate.JDBCException: Could not execute query
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1539)
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513)
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1505)
        at
se.csbnet.nvg.worksupport.actions.ViewTodoList.service(ViewTodoList.java:37)
[...]
        at net.w_sys.mwa.filters.HibernateFilter.doFilter(HibernateFilter.java:142)
[...]
        at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
        at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
        at java.lang.Thread.run(Thread.java:534)
Caused by: org.postgresql.util.PSQLException: An IO erro occured while sending
to the backend - Exception: java.net.SocketException: Broken pipe
Stack Trace:

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:79)
        at org.postgresql.core.PGStream.SendChar(PGStream.java:66)
        at org.postgresql.core.QueryExecutor.sendQueryV3(QueryExecutor.java:320)
[...]
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:233)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:205)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
[...]
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1505)
        at
se.csbnet.nvg.worksupport.actions.ViewTodoList.service(ViewTodoList.java:37)
[...]
        at net.w_sys.mwa.filters.HibernateFilter.doFilter(HibernateFilter.java:142)
[...]
        at java.lang.Thread.run(Thread.java:534)
End of Stack Trace

        at org.postgresql.core.QueryExecutor.sendQueryV3(QueryExecutor.java:341)
[...]
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:233)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:205)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
[...]
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1536)
        ... 50 more
An IO erro occured while sending to the backend - Exception:
java.net.SocketException: Broken pipe
Stack Trace:

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:79)
        at org.postgresql.core.PGStream.SendChar(PGStream.java:66)
[...]
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:233)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:205)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
[...]
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1505)
        at
se.csbnet.nvg.worksupport.actions.ViewTodoList.service(ViewTodoList.java:37)
[...]
        at net.w_sys.mwa.filters.HibernateFilter.doFilter(HibernateFilter.java:142)
[...]
        at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
        at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
        at java.lang.Thread.run(Thread.java:534)
End of Stack Trace

org.postgresql.util.PSQLException: An IO erro occured while sending to the
backend - Exception: java.net.SocketException: Broken pipe
Stack Trace:

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:79)
        at org.postgresql.core.PGStream.SendChar(PGStream.java:66)
        at org.postgresql.core.QueryExecutor.sendQueryV3(QueryExecutor.java:320)
[...]
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:233)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:205)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
[...]
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1505)
        at
se.csbnet.nvg.worksupport.actions.ViewTodoList.service(ViewTodoList.java:37)
[...]
        at net.w_sys.mwa.filters.HibernateFilter.doFilter(HibernateFilter.java:142)
[...]
        at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
        at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
        at java.lang.Thread.run(Thread.java:534)
End of Stack Trace

        at org.postgresql.core.QueryExecutor.sendQueryV3(QueryExecutor.java:341)
[...]
        at
org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:233)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:205)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:87)
[...]
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1505)
        at
se.csbnet.nvg.worksupport.actions.ViewTodoList.service(ViewTodoList.java:37)
[...]
        at net.w_sys.mwa.filters.HibernateFilter.doFilter(HibernateFilter.java:142)
[...]
        at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
        at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
        at java.lang.Thread.run(Thread.java:534)


The entry in Tomcat's server.xml looks like this:

        <Context path="/nvg" docBase="/some/where/" reloadable="false">

          <Resource name="jdbc/nvg" scope="Shareable" type="javax.sql.DataSource" />
          <ResourceParams name="jdbc/nvg">
           
<parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
            <!-- JDBC params -->
           
<parameter><name>url</name><value>jdbc:postgresql://localhost/nvg</value></parameter>
           
<parameter><name>driverClassName</name><value>org.postgresql.Driver</value></parameter>
            <parameter><name>username</name><value>username</value></parameter>
            <parameter><name>password</name><value>password</value></parameter>
            <!-- DBCP params -->
            <parameter><name>maxWait</name><value>600</value></parameter>
            <parameter><name>maxIdle</name><value>4</value></parameter>
            <parameter><name>maxActive</name><value>8</value></parameter>
          </ResourceParams>
        </Context>

Using commons-dbcp-1.2.1.jar
Postgres Version: 7.4.3-1
Postgres JDBC-driver: pg74.214.jdbc3.jar

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org