[Zope-dev] Refresh trashes acquisition

Ross Boylan RossBoylan@stanfordalumni.org
Tue, 23 Jul 2002 16:31:34 -0700


I find that when I refresh my product it destroys some of the
containment relationships.  Things start failing, and as far as I can
tell the only recovery is to completely rebuild the object.

This is a big problem, and if anyone could explain what is going on
and how to avoid it I would appreciate it.

Here is the result of aq_chain before the refresh:
[<RankQuestion instance at 8dd5620>,
<OriginalSuborder instance at 8c9f8d8>, <EMailBallot instance at
8dfc870>, <__FactoryDispatcher__ instance at 8e73770>,
<ProductDispatcher instance at 83f0618>, <Folder instance at 8d5733

and after
[<RankQuestion instance at 8dee2d0>]

Interestingly, and object inside this retained some context:
Before: [<RandomSuborder instance at 8df6248>, <RankQuestion instance at 8dd5620>, <OriginalSuborder instance at 8c9f8d8>, <EMailBallot instance at 8dfc870>, <__FactoryDispatcher__ instance at 8e73770>, <ProductDispatcher instance at 83f0618>, <Folder instance at 8d57330>, <Application instance at 8e44ae0>, <RequestContainer instance at 8ed53e8>]

After: [<RandomSuborder instance at 8be7128>, <RankQuestion instance
at 8dee2d0>]

Notice that the new RandomSuborder instance (new, judging by the
address, though it should be the same object) points to the new
RankQuestion.  Unfortunately, I need to go a little further than that
to get the variable I'm looking for :(.

It may be relevant that I am explicitly wrapping objects uses
a.__of__(b). I did this because I thought things weren't being wrapped
at all, but the results above show the problem is different: the
wrappers are lost on refresh.  The refresh changes nothing structural,
just some method code.

One thought that occurred to me is that it is not the changes to my
product classes that is causing the trouble, but the inclusion of some
of the items higher up the chain.