Re: currently saving for so it cannot prepare to save for
"Chad Pilkington" <[email protected]>
| Newsgroups | gmane.comp.web.webobjects.devel |
|---|---|
| Message-ID | <003e01c61d02$a4f445d0$2101a8c0@CHADSPC> |
When you use rawRowsForSQL does it use the object store coordinator. I am using it to fetch some results from queries? Is it possible that when I am using rawRowForSQL and someone else tries to save that this error occurs? ----- Original Message ----- From: Jerry W. Walker To: Chad Pilkington Cc: [email protected] Sent: Thursday, January 19, 2006 8:53 AM Subject: Re: currently saving for so it cannot prepare to save for 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.prepareForSaveWithCoordinator(EODatabaseContext.java:5763) at com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(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 _______________________________________________ WebObjects-dev mailing list [email protected] http://www.omnigroup.com/mailman/listinfo/webobjects-dev