• 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
Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator


  • Subject: Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator
  • From: Lachlan Deck <email@hidden>
  • Date: Sat, 18 Oct 2008 10:22:33 +1100

On 17/10/2008, at 7:03 PM, Stefan Klein wrote:

That's my problem, theirs no other exception in the log files. The exception seems to occurs every leap year, so i can't reproduce it.
Is there a way to catch the exception and get rid of the corrupt object and reload it?

Well the question is: is it corrupt data or is it just that instance that's going weird over time? If the former - then that's more easily fixed. If the latter this is harder as you're playing a guessing game. Is it on a scheduled restart?


We put in some code recently to keep an eye on new worker threads being created - as for us it's an early warning sign that things are tending towards an unstable state ... and it's time to refuse new sessions and start up another instance.

So in your app constructor, for example:
NSNotificationCenter.defaultCenter().addObserver( this,
new NSSelector( "willDispatchRequest", ERXConstant.NotificationClassArray ),
WOApplication.ApplicationWillDispatchRequestNotification,
null );


Note: ERXConstant.NotificationClassArray == new Class[] { NSNotification.class }

public void willDispatchRequest( NSNotification notification )
{
if ( notification != null && notification.object() instanceof WORequest )
{
WORequest request = ( WORequest )notification.object();
try
{
WODefaultAdaptor da = ( WODefaultAdaptor )adaptors().objectAtIndex( 0 );
String das = da.toString();
int n = das.indexOf( "nmbOfWorkerThreads=" ) + "nmbOfWorkerThreads=".length();
String nwt = das.substring( n, das.indexOf( " ", n ) );
this._currentWorkerThreadCount = Integer.valueOf( nwt );
n = das.indexOf( "nmbOfActiveThreads=" ) + "nmbOfActiveThreads=".length();
String awt = das.substring( n, das.indexOf( " ", n ) );
this._currentActiveThreadCount = Integer.valueOf( awt );
if ( this._currentActiveThreadCount > ERXProperties.intForKeyWithDefault( "ish.activeWorkerThreadWarning", 8 ) )
{
StringBuilder b = new StringBuilder( "Exceeded active worker thread warning level:\n" );
b.append( notification.object().getClass().getName() + " => max = " + nwt + ", active = " + awt + "\n" );
b.append( "REQUEST: " + request.uri() );
LOG.error( b.toString(), new Exception() );
}
}
catch ( Exception e )
{
LOG.error( "Exception looking for active worker threads", e );
}
}
}


But this might not be your problem.

Lachlan Deck schrieb:
On 17/10/2008, at 6:51 AM, Stefan Klein wrote:

i got the following exception:

com.webobjects.eoaccess.EOObjectNotAvailableException: prepareForSaveWithCoordinator: Cannot save the object with globalID _EOIntegralKeyGlobalID[Benutzer (java.lang.Long)4559]. The row referenced by this globalID was missing from the database at the time a fetch was attempted. Either it was removed from the database after this application got a pointer to it, or there is a referential integrity problem with your database. To be notified when fetches fail, implement a delegate on EODatabaseContext that responds to databaseContextFailedToFetchObject().
at com .webobjects .eoaccess .EODatabaseContext .prepareForSaveWithCoordinator(EODatabaseContext.java:5831)
at com .webobjects .eocontrol .EOObjectStoreCoordinator .saveChangesInEditingContext(EOObjectStoreCoordinator.java:409)
at com .webobjects .eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3187)


But I know that the object for this id exist, cause that user logged in many times before in that instance. The instance was running for several days without any problem.
After the exception occurs the first time, the user can't log in again in that instance. A login to the second instance did work.
After stopping and starting the first instance all works fine.


Does any one have a suggestion?

Check the logs. Probably had some exceptions that went unnoticed.

with regards,
--

Lachlan Deck




_______________________________________________
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

with regards, --

Lachlan Deck



_______________________________________________
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: EOObjectNotAvailableException: prepareForSaveWithCoordinator
      • From: Stefan Klein <email@hidden>
References: 
 >EOObjectNotAvailableException: prepareForSaveWithCoordinator (From: Stefan Klein <email@hidden>)
 >Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator (From: Lachlan Deck <email@hidden>)
 >Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator (From: Stefan Klein <email@hidden>)

  • Prev by Date: Re: WO 5.4 parser issues - help please
  • Next by Date: Re: Migrations and OpenBase
  • Previous by thread: Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator
  • Next by thread: Re: EOObjectNotAvailableException: prepareForSaveWithCoordinator
  • Index(es):
    • Date
    • Thread