[Seaside-dev] Issue with #removeDecoration:

Esteban Lorenzano estebanlm at gmail.com
Tue Jun 3 11:13:12 UTC 2008


Sorry,
Is not the same ask for #isDecoration instead isKindOf: WADecoration?  
I had this problem last week and fixed that way :)

Esteban

El 03/06/2008, a las 7:54a.m., John Thornborrow escribió:

> Thanks Lukas,
>
> We have implemented a hack in our application which stops the error,  
> but we are yet to confirm if it causes memory or other issues as  
> yet, but so far we've not noticed any problems. Though my gut  
> feeling tells me it will be likely to cause some kind of problem  
> when under heavy/extended use.
>
> WAComponent>>removeDecoration: aDecoration
> 	| dec |
> 	dec := self decoration.
> 	dec = aDecoration ifTrue:
> 		[self decoration: dec owner.
> 		^ self].
>
> 	"#and: block added to circumvent MNU>>owner problem"
> 	[dec notNil and: [dec isKindOf: WADecoration]] whileTrue:
> 		[dec owner = aDecoration
> 			ifTrue: [dec owner: aDecoration owner.  ^ self]
> 			ifFalse: [dec := dec owner]]
>
> Many thanks for your time and advice on this.
> John
>
> Lukas Renggli wrote:
>> Hi John,
>>> I noticed Seaside2.8a1-lr.559 has the comment "fixed the  
>>> backtracking bug
>>> (only an ugly solution)" and was wondering if this is related to  
>>> the bug
>>> below, and also I was wondering what the work around you mentioned  
>>> is?
>> we added (a slightly simplified version) of your test case to the
>> functional test-suite of Seaside (WADecorationTask,  
>> WADecorationTest).
>> The commit comment should have stated that I fixed the test, not the
>> actual cause of the problem.
>> I tried to explain the problem in my blog (second paragraph):
>> 	http://www.lukas-renggli.ch/blog/seaside-sprint-may-08
>> Older versions of Seaside did not show that problem, because as soon
>> as you registered something for backtracking it was backtracked
>> forever. That was one of the reasons why Seaside was so memory hungry
>> in versions prior to 2.8. Backtracking only visible components leads
>> to strange side effects in rare cases though.
>> There are essentially 3 possibilities solving your problem:
>> 1. We discussed with Avi and he argues that it is good practice to
>> create a new component on every call. Instantiating new components
>> might not be desired in your case, but it is certainly what is done  
>> in
>> most situations. In fact I checked all my Seaside code-base and  
>> didn't
>> find a single place where this "rule" was violated.
>> 2. Make sure that state-snapshots are also takes from invisible
>> components (that's how I fixed the test-case).
>> WADecorationTask>>updateStates: aSnapshot
>> 	super updateStates: aSnapshot.
>> 	component1 visiblePresentersDo: [ :each | each updateStates:  
>> aSnapshot ].
>> 	component2 visiblePresentersDo: [ :each | each updateStates:  
>> aSnapshot ]
>> 3. Or even simpler, just register the two components as children of  
>> the task:
>> WADecorationTask>>children
>> 	^ Array with: component1 with: component2
>> My blog entry sounds a bit too optimistic. The issue is very likely
>> not easily fixable in a generic manner and without vasting vast
>> amounts of memory. Unless somebody from the community has a flash of
>> genius we probably won't be able to change anything there.
>> Cheers,
>> Lukas
>
> -- 
> John Thornborrow
> http://www.pinesoft.co.uk
>
>
> ******************************************************************************************************************************************
> This email is from Pinesoft Limited. Its contents are confidential  
> to the intended recipient(s) at the email address(es) to which it  
> has been addressed. It may not be disclosed to or used by anyone  
> other than the addressee(s), nor may it be copied in anyway. If  
> received in error, please contact the sender, then delete it from  
> your system. Although this email and attachments are believed to be  
> free of virus, or any other defect which might affect any computer  
> or IT system into which they are received and opened, it is the  
> responsibility of the recipient to ensure that they are virus free  
> and no responsibility is accepted by Pinesoft for any loss or damage  
> arising in any way from receipt or use thereof.  
> *******************************************************************************************************************************************
>
>
> Pinesoft Limited are registered in England, Registered number:  
> 2914825. Registered office: 266-268 High Street, Waltham Cross,  
> Herts, EN8 7EA
> _______________________________________________
> seaside-dev mailing list
> seaside-dev at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev

"Querer es suscitar las paradojas"
Camus - El mito de Sísifo



More information about the seaside-dev mailing list