Re: Cannot obtain globalId for an object which is registered in an other than the databaseContext's active editingContext in _globalIDForObject
Re: Cannot obtain globalId for an object which is registered in an other than the databaseContext's active editingContext in _globalIDForObject
- Subject: Re: Cannot obtain globalId for an object which is registered in an other than the databaseContext's active editingContext in _globalIDForObject
- From: Chuck Hill <email@hidden>
- Date: Wed, 18 Feb 2009 15:06:50 -0800
On Feb 18, 2009, at 2:56 PM, Miguel Arroz wrote:
Hi!
I have seen this behavior when I screwed up some locking stuff.
Make sure:
1) All the contexts you are working with are locked, and locked by
the proper thread.
2) Never, ever, share contexts between sessions. It might appear
it's working fine. Well, it's not. It will fail. Really.
Miserably too.
3) If you are doing low level stuff on the database context (like
pre-fetching batch relationships, etc) make sure you lock the
database context. All sorts of bad things will happen if you don't.
4) If you are using Wonder (and I see you are) make sure you
follow all the rules, namely all your ECs are created using
ERXEC.newEditingContext() instead of new EOEditingContext() and your
app and sessions inherit from the ER classes.
What Miguel said plus:
- OutOfMemory exceptions might cause this
- are you using the shared EC?
- relationships that cross editing contexts will always cause this
- there ARE two ECs involved:
Cannot obtain globalId for an object which is registered in an other
than the databaseContext's active editingContext, object:
<com.xyz.zzyz.model.Page pk:"1">, databaseContext:
er.extensions.eof.ERXDatabaseContext@20212021,
1: object's editingContext:er.extensions.eof.ERXEC@77317731,
2: databaseContext's active editingContext:
er.extensions.eof.ERXEC@62d162d1
Chuck
On 2009/02/18, at 22:19, Bill Gallop wrote:
Hello all,
We're seeing this really weird behaviour in our applications from
time to time. At this point, we haven't found any way to reproduce
it - it's intermittent, but when it happens, fetches from/saves to
the database all bail and the application needs to be restarted.
Our suspicion is some sort of a race condition, but from what I can
see from poking around inside EOF this stuff is supposed to be
single threaded. What's strange is that all of the objects
involved are in the _same_ editing context.
This is a Wonder-ized application running as a servlet with
concurrent request handling and auto-locking turned on.
[2/18/09 9:22:30:975 MST] 0000008d SystemOut O 3251000
[WebContainer : 5] INFO er.transaction.adaptor.Exceptions -
Database Exception occured: java.lang.IllegalStateException: Cannot
obtain globalId for an object which is registered in an other than
the databaseContext's active editingContext, object:
<com.xyz.zzyz.model.Page pk:"1">, databaseContext:
er.extensions.eof.ERXDatabaseContext@20212021, object's
editingContext: er.extensions.eof.ERXEC@77317731, databaseContext's
active editingContext: er.extensions.eof.ERXEC@62d162d1
[2/18/09 9:22:30:975 MST] 0000008d SystemOut O [2009-2-18
9:22:30 MST] <WebContainer : 5> Commit failed on data source of
type class er.extensions.eof.ERXDatabaseContext
[2/18/09 9:22:30:976 MST] 0000008d SystemOut O [2009-2-18
9:22:30 MST] <WebContainer : 5> java.lang.IllegalStateException:
Cannot obtain globalId for an object which is registered in an
other than the databaseContext's active editingContext, object:
<com.xyz.zzyz.model.Page pk:"1">, databaseContext:
er.extensions.eof.ERXDatabaseContext@20212021, object's
editingContext:er.extensions.eof.ERXEC@77317731, databaseContext's
active editingContext: er.extensions.eof.ERXEC@62d162d1
at
com
.webobjects
.eoaccess
.EODatabaseContext._globalIDForObject(EODatabaseContext.java:4660)
at
com
.webobjects
.eoaccess
.EODatabaseContext
.databaseOperationForObject(EODatabaseContext.java:4767)
at
com
.webobjects
.eoaccess.EODatabaseContext.valuesForKeys(EODatabaseContext.java:
6535)
at
com
.webobjects
.eocontrol
.EOObjectStoreCoordinator
.valuesForKeys(EOObjectStoreCoordinator.java:326)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$
_KeyValueQualifierSupport
.schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:
439)
at er.extensions.ERXExtensions
$
KeyValueQualifierSQLGenerationSupport
.schemaBasedQualifierWithRootEntity(ERXExtensions.java:305)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$
Support
._schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:
179)
at
com
.webobjects
.eoaccess
.EODatabaseChannel
.selectObjectsWithFetchSpecification(EODatabaseChannel.java:227)
at
com
.webobjects
.eoaccess
.EODatabaseContext
._objectsWithFetchSpecificationEditingContext
(EODatabaseContext.java:3055)
at
er
.extensions
.eof
.ERXDatabaseContext
._objectsWithFetchSpecificationEditingContext
(ERXDatabaseContext.java:57)
at
com
.webobjects
.eoaccess
.EODatabaseContext
.objectsWithFetchSpecification(EODatabaseContext.java:3195)
at
com
.webobjects
.eocontrol
.EOObjectStoreCoordinator
.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
at
com
.webobjects
.eocontrol
.EOEditingContext
.objectsWithFetchSpecification(EOEditingContext.java:4069)
at
er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:
1114)
at
com
.webobjects
.eoaccess
.EODatabaseContext.objectsForSourceGlobalID(EODatabaseContext.java:
4084)
at
er
.extensions
.eof
.ERXDatabaseContext
.objectsForSourceGlobalID(ERXDatabaseContext.java:40)
at
com
.webobjects
.eocontrol
.EOObjectStoreCoordinator
.objectsForSourceGlobalID(EOObjectStoreCoordinator.java:634)
at
com
.webobjects
.eocontrol
.EOEditingContext.objectsForSourceGlobalID(EOEditingContext.java:
3923)
at
er.extensions.eof.ERXEC.objectsForSourceGlobalID(ERXEC.java:1070)
at
com
.webobjects
.eoaccess.EODatabaseContext._fireArrayFault(EODatabaseContext.java:
4245)
at
com
.webobjects
.eoaccess
.EOAccessArrayFaultHandler
.completeInitializationOfObject(EOAccessArrayFaultHandler.java:77)
at
com
.webobjects
.eocontrol
._EOCheapCopyMutableArray.willRead(_EOCheapCopyMutableArray.java:45)
at
com
.webobjects
.eocontrol
._EOCheapCopyMutableArray.count(_EOCheapCopyMutableArray.java:103)
at
com.webobjects.foundation.NSArray.containsObject(NSArray.java:666)
at
com
.webobjects
.eocontrol
.EOCustomObject
.includeObjectIntoPropertyWithKey(EOCustomObject.java:904)
at
er
.extensions
.eof
.ERXGenericRecord
.includeObjectIntoPropertyWithKey(ERXGenericRecord.java:1192)
at
com.xyz.zzyz.model._Page.addToClientPageCompletes(_Page.java:130)
at sun.reflect.GeneratedMethodAccessor783.invoke(Unknown
Source)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at
com
.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:
122)
at
com
.webobjects
.eocontrol
.EOCustomObject.addObjectToPropertyWithKey(EOCustomObject.java:940)
at
com
.webobjects
.eocontrol.EOEditingContext._mergeValueForKey(EOEditingContext.java:
660)
at
com
.webobjects
.eocontrol
.EOEditingContext._mergeObjectWithChanges(EOEditingContext.java:3457)
at
com
.webobjects
.eocontrol
.EOEditingContext._processObjectStoreChanges(EOEditingContext.java:
3546)
at sun.reflect.GeneratedMethodAccessor219.invoke(Unknown
Source)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at
com.webobjects.foundation.NSSelector.invoke(NSSelector.java:358)
at
com
.webobjects
.foundation.NSSelector._safeInvokeSelector(NSSelector.java:110)
at
com
.webobjects
.eocontrol
.EOEditingContext._processNotificationQueue(EOEditingContext.java:
4741)
at
com
.webobjects.eocontrol.EOEditingContext.lock(EOEditingContext.java:
4620)
at er.extensions.eof.ERXEC.lock(ERXEC.java:480)
at
com
.webobjects
.eocontrol.EOEditingContext.tryLock(EOEditingContext.java:4632)
at
com
.webobjects
.eocontrol
.EOEditingContext._sendOrEnqueueNotification(EOEditingContext.java:
4705)
at
com
.webobjects
.eocontrol.EOEditingContext._globalIDChanged(EOEditingContext.java:
2038)
at sun.reflect.GeneratedMethodAccessor292.invoke(Unknown
Source)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at
com
.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:
122)
at com.webobjects.foundation.NSNotificationCenter
$_Entry.invokeMethod(NSNotificationCenter.java:588)
at
com
.webobjects
.foundation
.NSNotificationCenter.postNotification(NSNotificationCenter.java:532)
at
com
.webobjects
.foundation
.NSNotificationCenter.postNotification(NSNotificationCenter.java:562)
at
com
.webobjects
.eocontrol
.EOObjectStoreCoordinator
._globalIDsChangedInSubStore(EOObjectStoreCoordinator.java:698)
at sun.reflect.GeneratedMethodAccessor618.invoke(Unknown
Source)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at
com
.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:
122)
at com.webobjects.foundation.NSNotificationCenter
$_Entry.invokeMethod(NSNotificationCenter.java:588)
at
com
.webobjects
.foundation
.NSNotificationCenter.postNotification(NSNotificationCenter.java:532)
at
com
.webobjects
.foundation
.NSNotificationCenter.postNotification(NSNotificationCenter.java:562)
at
com
.webobjects
.eoaccess.EODatabaseContext.commitChanges(EODatabaseContext.java:
6377)
at
com
.webobjects
.eocontrol
.EOObjectStoreCoordinator
.saveChangesInEditingContext(EOObjectStoreCoordinator.java:386)
at
com
.webobjects
.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3192)
at er.extensions.eof.ERXEC._saveChanges(ERXEC.java:981)
at er.extensions.eof.ERXEC.saveChanges(ERXEC.java:903)
...
cheers
Bill
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
...........................
http://www.survs.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
--
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
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden