On Fri, 2 Apr 2004 08:12:37 -0500, Nick Stuart wrote: > >Thanks for your replies, both Werner and Bruce. I'll add a enhancement bug to >bugzilla for the exception and take a look at those other bugs as well. Everything you state makes sense, I know all about re-using stuff once its already been coded...even if there is a better way around it :) >But, at least the good news is that it is getting worked on and upgraded which is >really cool to hear! >At some point, when I'm done with college (last semester, woohoo!) and all I have to >worry about is work I'm going to start >poking around in castor a lot more to see what damage I can do. :) Interesting comment ... looking back sort of eight years, it now appears to me that I never ever had so much time at my fingers as back when I was finishing my master degree. Iow, feel free to start digging now ... spare time will decrease sharply once you hit the market ... ;-).
Werner > >Thanks again for the replies and clarification. > >-Nick > >P.s. And no more html message will pass your way, I swear! > >-----Original Message----- >From: Werner Guttmann [mailto:[EMAIL PROTECTED] >Sent: Friday, April 02, 2004 6:22 AM >To: [EMAIL PROTECTED] >Subject: Re: [castor-dev] updating when not in cache... > > >Nick, > >if I ever see an email with HTML code again, I am not going to respond anymore ... >;-). Just kidding, of course. > >Please see inline for (tentative) replies ... > >Werner > >--Original Message Text--- >From: Nick Stuart >Date: Thu, 1 Apr 2004 17:13:21 -0500 > >Hello all. I was just wandering about long transactions and cache management. What's >happening is that I'm loading a bunch of stuff up to use/view in jsp pages. I load enough stuff up so that stuff gets bumped out of the cache, which is fine until I try and go to update something, then it gives me an ObjectModifiedException. > ><werner > >well, as you've discovered yourself, for long transactions to work, an object >previously loaded in an earlier transaction context needs to be in cache for >Database.update() to work. I do agree that this is not ideal and hence should be >changed. And to give you a nice and warm feeling about the future, it will be changed (eventually). I am currently reworking major parts of the performance caches (details to be found in bugs 1532, 1533 and 1534), and I am making some progress, indeed. But so far, my focus has been on refactoring the performance caches wrt their internal structure (subclassing vs. >subtyping), instantiation, configuration. Iow, I have not touched on the subject of >decoupling performance cache(s) from dirty checking cache. As that's what you are currently suffering from. When this has been implemented originally, a decision has been taken to 're-use' the performance caches .. not an ideal one, though. > >I think long-term, all this will have to be addressed. In the short term, I agree >that a couple of things could be done re: throwing a different exception, etc. >For the time being, I thin you'll be stuck with either using Unlimited or >CountLimited with a carefully selected capacity. ></werner> > >Would there be a way to update something that is not in the cache? > ><werner> as per above, no. </werner> > >I changed the cache-type to unlimited so that nothing gets thrown out, but I would >like to not to have to store everything in memory if I can avoid it. I would use lazy-loading but it needs to have the transaction or the database (?) open for it to load the object which makes sense, but I close both when I'm done doing something so that wont work. :/ > >Here's the output of my log before I changed the cache-type: >16:35:39,280 [main] DEBUG com.vort.help.tests - Ticket 1286/1080855338898 loaded. >2004-04-01 16:35:39,280 [main] DEBUG com.vort.help.commands - Starting to update >ticket. >2004-04-01 16:35:39,280 [main] INFO com.vort.help.commands - Updating ticket >#1286/1080855338898 for user jbutler >2004-04-01 16:35:39,280 [main] DEBUG com.vort.help.commands.UpdateTicketInfo - >Updating all related ticket information >2004-04-01 16:35:39,280 [main] DEBUG org.exolab.castor.persist.cache.CountLimited - >Removing cache entry for key com.vort.help.beans.Priority/2: >com.vort.help.beans.Priority/2/17 -/- >2004-04-01 16:35:39,280 [main] DEBUG org.exolab.castor.persist.cache.CountLimited - >Removing cache entry for key >com.vort.help.beans.Category/82: com.vort.help.beans.Category/82/137 -/- >2004-04-01 16:35:39,280 [main] DEBUG com.vort.help.commands.UpdateTicketInfo - >Updating the tech info for nstuart >2004-04-01 16:35:39,280 [main] DEBUG org.exolab.castor.persist.cache.TimeLimited - >TimeLimiteLRU: remove (com.vort.help.beans.Employee/nstuart) >= com.vort.help.beans.Employee/nstuart/0 -/- >2004-04-01 16:35:39,280 [main] DEBUG org.exolab.castor.persist.cache.CountLimited - >Removing cache entry for key com.vort.help.beans.User/3: >com.vort.help.beans.User/3/115 -/- >2004-04-01 16:35:39,280 [main] DEBUG org.exolab.castor.persist.cache.CountLimited - >Removing cache entry for key >com.vort.help.beans.Department/11: com.vort.help.beans.Department/11/1 -/- >2004-04-01 16:35:39,290 [main] DEBUG org.exolab.castor.persist.cache.TimeLimited - >TimeLimiteLRU: remove (com.vort.help.beans.Employee/jbutler) >= com.vort.help.beans.Employee/jbutler/117 -/- >2004-04-01 16:35:39,290 [main] DEBUG org.exolab.castor.persist.cache.CountLimited - >Removing cache entry for key com.vort.help.beans.User/15: >com.vort.help.beans.User/15/136 -/- >2004-04-01 16:35:39,290 [main] DEBUG org.exolab.castor.persist.cache.CountLimited - >Removing cache entry for key >com.vort.help.beans.Ticket/1286: null <<<<<------ >2004-04-01 16:35:39,290 [main] INFO com.vort.help.commands - There was a problem >updating the ticket: Timestamp mismatched! >2004-04-01 16:35:39,300 [main] DEBUG com.vort.help.commands - StackTrace: >org.exolab.castor.jdo.ObjectModifiedException: Timestamp mismatched! > ><<<<<----- I looked through the source and saw that this was supposed to be the >removedObject from the cache, so apparently this wasn't there to be removed and hence complains. Maybe a better exception here would be ObjectNotInCache or something like that. I spent hours trying to figure where my timestamp issues were because I didn't have the castor logs on debug mode :( > ><werner>I agree that something should be done about the exception thrown ... please >feel free to file a bug report (enhancemenbt request), and I'll take a look ... as always, an associated patch would be welcome as well.</werner> > >And basically I guess I want to know is, why does an object have to be in cache in >order to update it? > ><werner>'casue that's the chosen mechanism to store the timestamp information >associated with the object when it has been loaded in a previous transaction context. as explained above, the performance caches have veen 're-used'when they should not have .. ;-). I hope this explains why things are occuring as they are. Of course, my explanation still fails to make the problem go away ...</werner> > >Couldn't it get reloaded if it wasn't in the cache and then update it? I'm not quite >sure where the dirty checking comes in but I'm guessing this is why things need to be in the cache to in order to be updated....is this right? > >Nicholas Stuart >Computer Systems Analyst > >Vortechnics, Inc. >200 Enterprise Drive >Scarborough, Maine 04074 > > > > >--- >Outgoing mail is certified Virus Free. >Checked by AVG anti-virus system (http://www.grisoft.com). >Version: 6.0.648 / Virus Database: 415 - Release Date: 3/31/2004 > > >----------------------------------------------------------- >If you wish to unsubscribe from this mailing, send mail to >[EMAIL PROTECTED] with a subject of: > unsubscribe castor-dev > > > >--- >Incoming mail is certified Virus Free. >Checked by AVG anti-virus system (http://www.grisoft.com). >Version: 6.0.648 / Virus Database: 415 - Release Date: 3/31/2004 > > >--- >Outgoing mail is certified Virus Free. >Checked by AVG anti-virus system (http://www.grisoft.com). >Version: 6.0.648 / Virus Database: 415 - Release Date: 3/31/2004 > > >----------------------------------------------------------- >If you wish to unsubscribe from this mailing, send mail to >[EMAIL PROTECTED] with a subject of: > unsubscribe castor-dev > ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev