-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: [c3p0] apparent deadlock
PostPosted: Tue Jun 14, 2005 4:09 am 
Beginner
Beginner

Joined: Wed May 05, 2004 3:26 am
Posts: 25
At some point our database server failed and that is when all exceptions started to roll out.

I was wondering why it wasnt possible to acquire a new connection through the connection pool once the server recovered.

All queries are simple selects (no inserts, or updates). Using a ThreadLocal pattern there is a connect method in a HiberClient class

Code:
       this.session = database.getClientSession();
       this.session.setFlushMode(FlushMode.NEVER);
       this.transaction = session.beginTransaction();


and a disconnect
Code:
       try {
           transaction.commit();
       }
       catch(HibernateException e)
       {
           logger.warn("commit failed, rolling back", e);
           transaction.rollback();
       }
       finally {
           database.closeSession();
       }


with all transactions taking place in between.

Hibernate version:
3.0.5

c3p0 version:
0.9.0-pre6

Full stack trace of any exception that occurs:
Code:
[140605-095250]:OPENSEAS: - WARN  - [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
[140605-095250]:OPENSEAS: - WARN  - [c3p0] Another error has occurred [ java.sql.SQLException: Invalid state, the Connection object is
closed. ] which will not be reported to listeners!
java.sql.SQLException: Invalid state, the Connection object is closed.
        at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1213)
        at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java:1819)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:303)
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:379)
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:320)
        at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:86)
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1096)
        at org.hibernate.loader.Loader.doQuery(Loader.java:367)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:208)
        at org.hibernate.loader.Loader.loadEntity(Loader.java:1278)
        at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:141)
        at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:126)
        at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2491)
        at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:386)
        at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:367)
        at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:166)
        at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:140)
        at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:119)
        at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:593)
        at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
        at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:80)
        at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
        at gr.forthnet.openseas.models.Port$$EnhancerByCGLIB$$36bfa3f9.getDestinationPorts(<generated>)
        at gr.forthnet.openseas.resources.Openseas.xmlTo(Openseas.java:186)
        at gr.forthnet.shipping.ShippingClient.xmlTo(ShippingClient.java:63)
        at gr.forthnet.shipping.ws.ShippingSoapBindingImpl.xmlTo(ShippingSoapBindingImpl.java:21)
        at gr.forthnet.shipping.ws.ShippingSoapBindingSkeleton.xmlTo(ShippingSoapBindingSkeleton.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:388)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:283)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
[140605-095522]:OPENSEAS: - INFO  - request ports given from: SKG
[140605-095522]:OPENSEAS: - WARN  - [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
[140605-095522]:OPENSEAS: - WARN  - [c3p0] Another error has occurred [ java.sql.SQLException: Invalid state, the Connection object is
closed. ] which will not be reported to listeners!
java.sql.SQLException: Invalid state, the Connection object is closed.
        at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1213)
        at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java:1819)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:303)
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:379)
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:320)
        at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:86)
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1096)
        at org.hibernate.loader.Loader.doQuery(Loader.java:367)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:208)
        at org.hibernate.loader.Loader.loadEntity(Loader.java:1278)
        at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:141)
        at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:126)
        at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2491)
        at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:386)
        at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:367)
        at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:166)
        at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:140)
        at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:119)
        at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:593)
        at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
        at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:80)
        at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
        at gr.forthnet.openseas.models.Port$$EnhancerByCGLIB$$36bfa3f9.getDestinationPorts(<generated>)
        at gr.forthnet.openseas.resources.Openseas.xmlTo(Openseas.java:186)
        at gr.forthnet.shipping.ShippingClient.xmlTo(ShippingClient.java:63)



Name and version of the database you are using:
RDBMS: Microsoft SQL Server, version: 08.00.0760
JDBC driver: jTDS Type 4 JDBC Driver for MS SQL Server and Sybase, version: 1.0.3

_________________
The Bits Control The Atoms


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 17, 2005 2:43 am 
Beginner
Beginner

Joined: Wed May 05, 2004 3:26 am
Posts: 25
It seems like jtds 1.1 resolves the issue.

from the changelog,
Quote:
Corrected bug [1209039] jTDS can deadlock when used with C3P0 connection
pooling; unnecessary synchronization on statements caused deadlocks.


Haven't tried it yet though

_________________
The Bits Control The Atoms


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.