On Mar 10, 2008, at 7:13 PM, Federico Hernandez wrote:

Hi everybody

I’m getting the next exception
Mar 10 16:04:27 Compliance[5000] DEBUG 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.qoslabs.tm.wo.eo.EOTopic pk:"26">, databaseContext: [EMAIL PROTECTED], object's editingContext: [EMAIL PROTECTED], databaseContext's active editingContext: [EMAIL PROTECTED] After it happens, it appears more times and my application got dead- locks and start increasing the number of worker threads.

I’m working with a Web Service in WO 5.4 using Wonder 4.0.0.484. I’m using a test client to send many request to the Web Service, I could work fine using 4 clients (2,000 transaction each client) at time. But when I increased the number of clients (generally 8, but I test with 5 once) I get the exception randomly (sometimes I could process more than 6,000 transactions and other times only 50-70 transactions). Every request creates its own transaction and its own peer editing context. Many transactions build relationships with common EO’s used as types for others.

What do you mean by "common EO's"?  How are the relationships built?


Looking the trace, I notice that the EC [EMAIL PROTECTED] at WorkerThread11 is saving its changes, it posts a notification to update others EC and it reaches the other EC [EMAIL PROTECTED] Here a common EO should to be updated, because its to-many relationship was modified by first EC (removing an EO in this case, but happens when adds too) but the common EO was a fault in second EC and it tries to read it getting the exception because the first EC it’s the active EC in Database Context. The second EC was created by another thread (WorkerThread15) but notification was process by same thread (WorkerThread11) that creates and saves first EC.

I know and I read about this exception in mailing list, a common mistake is to relate two EO’s in different EC’s. I check my code and I only use addObjectToBothSidesOfRelationshipWithKey method to do relationships (even I comment all the methods in my EO’s to set, addTo or removeFrom relationships), and I extend from Wonder class ERXGenericRecord, it overrides the method addObjectToBothSidesOfRelationshipWithKey and it verifies that this.editingContext() == eo.editingContext(). So I don’t think this should be the reason.

If you set to-one relationships with setFoo(EOEnterpriseObject) or set to-many with setFoos(NSArray), it will not call addObjectToBothSidesOfRelationshipWithKey(). I did not check to see if ERXGenericRecord checks all the cases.

That exception ONLY happens when this.editingContext() != eo.editingContext(). So, somehow, this is happening.

I could say that increasing concurrency I got the exception, but I don’t know why. And it happens too with WO 5.3.3.
Is there another reason for the exception?
Someone has any idea to follow?
Anyone can help me?

I would suspect that either you have a bug in your code or your app is running out of memory. It might be an EOF bug, but I think there are too many other things to look at before deciding that.

Also what does com.qoslabs.tm.wo.MyEC do?


Chuck



Regards
Federico

The complete stack trace:
WorkerThread15 Start TestEngine-5[81] - [EMAIL PROTECTED] - [EMAIL PROTECTED] << WorkerThread12 - to saveChanges: [EMAIL PROTECTED] - [EMAIL PROTECTED] Mar 10 16:04:26 Compliance[5000] INFO com.qoslabs.tm.core.webservice.TMWebService - The QosTransaction TestEngine-6[87] was OK Mar 10 16:04:26 Compliance[5000] INFO com.qoslabs.tm.core.webservice.TMWebService - The QosTransaction TestEngine-3[80] was OK Mar 10 16:04:26 Compliance[5000] INFO com.qoslabs.tm.core.webservice.TMWebService - The QosTransaction TestEngine-4[87] was OK Mar 10 16:04:26 Compliance[5000] INFO com.qoslabs.tm.core.webservice.TMWebService - The QosTransaction TestEngine-7[80] was OK WorkerThread13 Start TestEngine-2[95] - [EMAIL PROTECTED] - [EMAIL PROTECTED] WorkerThread12 Start TestEngine-4[88] - [EMAIL PROTECTED] - [EMAIL PROTECTED] WorkerThread11 Start TestEngine-7[81] - [EMAIL PROTECTED] - [EMAIL PROTECTED] WorkerThread0 Start TestEngine-3[81] - [EMAIL PROTECTED] - [EMAIL PROTECTED] Mar 10 16:04:27 Compliance[5000] INFO com.qoslabs.tm.core.webservice.TMWebService - The QosTransaction TestEngine-8[86] was OK << WorkerThread11 - to saveChanges: [EMAIL PROTECTED] - [EMAIL PROTECTED] Mar 10 16:04:27 Compliance[5000] DEBUG 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.qoslabs.tm.wo.eo.EOTopic pk:"26">, databaseContext: [EMAIL PROTECTED], object's editingContext: [EMAIL PROTECTED], databaseContext's active editingContext: [EMAIL PROTECTED] java.lang.IllegalStateException: Cannot obtain globalId for an object which is registered in an other than the databaseContext's active editingContext, object: <com.qoslabs.tm.wo.eo.EOTopic pk:"26">, databaseContext: [EMAIL PROTECTED], object's editingContext: [EMAIL PROTECTED], databaseContext's active editingContext: [EMAIL PROTECTED] at com .webobjects .eoaccess .EODatabaseContext._globalIDForObject(EODatabaseContext.java:4656) at com .webobjects .eoaccess .EODatabaseContext.databaseOperationForObject(EODatabaseContext.java: 4763) at com .webobjects .eoaccess.EODatabaseContext.valuesForKeys(EODatabaseContext.java:6531) 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:277) 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 .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:4053) at er.extensions.ERXEC.objectsWithFetchSpecification(ERXEC.java:1065) at com .webobjects .eoaccess .EODatabaseContext.objectsForSourceGlobalID(EODatabaseContext.java: 4084) at er .extensions .ERXDatabaseContext.objectsForSourceGlobalID(ERXDatabaseContext.java: 40) at com .webobjects .eocontrol .EOObjectStoreCoordinator .objectsForSourceGlobalID(EOObjectStoreCoordinator.java:634) at com .webobjects .eocontrol .EOEditingContext.objectsForSourceGlobalID(EOEditingContext.java:3907) at er.extensions.ERXEC.objectsForSourceGlobalID(ERXEC.java: 1026) 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:460) at com .webobjects .eocontrol .EOCustomObject.excludeObjectFromPropertyWithKey(EOCustomObject.java: 967) at er .extensions .ERXGenericRecord .excludeObjectFromPropertyWithKey(ERXGenericRecord.java:1197) at com .qoslabs .tm .wo .eo .TMGenericRecord .excludeObjectFromPropertyWithKey(TMGenericRecord.java:31) at com .qoslabs .tm.wo.eo._EOGEN_EOTopic.removeFromOccurTypes(_EOGEN_EOTopic.java:482)
       at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
at com .webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java: 122) at com .webobjects .eocontrol .EOCustomObject.removeObjectFromPropertyWithKey(EOCustomObject.java: 1004) at com .webobjects .eocontrol .EOClassDescription.propagateDeleteForObject(EOClassDescription.java: 464) at com .webobjects .eocontrol .EOCustomObject .propagateDeleteWithEditingContext(EOCustomObject.java:693) at com .webobjects .eocontrol .EOEditingContext.propagateDeletesUsingTable(EOEditingContext.java: 2245) at com .webobjects .eocontrol .EOEditingContext._processDeletedObjects(EOEditingContext.java:2207) at com .webobjects .eocontrol .EOEditingContext._processRecentChanges(EOEditingContext.java:1767) at com .webobjects .eocontrol .EOEditingContext.processRecentChanges(EOEditingContext.java:1966)
       at er.extensions.ERXEC.processRecentChanges(ERXEC.java:616)
at com .webobjects .eocontrol .EOEditingContext._processObjectStoreChanges(EOEditingContext.java: 3484)
       at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
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: 4725) at com.webobjects.eocontrol.EOEditingContext.lock(EOEditingContext.java: 4604)
       at er.extensions.ERXEC.lock(ERXEC.java:437)
       at com.qoslabs.tm.wo.MyEC.lock(TMTransaction.java:224)
