Wankyu Choi wrote:
I found that this problem only occurs with CMF instances + virtual host monster.
Normal Zope folders cause no such problem. Only CMF and Plone instances cause this problem when virtual host monster maps a domain to their paths.
It's not even a CatalogAwareness problem either since a simple call to an object's getPhysicalPath() via urls can demonstrate what's happening internally:
- Add a CMF site named 'CMF'.
- Add and set up a virtual host monster in such a way that a certain domain, www.example.com, for example, maps to the path of the CMF instance created above.
- create a DTML method called 'test'
A call to this DTML method's getPhysicalPath() with the URL "http://www.example.com/test/getPhysicalPath" returns: ('', 'CMF', 'test')
The URL "http://www.example.com/CMF/test/getPhysicalPath" returns: ('', 'CMF', 'CMF', 'test')
The URL "http://www.example.com/CMF/CMF/CMF/CMF/test/getPhysicalPath" returns: ('', 'CMF', 'CMF', 'CMF', 'CMF', 'CMF', 'test')
You get the idea. Without VHM, the problem disappears.
With VHM, one can create tons of duplicate entries in the portal_catalog as demonstrated above.
I suspect the getPhysicalPath() method overriden in the CMF package doesn't behave well with VHM.
I'm cc'ing this to the CMF maillinglist since it's more of a CMF problem :-)
How can I fix it? (or is it fixed in the upcoming CMF 1.4 ?)
Worse yet, I can reproduce this without a VHM, though, just to be sure, I had a VHM before on that server. I added a fresh CMF site, "CMF" and went directly (no apache in between) to http://myserver:8080/CMF/CMF/getPhysicalPath and got ('','CMF','CMF') Duh! But I can only reproduce this with the PortalSite object for now, I suspected SkinnableFolder would also exhibit this bug, but didn't. Further, I deleted any subobjects (all *_tool objects etc.) from the PortalSite object and the same happened. Ok, here's a workaround which should work: Add a normal folder (stock zope) named 'CMF' (or whatever your Portal Site object is called) as a subobject to the Portal Side object. This will prevent it from acquiring itself and causing this havoc. HTH, oliver