• 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: EOModels occasionally loading too slowly?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EOModels occasionally loading too slowly?


  • Subject: Re: EOModels occasionally loading too slowly?
  • From: Mike Schrag <email@hidden>
  • Date: Tue, 3 Nov 2009 20:19:38 -0500

So I never see this because I use migrations on every app, so the models are touched early all the time ... But if i turn off migrations, it does look like it's not triggered until the first EOF request.  The problem is that if you don't have a delegate on EOModelGroup, the creation of the model group happens inside of a:

synchronized (EOModel._EOGlobalModelLock) {..}

However, if you have a delegate, which wonder does, there is no lock.  I think ERXExtensions.defaultModelGroup should have a volatile defaultModelGroup and put a synchronized double-null-check in there.

I'm going to put that in unless someone can think of a reason why it shouldn't be there.

ms

On Nov 3, 2009, at 8:01 PM, Paul Hoadley wrote:

On 04/11/2009, at 11:19 AM, Paul Hoadley wrote:

Here's a stack trace from ERXModelGroup.loadModelsFromLoadedBundles():

java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1230)
at er.extensions.eof.ERXModelGroup.loadModelsFromLoadedBundles(ERXModelGroup.java:125)
at er.extensions.ERXExtensions.defaultModelGroup(ERXExtensions.java:135)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:122)
at com.webobjects.foundation._NSDelegate._perform(_NSDelegate.java:223)
at com.webobjects.foundation._NSDelegate.perform(_NSDelegate.java:155)
at com.webobjects.eoaccess.EOModelGroup.defaultGroup(EOModelGroup.java:328)
at net.logicsquad.pbf.Application.didFinishLaunching(Application.java:29)
at er.extensions.appserver.ERXApplication.didFinishLaunching(ERXApplication.java:1144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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:546)
at com.webobjects.appserver.WOApplication.run(WOApplication.java:1239)
at er.extensions.appserver.ERXApplication.run(ERXApplication.java:1225)
at com.webobjects.appserver.WOApplication.main(WOApplication.java:548)
at er.extensions.appserver.ERXApplication.main(ERXApplication.java:716)
at net.logicsquad.pbf.Application.main(Application.java:13)

Hang on, that may be a red herring.  I was printing out EOModelGroup.defaultGroup() in Application.didFinishLaunching() as one of the first things I tried to debug this.  Removing that, it looks more sensible:

