Re: currently saving for so it cannot prepare to save for
"Jerry W. Walker" <[email protected]>
| Newsgroups | gmane.comp.web.webobjects.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, Chad, This looks like a failure to lock the EOObjectStoreCoordinator. Typically, this is done by default in the standard use of the default editing context. The following is from the EOObjectStoreCoordinator JavaDoc documentation for the lock method: ======================== This method is used to protect access to the receiver from concurrent operations by multiple threads. EOEditingContexts will indirectly lock their EOObjectStoreCoordinators when necessary. Locking an EOObjectStoreCoordinator will cause the coordinator to lock each registered EOCooperatingObjectStore managed by that coordinator. Applications which make direct use of an EOObjectStoreCoordinator should lock and unlock it as appropriate. Do not confuse this with any methods which work with the database locking mechanism. ======================== If you reformat your error message as follows it looks more like a stack trace: ======================== IllegalStateException: prepareForSaveWithCoordinator: EODatabaseContext@e9e799 is currently saving for EOEditingContext@aa0933 so it cannot prepare to save for EOEditingContext@c73be3. EOObjectStoreCoordinator@3d2b3 has sources (EODatabaseContext@e9e799) at EODatabaseContext.prepareForSaveWithCoordinator (EODatabaseContext.java:5763) at EOObjectStoreCoordinator.saveChangesInEditingContext (EOObjectStoreCoordinator.java:405) at EOEditingContext.saveChanges(EOEditingContext.java:3128) at Main.actLoginAdmin(Main.java:328) at sun.reflect.GeneratedMethodAccessor174.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at reflect.Method.invoke(Method.java:324) at KeyValueCodingProtectedAccessor.methodValue (KeyValueCodingProtectedAccessor.java:54) at NSKeyValueCoding$_MethodBinding.valueInObject (NSKeyValueCoding.java:1160) at NSKeyValueCoding$DefaultImplementation.valueForKey (NSKeyValueCoding.java:1268) at WOComponent.valueForKey(WOComponent.java:1544) ======================== The error seems to be occurring at Main.actLoginAdmin(Main.java:328). You might start with that statement to see if any code is directly accessing the EOObjectStoreCoordinator directly without locking. You also mentioned that you are only using the Session's default editing context and sometimes a child thereof. The child editing contexts should be explicitly locked. Check also to be sure that the code is not creating a peer editing context by leaving out the reference to the default editing context in the constructor message. HTH. Regards, Jerry On Jan 18, 2006, at 9:38 PM, Chad Pilkington wrote: > I have an applicaton where I am getting this error a lot: > java.lang.IllegalStateException: prepareForSaveWithCoordinator: > com.webobjects.eoaccess.EODatabaseContext@e9e799 is currently > saving for com.webobjects.eocontrol.EOEditingContext@aa0933 so it > cannot prepare to save for > com.webobjects.eocontrol.EOEditingContext@c73be3. > com.webobjects.eocontrol.EOObjectStoreCoordinator@3d2b3 has sources > (com.webobjects.eoaccess.EODatabaseContext@e9e799) at > com.webobjects.eoaccess.EODatabaseContext.prepareForSaveWithCoordinato > r(EODatabaseContext.java:5763) at > com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditing > Context(EOObjectStoreCoordinator.java:405) at > com.webobjects.eocontrol.EOEditingContext.saveChanges > (EOEditingContext.java:3128) at Main.actLoginAdmin(Main.java:328) > at sun.reflect.GeneratedMethodAccessor174.invoke(Unknown Source) at > sun.reflect.DelegatingMethodAccessorImpl.invoke > (DelegatingMethodAccessorImpl.java:25) at > java.lang.reflect.Method.invoke(Method.java:324) at > KeyValueCodingProtectedAccessor.methodValue > (KeyValueCodingProtectedAccessor.java:54) at > com.webobjects.foundation.NSKeyValueCoding > $_MethodBinding.valueInObject(NSKeyValueCoding.java:1160) at > com.webobjects.foundation.NSKeyValueCoding > $DefaultImplementation.valueForKey(NSKeyValueCoding.java:1268) at > com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java: > 1544) > > I am having difficulty discovering exactly how this particuar error > is possible using only one EOModel and one Instance of an > application. I have never seen this error before in any of my > other applications. The only real difference that I can see is > that this application has a mySql v 4.0.18 backend where our other > applications have OpenBase backend. As far as I can tell this error > is occuring at a far higher level then the actual database level. > The application is running on OSX 10.2.8 via monitor. It was built > in WebObjects 5.2 and is using the org.gjt.mm.mysql.Driver v > 3.0.8. The application is not using any special Editing Contexts. > just the session().defaultEditingContext() and the occational child > of that contect new EOEditngContext(session().defaultEditingContext > ()). Does anyone have any idea what the problem is? > _______________________________________________ > WebObjects-dev mailing list > [email protected] > http://www.omnigroup.com/mailman/listinfo/webobjects-dev -- __ Jerry W. Walker, WebObjects Developer/Instructor for High Performance Industrial Strength Internet Enabled Systems [email protected] 203 278-4085 office _______________________________________________ WebObjects-dev mailing list [email protected] http://www.omnigroup.com/mailman/listinfo/webobjects-dev