As Chuck mentioned, EOs are re-faulted based upon the fetchTimestampLag.  But I 
believe that snapshots are always weak references and therefore subject to 
being garbage collected at any time.

Presumably setRetainsRegisteredObjects(true) changes this to a regular 
reference.

Karl

On 2012-09-06, at 12:46 AM, John Pollard <j...@pollardweb.com> wrote:

> This problem goes away if I call setRetainsRegisteredObjects(true) on the EC 
> in question.
> So presumably garbage collection was somehow resulting in the relationships 
> turning into faults.
> Perhaps I should have said that the call manifests itself between separate 
> requests coming in and that I am looking to cache EOs beyond a single request.
> I know that retaining all registered objects in the EC can lead to 
> memory-hungry apps, so I'll monitor to see if that is a problem, but at lease 
> I finally know where the root of the problem lies.
> 
> On 5 Sep 2012, at 19:37, Chuck Hill wrote:
> 
>> Something is not what you think it is.
>> 
>> This trace:
>> 
>>>>>>  at mp.eo.StockItem.turnIntoFault(StockItem.java:1714)
>>>>>>  at 
>>>>>> com.webobjects.eocontrol.EOFaultHandler.makeObjectIntoFault(EOFaultHandler.java:161)
>>>>>>  at 
>>>>>> com.webobjects.eoaccess.EODatabaseContext._turnToFaultGidEditingContextIsComplete(EODatabaseContext.java:3363)
>>>>>>  at 
>>>>>> com.webobjects.eoaccess.EODatabaseContext.faultForGlobalID(EODatabaseContext.java:3397)
>>>>>>  at 
>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.faultForGlobalID(EOObjectStoreCoordinator.java:537)
>>>>>>  at 
>>>>>> com.webobjects.eocontrol.EOEditingContext.faultForGlobalID(EOEditingContext.java:3608)
>> 
>> Means that EOEditingContext.faultForGlobalID did NOT find an EO for that 
>> global ID in that editing context. A few possibilities:
>> 
>> - this StockItem is not one of the ones you have pre-loaded
>> - you pre-loaded them in a different editing context
>> - something told the EC to forgetObject() after you pre-loaded them
>> 
>> 
>> Chuck
>> 
>> 
>> 
>> On 2012-09-05, at 10:30 AM, John Pollard wrote:
>> 
>>> There is a to-one from WebPage to StockItem and no other direct 
>>> relationship to StockItem.
>>> 
>>> On 5 Sep 2012, at 18:20, Chuck Hill wrote:
>>> 
>>>> Is there a to-one from WebPage to StockItem?  Or is it a to-many?
>>>> 
>>>> Chuck
>>>> 
>>>> 
>>>> On 2012-09-05, at 10:01 AM, John Pollard wrote:
>>>> 
>>>>> Hi Chuck,
>>>>> The count is actually of the WebPage.childWebPages() array not on 
>>>>> stockItems at all which is why I was puzzled that a 
>>>>> StockItem.turnIntoFault() was being triggered.
>>>>> I confirmed that they are all in the same EC by logging the hashCode() of 
>>>>> the EC (I assume that is valid)
>>>>> Thanks for your reply
>>>>> John
>>>>> 
>>>>> On 5 Sep 2012, at 17:48, Chuck Hill wrote:
>>>>> 
>>>>>> Hi John,
>>>>>> 
>>>>>> Are StockItems "carefully pre-loaded" into the same EC as WebPages?  If 
>>>>>> not, you are likely running into the EC's fetch timestamp lag.  It looks 
>>>>>> like you are doing a count of StockItem at at 
>>>>>> mp.eo.WebPage.getDescendantWebPages(WebPage.java:1410) and this is 
>>>>>> causing the to-many to be faulted.
>>>>>> 
>>>>>> 
>>>>>> Chuck
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On 2012-09-05, at 9:21 AM, John Pollard wrote:
>>>>>> 
>>>>>>> Hi WO list,
>>>>>>> 
>>>>>>> The firing of a fault on EOs of one type is causing EOs of another type 
>>>>>>> be turned into faults... is that expected?
>>>>>>> 
>>>>>>> I have a WebPage eo with a to-many relationship called childWebPages 
>>>>>>> (returns an array of WebPage objects)
>>>>>>> 
>>>>>>> When I access this array recursively in getDescendantWebPages()...see 
>>>>>>> stack trace below, a totally different class of object is turned into a 
>>>>>>> fault StockItem, see top line of stack trace.
>>>>>>> 
>>>>>>> I don't want EOF to turn my carefully pre-loaded StockItems back into 
>>>>>>> faults!
>>>>>>> 
>>>>>>> The two EOs are related via a join table.
>>>>>>> 
>>>>>>> This is causing performance headaches.
>>>>>>> 
>>>>>>>         at mp.eo.StockItem.turnIntoFault(StockItem.java:1714)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOFaultHandler.makeObjectIntoFault(EOFaultHandler.java:161)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext._turnToFaultGidEditingContextIsComplete(EODatabaseContext.java:3363)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.faultForGlobalID(EODatabaseContext.java:3397)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.faultForGlobalID(EOObjectStoreCoordinator.java:537)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.faultForGlobalID(EOEditingContext.java:3608)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext._objectFaultWithSnapshotRelationshipEditingContext(EODatabaseContext.java:2361)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext._fireDeferredFaultWithSourceObject(EODatabaseContext.java:2401)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EOAccessDeferredFaultHandler.createFaultForDeferredFault(EOAccessDeferredFaultHandler.java:49)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOCustomObject.willReadRelationship(EOCustomObject.java:1279)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol._EOMutableKnownKeyDictionary$Initializer$_LazyGenericRecordBinding.valueInObject(_EOMutableKnownKeyDictionary.java:614)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOCustomObject.storedValueForKey(EOCustomObject.java:1634)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.databaseOperationForObject(EODatabaseContext.java:4810)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.valuesForKeys(EODatabaseContext.java:6531)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.valuesForKeys(EOObjectStoreCoordinator.java:321)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EOQualifierSQLGeneration$_KeyValueQualifierSupport.schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:439)
>>>>>>>         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 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:483)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4053)
>>>>>>>         at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.objectsForSourceGlobalID(EODatabaseContext.java:4084)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsForSourceGlobalID(EOObjectStoreCoordinator.java:629)
>>>>>>>         at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsForSourceGlobalID(EOEditingContext.java:3907)
>>>>>>>         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 mp.eo.WebPage.getDescendantWebPages(WebPage.java:1410)
>>>>>>>         at mp.eo.WebPage.getDescendantWebPages(WebPage.java:1393)
>>>>>>>         at mp.eo.WebPage.getDescendantWebPages(WebPage.java:1414)
>>>>>>>         at mp.eo.WebPage.getDescendantWebPages(WebPage.java:1393)
>>>>>>>         at mp.eo.WebPage.getDescendantWebPages(WebPage.java:1414)
>>>>>>>         at mp.eo.WebPage.getDescendantWebPages(WebPage.java:1393)
>>>>>>>         at mp.eo.WebPage.getDescendantWebPages(WebPage.java:1414)
>>>>>>>         at mp.eo.WebSite.getAllWebPages(WebSite.java:842)
>>>>>>>         at mpMall.DirectAction.getWebPageById(DirectAction.java:1982)
>>>>>>>         at mpMall.DirectAction.viewPageAction(DirectAction.java:537)
>>>>>>> 
>>>>>>> Many thanks,
>>>>>>> John
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>>>>>> 
>>>>>>> This email sent to ch...@global-village.net
>>>>>> 
>>>>>> -- 
>>>>>> 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/gvc/practical_webobjects
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Do not post admin requests to the list. They will be ignored.
>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>> https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>>>> 
>>>>> This email sent to ch...@global-village.net
>>>> 
>>>> -- 
>>>> 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/gvc/practical_webobjects
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>> 
>>> This email sent to ch...@global-village.net
>> 
>> -- 
>> 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/gvc/practical_webobjects
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/kgretton%40mac.com
> 
> This email sent to kgret...@mac.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to