at com .webobjects.eocontrol.EOEditingContext.tryLock(EOEditingContext.java: 4616) at com .webobjects .eocontrol .EOEditingContext._sendOrEnqueueNotification(EOEditingContext.java: 4689) at com .webobjects .eocontrol.EOEditingContext._globalIDChanged(EOEditingContext.java: 2035)
       at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
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.GeneratedMethodAccessor55.invoke(Unknown Source)
at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
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:6373) at com .webobjects .eocontrol .EOObjectStoreCoordinator .saveChangesInEditingContext(EOObjectStoreCoordinator.java:386) at com .webobjects .eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3176)
       at er.extensions.ERXEC._saveChanges(ERXEC.java:937)
       at er.extensions.ERXEC.saveChanges(ERXEC.java:860)
at com.qoslabs.tm.wo.TMTransaction.commit(TMTransaction.java: 82) at com .qoslabs .tm.core.webservice.TMWebService.setTopicMap(TMWebService.java:299)
       at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
at org .apache .axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) at org .apache .axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java: 323) at org .apache .axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
       at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
       at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454) at org.apache.axis.server.AxisServer.invoke(AxisServer.java: 281) at com .webobjects .appserver ._private.WOWebService.performActionNamed(WOWebService.java:436) at com .webobjects .appserver ._private .WOActionRequestHandler._handleRequest(WOActionRequestHandler.java: 259) at com .webobjects .appserver ._private .WOActionRequestHandler.handleRequest(WOActionRequestHandler.java:161) at com .webobjects .appserver ._private .WOWebServiceRequestHandler .handleRequest(WOWebServiceRequestHandler.java:109) at com .webobjects .appserver.WOApplication.dispatchRequest(WOApplication.java:1678) at er.extensions.ERXApplication.dispatchRequest(ERXApplication.java:1439) at com .webobjects .appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144) at com .webobjects .appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
       at java.lang.Thread.run(Thread.java:595)
*** FHG: WorkerThread11 for Key: occurTypes - <com.qoslabs.tm.wo.eo.EOTopic pk:"26"> isFault: false - [EMAIL PROTECTED] - <com.qoslabs.tm.wo.eo.EOOccurrence pk:"1431">
MyEC catch error: [EMAIL PROTECTED]
--- rootObjectStore: [EMAIL PROTECTED] - true
WorkerThread11 - [EMAIL PROTECTED] registered: 119
<< WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"null"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"null"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"null"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"null"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"null"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"null"> EC: [EMAIL PROTECTED] << WorkerThread11 updated: <com.qoslabs.tm.wo.eo.EOTopic pk:"1432"> EC: [EMAIL PROTECTED] << WorkerThread11 updated: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"158"> EC: [EMAIL PROTECTED] << WorkerThread11 updated: <com.qoslabs.tm.wo.eo.EOTopic pk:"17"> EC: [EMAIL PROTECTED] << WorkerThread11 deleted: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"1431"> EC: [EMAIL PROTECTED] << WorkerThread11 deleted: <com.qoslabs.tm.wo.eo.EOLocator pk:"1345"> EC: [EMAIL PROTECTED] ****** OPS troubles in: [EMAIL PROTECTED] - [EMAIL PROTECTED] - WorkerThread11 --- rootObjectStore: [EMAIL PROTECTED] - true
WorkerThread11 - [EMAIL PROTECTED] registered: 118
<< WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"1497"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"1402"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"1498"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"1403"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"1404"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOLocator pk:"1405"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOBaseName pk:"1499"> EC: [EMAIL PROTECTED] << WorkerThread11 inserted: <com.qoslabs.tm.wo.eo.EOTopic pk:"1500"> EC: [EMAIL PROTECTED] << WorkerThread11 updated: <com.qoslabs.tm.wo.eo.EOTopic pk:"13"> EC: [EMAIL PROTECTED] << WorkerThread11 updated: <com.qoslabs.tm.wo.eo.EOTopic pk:"17"> EC: [EMAIL PROTECTED] << WorkerThread11 updated: <com.qoslabs.tm.wo.eo.EOOccurrence pk:"195"> EC: [EMAIL PROTECTED]

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net

This email sent to [EMAIL PROTECTED]

--

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 protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to