cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Lamb <alexander.l...@rodanotech.ch>
Subject Crash when reconnecting to MySQL (3.0M3)
Date Wed, 26 Mar 2008 08:44:42 GMT
Hello List,

We have an application, deployed successfully with Tapestry 5.0.11 and  
Cayenne 3.0M3 on Tomcat 6 with MySQL 5.0.

Everything is fine until the point where a long period of inactivity  
has passed and (we suppose) all the DataContexts are garbage collected  
(we create one DataContext per user session).
The first user who logs in will generate an error on (again, what we  
suppose) is a problem reconnecting to MySQL.

To avoid the problem, we "ping" the app to keep it alive... We also  
tried to catch the Exception but doing so simply pushes the problem to  
another part of the program. The funny thing is that it is not the  
first attempt to connect to the database but maybe the first attempt  
using either a stored query in the model or raw SQL.

Here is the kind of message we get:

	Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.io.EOFException

STACKTRACE:

java.io.EOFException
	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1905)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2351)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
	at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:4913)
	at  
org 
.apache 
.cayenne 
.conn.PooledConnectionImpl.getConnection(PooledConnectionImpl.java:129)
	at  
org.apache.cayenne.conn.PoolManager.uncheckConnection(PoolManager.java: 
383)
	at org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java: 
367)
	at org.apache.cayenne.conn.PoolManager.getConnection(PoolManager.java: 
344)
	at org.apache.cayenne.access.DataNode 
$TransactionDataSource.getConnection(DataNode.java:321)
	at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:209)
	at  
org 
.apache 
.cayenne 
.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:442)
	at org.apache.cayenne.access.DataDomainQueryAction.access 
$000(DataDomainQueryAction.java:67)
	at org.apache.cayenne.access.DataDomainQueryAction 
$2.transform(DataDomainQueryAction.java:415)
	at  
org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java: 
847)
	at  
org 
.apache 
.cayenne 
.access 
.DataDomainQueryAction 
.runQueryInTransaction(DataDomainQueryAction.java:412)
	at  
org 
.apache 
.cayenne 
.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:119)
	at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:740)
	at  
org 
.apache 
.cayenne 
.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java: 
296)
	at org.apache.cayenne.util.ObjectContextQueryAction 
$1.createObject(ObjectContextQueryAction.java:286)
	at org.apache.cayenne.cache.MapQueryCache.get(MapQueryCache.java:74)
	at  
org 
.apache 
.cayenne 
.util 
.ObjectContextQueryAction 
.interceptLocalCache(ObjectContextQueryAction.java:258)
	at  
org 
.apache 
.cayenne 
.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:82)
	at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1331)
	at  
org.apache.cayenne.access.DataContext.performQuery(DataContext.java: 
1320)
	at  
ch 
.rodano 
.studies 
.services 
.StudySession 
.getRunningTotalPatientsByMonthForRegistryCenters(StudySession.java:466)


etc...

Thanks for any idea!

Alex

--
Alexander Lamb
Founding Associate
RODANOTECH Sàrl

4 ch. de la Tour de Champel
1206 Geneva
Switzerland

Tel:  022 347 77 37
Fax: 022 347 77 38

http://www.rodanotech.ch




Mime
View raw message