There are two rules for proxies:
- avoid sending an inlined message to proxies (i.e., #==) - avoid sending a proxy as an argument to a primitive
ReadStrategies are the main tool provided to abide these rules.
There is an option, #debugProxies, which can help in that it won't allow the printString to reify the proxy.
Keith Hodges also did some work, now included in the base Magma package that, when this is turned on, when you explore a tree of objects it will initially show them as proxies (just the first time).
I see that MaMutatingProxy reponds to #respondsTo:. This may be from Keith, make sure this isn't the one causing your pain..
Regards, Chris
On Sat, Nov 22, 2008 at 3:32 AM, Göran Krampe goran@krampe.se wrote:
Hi again!
Chris Muller wrote:
Thanks for the report Göran. Good debugging, another option would be to employ a ReadStrategy to ensure the UUID is dereferenced in the original server call.
Right, I need to look into readstrategies again - it seems we have ours disabled right now.
This never came up because serverPerform: was added solely for this purpose (sequence # generators), and a proxy would never be part of any of the other requests. Still, you've piqued my curiousity whether Magma could make this invisible for you.
I was also going nuts trying to debug another (turned out very similar) issue where we send #respondsTo: to a proxy. We got false but then I realized we only got false *the first time* (restarting in debugger made it answer true and thus I immediately started suspecting proxies) but I was still totally confused because the Magma DNU code looked perfectly fine.
Then I realized the problem was not the *receiver* - it was (probably) the argument - the symbol. I think it happens to be a proxy... I haven't finished this little adventure yet - I am fairly sure it is because the argument is a proxy and the method dict lookup fails somehow because of that. I will try to establish this.
regards, Göran
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma