Hi and thanks for your detailed answer,

just adding my 2ct :

we've got the same errors in the same environment : deep nested editing 
context's. (WO 5.3 + Wonder, don't know about 5.4 though)
At that time, the only workarounds we found were : 
- when possible, reducing the level of nested (basically only 1 level of nested 
ec)
- or as someone mentioned, using parentEC.setRetainsRegisteredObjects(true)

Cheers,

Alex

Le 3 nov. 2010 à 11:39, Sobanski, Jedrzej a écrit :

> Hi,
> 
> After spending quite some time on similar problem I would like to share what 
> solved the issue in my case.
> 
> ENVIRONMENT
> We had a scenario that ALWAYS caused this to happen. There was too much code 
> to make it a separate app, but basically it involved inserting, updating and 
> deleting objects, with nesting editing contexts up to 2 levels deep several 
> times. Whenever we saved changes in nested editing context, it was no longer 
> used and simply abandoned (so never saved changes twice on the same EC). 
> Application never crashed on saving changes in nested editing context, but 
> did always crash at the end of the test scenario when saving changes in the 
> root editing context. I tried to reduce our test scenario, but removing some 
> of test steps did only cause the issue to happen more rarely rather than 
> always. Test involved just bunch of operations and none of them appeared to 
> be crucial or unneeded. Root EC was locked in Session#awake() and unlocked in 
> Session#sleep(). It didn't matter whether we were using EODatabaseContext or 
> ERXDatabaseContext. Code (probably) didn't violate any of EOF commandments or 
> at least I wasn't able to find such (or I fixed them where I'd found such 
> violations).
> 
> The only EO related properties set are
> er.extensions.ERXEnterpriseObject.updateInverseRelationships=false
> er.extensions.ERXEnterpriseObject.applyRestrictingQualifierOnInsert=true
> I'm not sure if those had any importance for this issue.
> 
> EXCEPTIONS
> Problem was revealing itself in two ways:
> a) java.lang.IllegalStateException: rowDiffsForAttributes: snapshot in 
> com.webobjects.eoaccess.EODatabaseOperation {_dbSnapshot = {}; ....
> b) ObjectNotAvailableException: No ... found with globalID: ...
> 
> In both cases cause was the same - _dbSnapshot was null at some point, while 
> it shouldn't. Sometimes, depending on the order of operations happening when 
> saving changes, EOEditingContext did change that _dbSnapshot value from null 
> to an empty array and that's why we were getting sometimes two different 
> exceptions for the same scenario which implies that both errors have common 
> cause.
> 
> WHAT SOLVED IT IN MY CASE
> I spent quite some time on it trying to find the root cause, though none of 
> advices I was able to find, did help. Eventually disposing each nested 
> editing context after saving its changes (in my case they were not used 
> anymore) solved this issue.
> 
> --
> Regards,
> Jedrzej Sobanski
> 
> On Apr 1, 2010, at 7:03 PM, Chuck Hill wrote:
> 
> 
> On Apr 1, 2010, at 5:24 AM, Marc Guenther wrote:
> 
> Hi all,
> 
> I spent quite some time now on this problem. I found a way to
> reproduce it, still I have no idea what to do about it.
> 
> Can you share what that is?
> 
> 
> What I don't understand, if this is a known bug, and people are
> actually experiencing it, why have I never heard about it, and why
> is there no fix? This seems to be a major problem.
> 
> I also found, that this also happens on WO5.2.3, which makes it even
> worse. I wonder why it has never bitten us before. Or maybe it has,
> but now some customer discovered some peculiar workflow which
> triggers this more often than usual.
> 
> 
> I don't recall seeing anything like this for a long time.  I suspect
> that your customer theory may be true.
> 
> 
> Chuck
> 
> 
> 
> James and Johann, (or everyone who has this problem), which version
> of WO are you using? Are we all talking about 5.4.3 here?
> 
> On 25.03.2010, at 21:38, Mike Schrag wrote:
> I don't have a patch you can easily apply. The workaround on your
> side is to not let the EO in the parent EC garbage collect
> (basically, keep a reference to the parent EO around for any EO
> that you fault into child EC).
> 
> Would a parentEC.setRetainsRegisteredObjects(true) help?
> 
> Also there is a EODatabaseContext.disableSnapshotRefCounting()
> method, which completely disabled the refcounting mechanism. But I
> guess that would run out of memory very fast?
> 
> There's not an easy recovery from this -- you have to toss your EC
> stack ... or .. maybe you could refetch the snapshot underneath it,
> but i think you're probably left with a __retainCount of -1 at that
> point, so probably even that won't help you.
> 
> No, I don't want this to occur at all :)
> 
> Have a happy easter,
> Marc
> 
> I think this could be fixed pretty easily  in wonder by overriding
> ERXGenericRecord.__setRetainCount .. When count is set >0, call
> back to your EC and retain the object in a dict and when it drops
> to 0, release that ref.
> 
> On Mar 25, 2010, at 4:25 PM, Brook, James wrote:
> 
> Mike,
> 
> That sounds all too familiar to me. We are experiencing errors
> just like that. We have a feature that creates nested editing
> contexts several levels deep and fetches EOs all the way down to
> the bottom. Do you know of a workaround, patch or some way to
> recover from the bug you mention? I seem to remember a similar bug
> years ago in the days when EOF kept strong references. We are
> using Wonder.
> 
> Sorry for selfishly jumping in. Disappearing snapshots are causing
> us lots of pain because whole instances of our application become
> useless.
> 
> --
> James
> ________________________________________
> From: webobjects-dev-bounces
> [email protected]<mailto:[email protected]>
>  [[email protected]
> ] On Behalf Of Mike Schrag [[email protected]]
> Sent: 25 March 2010 20:20
> To: Marc Guenther
> Cc: [email protected]<mailto:[email protected]>
> Subject: Re: Snapshots mysteriously vanishing?
> 
> by any chance was this an EO in a parent editing context that
> also existed in a child editingcontext?
> 
> I don't think so, but I'm not sure. That particular EO could have
> been in all differents ECs at the time, as it's entity is used
> all over the place.
> 
> Do you have anything specific in mind?
> yeah, there's a bug with refcounting of eo's in child ec's if the
> parent ec copy of the EO gets garbage collected ... the result of
> this bug is disappearing snapshots. this specifically applies to
> eo's fetched into a child that were already fetched into the
> parent, though, not to peer ec's.
> 
> ms
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      
> ([email protected]<mailto:[email protected]>)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/jbrook%40upcbroadband.com
> 
> This email sent to [email protected]<mailto:[email protected]>
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      
> ([email protected]<mailto:[email protected]>)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/yoda%40schli.ch
> 
> This email sent to [email protected]<mailto:[email protected]>
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      
> ([email protected]<mailto:[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]<mailto:[email protected]>
> 
> --
> 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/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/jsobanski%40upcbroadband.com
> 
> This email sent to [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/alexis.tual%40gmail.com
> 
> This email sent to [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/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to