db-torque-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sam Joseph <gai...@yha.att.ne.jp>
Subject Torque fails on BasePeer.doInsert() [was Re: recursive save]
Date Wed, 15 Jan 2003 08:14:39 GMT

Replying to my own post (which I sent to dev and should have sent here - 
sorry), further investigation suggests that I do not a recursive save 
problem.  I have now been able to replicate the problem in my test 
environment and I have determined that the save failure occurs on one 
database and not on another.  Both are MySQL databases, and the major 
difference is the size of the table in question.  In the smaller 
database there are 9000 rows in the table we are trying to insert into. 
 In the larger database there are 30000 or so.

The difference could not be more severe.  The 9000 row table receives 
inserts no problem.  The 30000 row table leads to a OutOfMemory error 
after BasePeer.doInsert() is called.

Profiling makes it look like a succession of TorqueExceptions are being 
called.  I can imagine that the database is throwing an exception, but 
Torque is getting in a lot of trouble handling it.

Has anyone else ever had this kind of problem?  

I guess I'm going to try and check the latest version of Torque out of 
CVS and see if that helps.


Sam Joseph wrote:

> Hi,
> I seem to be experiencing something that seems like a recursive save. 
> At least I am getting java.lang.OutOfMemory errors when I am trying to 
> perform a save() operation. 
> The odd thing is that it doesn't seem to happen when I run an 
> independent test, but only when I am running the code from within 
> Tomcat.  Well, I think in the independent mode the JVM just terminates 
> itself (it's running within ant).  Whereas in the Tomcat environment, 
> the JVM doesn't crash out, but the memory consumption spirals up and 
> up until I get OutOfMemoryErrors.
> Under these circumstances a recursive bit of code would fit the bill 
> as culprit, however looking at  my OM classes I see that after the 
> save() operation in called in my Event object that extends BaseEvent 
> the following functions are called:
> [Event] save()
> [BaseEvent] save(String dbName)
> [BaseEvent] save(DBConnection dbCon)
> [BaseEventPeer] doInsert( Criteria criteria, DBConnection dbCon )
> [BasePeer] doInsert( Criteria criteria, DBConnection dbCon )
> It is after calling BasePeer.doInsert() that the code hangs - and I 
> get OutOfMemory errors in a Tomcat environment, and the JVM terminates 
> in the ant test environment.
> I haven't placed debug statements with the BasePeer code yet, as that 
> will require re-compiling the jar etc., but superficially there does 
> not seem to be any recursion taking place in the OM classes, although 
> conceivably my bugging operations are not telling the whole story.
> I have read the emails regarding the recursive saving problem, and 
> been looking at the latest code in Torque CVS but I can't fathom what 
> is actually causing the recursive problem being talked about, and 
> whether it might be the same problem I am experiencing.
> Could anyone explain to me what the existing recursive save problem 
> was? Or rather which are the methods that are called recursively and 
> what triggers them to be called so, a flag or something?

View raw message