Re: EOCustomObject valueForKey avoiding infinite recursion
Re: EOCustomObject valueForKey avoiding infinite recursion
- Subject: Re: EOCustomObject valueForKey avoiding infinite recursion
- From: John Pollard <email@hidden>
- Date: Thu, 11 Sep 2014 20:20:34 +0100
Ray,
Thanks for the thought. I do want to log the stack trace but as I can't predict when this issue might happen and it is rare. I want to narrow down to the close circumstances first, or else I will be logging thousands of these stack traces in normal operation when there isn't a problem. What I need to do is detect when a given attribute is changed from non-null to null (which should never happen), so I need to check what it was before it is being set i.e. just check it was non-null before being set to null.
John
On 11 Sep 2014, at 18:05, Ray Kiddy <email@hidden> wrote:
> On Thu, 11 Sep 2014 14:55:16 +0100
> John Pollard <email@hidden> wrote:
>
>> Hi List,
>>
>> In some debugging within takeValueForKey() I want to find out if the
>> key already has a value set. If I call valueForKey() or
>> storedValueForKey() and the value isn't already set I get infinite
>> recursion as it triggers a fault and tries to load with
>> takeValueForKey() and so on.
>>
>> I am trying to debug where a value is being set to null, but
>> apparently not going via validateXXX() or setXXX() methods, so I want
>> to trap the case where the takeValueForKey() is passed null when the
>> key value was previously non-null and log a stack trace.
>>
>> Thanks
>> John
>
> One way to prevent the recursion you are talking about is to actually
> look at the stack trace inside the method. Call the static method in
> Wonder, ERXUtilities.stackTrace(), and look at what is in it. If you
> find the method you are in, you have already been called.
>
> Without Wonder, you can instantiate a Throwable and get the stack trace
> from that.
>
> Doing this is a smell. You do not want to leave this in your code.
>
> But since you are putting this in to find something, having this check
> there temporarily can be useful.
>
> - ray
>
>
>
> _______________________________________________
> 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
_______________________________________________
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