java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1230)
at er.extensions.eof.ERXModelGroup.loadModelsFromLoadedBundles(ERXModelGroup.java:125)
at er.extensions.ERXExtensions.defaultModelGroup(ERXExtensions.java:135)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:122)
at com.webobjects.foundation._NSDelegate._perform(_NSDelegate.java:223)
at com.webobjects.foundation._NSDelegate.perform(_NSDelegate.java:155)
at com.webobjects.eoaccess.EOModelGroup.defaultGroup(EOModelGroup.java:328)
at net.logicsquad.pbf.components.pages.LogIn.allNotices(LogIn.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.webobjects.foundation.NSKeyValueCoding$ValueAccessor$1.methodValue(NSKeyValueCoding.java:636)
at com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKeyValueCoding.java:1134)
at com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey(NSKeyValueCoding.java:1324)
at com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1736)
at com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCoding.java:447)
at com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.valueForKeyPath(NSKeyValueCodingAdditions.java:216)
at com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1804)
at net.logicsquad.webobjects.components.LSComponent.valueForKeyPath(LSComponent.java:347)
at com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOKeyValueAssociation.java:50)
at com.webobjects.appserver.WOAssociation.booleanValueInComponent(WOAssociation.java:276)
at er.extensions.components.conditionals.ERXWOConditional.conditionInComponent(ERXWOConditional.java:47)
at er.extensions.components.conditionals.ERXWOConditional.meetsConditionInComponent(ERXWOConditional.java:52)
at er.extensions.components.conditionals.ERXWOConditional.appendToResponse(ERXWOConditional.java:120)
at com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse(WODynamicGroup.java:126)
at com.webobjects.appserver._private.WODynamicGroup.appendToResponse(WODynamicGroup.java:136)
at com.webobjects.appserver._private.WOComponentContent.appendToResponse(WOComponentContent.java:51)
at com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse(WODynamicGroup.java:126)
at com.webobjects.appserver._private.WODynamicGroup.appendToResponse(WODynamicGroup.java:136)
at com.webobjects.appserver.WOComponent.appendToResponse(WOComponent.java:1122)
at er.extensions.components.ERXComponent.appendToResponse(ERXComponent.java:107)
at net.logicsquad.webobjects.components.LSComponent.appendToResponse(LSComponent.java:465)
at com.webobjects.appserver._private.WOComponentReference.appendToResponse(WOComponentReference.java:135)
at com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse(WODynamicGroup.java:126)
at com.webobjects.appserver._private.WODynamicGroup.appendToResponse(WODynamicGroup.java:136)
at com.webobjects.appserver.WOComponent.appendToResponse(WOComponent.java:1122)
at er.extensions.components.ERXComponent.appendToResponse(ERXComponent.java:107)
at net.logicsquad.webobjects.components.LSComponent.appendToResponse(LSComponent.java:465)
at com.webobjects.appserver._private.WOComponentReference.appendToResponse(WOComponentReference.java:135)
at com.webobjects.appserver._private.WODynamicGroup.appendChildrenToResponse(WODynamicGroup.java:126)
at com.webobjects.appserver._private.WODynamicGroup.appendToResponse(WODynamicGroup.java:136)
at com.webobjects.appserver.WOComponent.appendToResponse(WOComponent.java:1122)
at er.extensions.components.ERXComponent.appendToResponse(ERXComponent.java:107)
at net.logicsquad.webobjects.components.LSComponent.appendToResponse(LSComponent.java:465)
at com.webobjects.appserver.WOComponent._appendPageToResponse(WOComponent.java:1574)
at com.webobjects.appserver.WOComponent._generateResponseInContext(WOComponent.java:1543)
at com.webobjects.appserver.WOComponent.generateResponse(WOComponent.java:1538)
at com.webobjects.appserver._private.WOActionRequestHandler._handleRequest(WOActionRequestHandler.java:278)
at com.webobjects.appserver._private.WOActionRequestHandler.handleRequest(WOActionRequestHandler.java:158)
at er.extensions.appserver.ERXDirectActionRequestHandler.handleRequest(ERXDirectActionRequestHandler.java:124)
at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
at er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:1904)
at er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:1869)
at net.logicsquad.webobjects.app.LSApplication.dispatchRequest(LSApplication.java:381)
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:637)

_And_, all the models are now adjusted before LogIn.allNotices() is called in the default page.  I've presumably done something in the meantime to fix it.  I'll start working backwards and see if I can find it...


-- 
Paul.

w  http://logicsquad.net/
h  http://paul.hoadley.name/

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: EOModels occasionally loading too slowly?
      • From: Paul Hoadley <email@hidden>
    • Re: EOModels occasionally loading too slowly?
      • From: Paul Hoadley <email@hidden>
    • Re: EOModels occasionally loading too slowly?
      • From: Mike Schrag <email@hidden>
References: 
 >EOModels occasionally loading too slowly? (From: Paul Hoadley <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Gennady Kushnir <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Paul Hoadley <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Chuck Hill <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Paul Hoadley <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Mike Schrag <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Paul Hoadley <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Chuck Hill <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Paul Hoadley <email@hidden>)
 >Re: EOModels occasionally loading too slowly? (From: Paul Hoadley <email@hidden>)

  • Prev by Date: Re: EOModels occasionally loading too slowly?
  • Next by Date: Re: EOModels occasionally loading too slowly?
  • Previous by thread: Re: EOModels occasionally loading too slowly?
  • Next by thread: Re: EOModels occasionally loading too slowly?
  • Index(es):
    • Date
    • Thread