• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Cannot obtain globalId for an object failure
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Cannot obtain globalId for an object failure


  • Subject: Cannot obtain globalId for an object failure
  • From: Giles Palmer <email@hidden>
  • Date: Fri, 18 Mar 2011 15:28:57 +0000

Hi

I have just had an exception thrown on some relatively recent code, that has worked fine until now..

java.lang.IllegalStateException:  Cannot obtain globalId for an object which is registered in its editingContext,
object: <indoc.app.entities.Container pk:"496">,
databaseContext: er.extensions.eof.ERXDatabaseContext@ee260b,
object's editingContext: er.extensions.eof.ERXEC@1fe6055,
databaseContext's active editingContext: null

Context:

This is part of a background notification system which works roughly like:

1) NSNotificationCenter triggers a callback that...

2) Creates a new Runnable and globalIds of objects are passed into this runnable from their original editing context.  A ThreadPoolExecutor the executes the thread.

3) The new thread creates a new editing context that uses an ERXRoundRobinCollection to grab an EOObjectStoreCoordinator.  This EOObjectStoreCoordinator is only used in the notification part of the application, and the ERXRoundRobinCollection contains just a couple of instances of a EOObjectStoreCoordinator at a time.

The ec is created with:
ERXEC notificationtEC = (ERXEC) ERXEC.newEditingContext(objectStoreCollection.nextObjectStoreCoordinator());

and the EOObjectStoreCoordinators with:
ERXObjectStoreCoordinator osc = new ERXObjectStoreCoordinator(true);


4) I then use the newly created notificationtEC to convert the globalIds back to EOs like.. eo = ERXEOControlUtilities.convertGIDtoEO(notificationtEC, gid);

5) I then use the same notificationtEC to fetch various objects etc to build the notifications and send out an email.

The full stack trace is below.

I was under the impression that having a new database stack should be a pretty safe way to do such a task in a separate thread. Do you have any idea what I am doing wrong?

I do not quite understand the meaning of the above java.lang.IllegalStateException   Any ideas much appreciated.

Thanks

Giles

Mar 18 12:32:10 OLWAInDoc[2001] pool-3-thread-1 ERROR indoc.app.event.IDEventObserverCoordinator$ChannelRunnable  - Error in ChannelRunnable.run() Cannot obtain globalId for an object which is registered in its editingContext, object: <indoc.app.entities.Container pk:"496">, databaseContext: er.extensions.eof.ERXDatabaseContext@ee260b, object's editingContext: er.extensions.eof.ERXEC@1fe6055, databaseContext's active editingContext: null
java.lang.IllegalStateException: Cannot obtain globalId for an object which is registered in its editingContext, object: <indoc.app.entities.Container pk:"496">, databaseContext: er.extensions.eof.ERXDatabaseContext@ee260b, object's editingContext: er.extensions.eof.ERXEC@1fe6055, databaseContext's active editingContext: null
	at com.webobjects.eoaccess.EODatabaseContext._globalIDForObject(EODatabaseContext.java:4660)
	at com.webobjects.eoaccess.EODatabaseContext.valuesForKeys(EODatabaseContext.java:6509)
	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:355)
	at com.webobjects.eoaccess.EOQualifierSQLGeneration$Support._schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:179)
	at com.webobjects.eoaccess.EOQualifierSQLGeneration$_AndQualifierSupport.schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:530)
	at com.webobjects.eoaccess.EOQualifierSQLGeneration$Support._schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:179)
	at com.webobjects.eoaccess.EOQualifierSQLGeneration$_AndQualifierSupport.schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:530)
	at com.webobjects.eoaccess.EOQualifierSQLGeneration$Support._schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:179)
	at com.webobjects.eoaccess.EOQualifierSQLGeneration$_OrQualifierSupport.schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:567)
	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:66)
	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:1206)
	at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4444)
	at indoc.app.entities._IDEventRegistration.fetchIDEventRegistrations(_IDEventRegistration.java:351)
	at indoc.app.event.IDEventObserverCoordinator$ChannelRunnable.processEventRegistrations(IDEventObserverCoordinator.java:238)
	at indoc.app.event.IDEventObserverCoordinator$ChannelRunnable.run(IDEventObserverCoordinator.java:143)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

 _______________________________________________
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

  • Follow-Ups:
    • Re: Cannot obtain globalId for an object failure
      • From: Chuck Hill <email@hidden>
  • Prev by Date: Re: er.coolcomponents.CCAjaxTabPanel
  • Next by Date: Re: Memory control
  • Previous by thread: Re: er.coolcomponents.CCAjaxTabPanel
  • Next by thread: Re: Cannot obtain globalId for an object failure
  • Index(es):
    • Date
    • Thread