From: Ken A. <ken...@an...> - 2011-02-14 20:27:25
|
Chuck, Thanks for the response. My EC's are subclasses of ERXEC, but I was not following the guidelines for subclassing and instantiation. Since making those changes, I have not been able to reproduce this problem. BTW - only 1 EOF stack... just concurrent requests. Ken On Feb 14, 2011, at 3:21 PM, Chuck Hill wrote: > Hi Ken, > > On Feb 11, 2011, at 8:37 PM, Ken Anderson wrote: > >> Hi all, >> >> I have concurrent request handling turned on, and am ending up with a problem when two requests have different EC's locked. >> >> According to the logging, the first method is entered, which locks ERXEC #1. >> >> Then, a new request starts, and locks ERXEC #2. >> >> When the second requests hits the DB, I see this: >> >> [2011-02-12 04:04:38,927] WARN er.extensions.eof.ERXModelGroup Clearing previous class descriptions >> [2011-02-12 04:04:38,927] WARN er.extensions.eof.ERXModelGroup Clearing previous class descriptions > > That means that something has asked that the class description cache be cleared. It might be interesting to log out a stack trace from that method. > > > >> Then, this: >> >> java.lang.IllegalArgumentException: An object store for the entity "Membership" could not be found. Verify that the entity is defined in an EOModel, and that the model is installed properly. To see what models are loaded, you can try printing the return value of EOModelGroup.defaultGroup() in your application. > > And that indicates that the class description cache did not get re-built. Are you running multiple EOF stacks? > > >> All the code works fine if the requests don't overlap. >> >> These are set: >> >> er.extensions.ERXEC.safeLocking=true >> er.extensions.ERXEC.useSharedEditingContext=false >> er.extensions.ERXEnterpriseObject.applyRestrictingQualifierOnInsert=true >> er.extensions.ERXEnterpriseObject.updateInverseRelationships=true >> >> >> they're the defaults and seem pretty harmless, although I always lock everything myself. >> >> One thing - the EC's are subclasses of ERXEC, and I just "new" them: >> >> TTEditingContext ec = new TTEditingContext(); >> >> Is that OK? I noticed there are factory methods for creating new EC's in ERXEC. >> >> Oh - one other thing... once the first request completes, subsequent requests work fine! > > Have you done anything around class descriptions? It is tricky to get the class description cache populated correctly. > >> >> What's the easiest way to see what version of wonder I'm using? I know its the 5.4 branch since I'm using the binary plist stuff.... >> >> Thanks for any thoughts... > > I had looked at getting this information into the built bundles, but the Wonder build files made me decide to put it off to another day. > > > Chuck > > -- > Chuck Hill Senior Consultant / VP Development > > Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. > http://www.global-village.net/products/practical_webobjects > > > > > > > |