i my own apps, i've never had this happen (at least not that i know of) ... so 
while i KNOW of such a bug, it doesn't mean it's easy to trigger. it requires a 
specific confluence of events to actually happen (at least the variant that i'm 
thinking of).

if it's the problem i'm thinking of, parentEc.setRetainsRegisteredObjects would 
probably fix it (though I don't know if you can call that after the fact or if 
that only kicks in for objects AFTER that point). if you have a reproducible 
case of it, this would be an interesting test to run. you almost definitely 
will run out of memory if you turn off reference counting, though.

my guess is your "some customer discovered some peculiar workflow" idea is most 
likely to be the case.

also, my theory about fixing it in ERXGR __setRetainCount can't work because 
that method is final (gd final methods). i think this is probably only fixable 
with code injection. anjo pointed out that we DO make our own classloader in 
wonder startup, so we could ship gluonj in wonder and fix this.

ms

On Apr 1, 2010, at 8: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.
> 
> 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.
> 
> 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: [email protected] 
>>> [[email protected]] On Behalf 
>>> Of Mike Schrag [[email protected]]
>>> Sent: 25 March 2010 20:20
>>> To: Marc Guenther
>>> Cc: [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])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/jbrook%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/yoda%40schli.ch
>> 
>> 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/mschrag%40pobox.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