[Zope3-dev] Heads up: zope.app.intid and zope.app.keyreference
are now optional
Jim Fulton
jim at zope.com
Thu Jun 16 05:58:09 EDT 2005
Ivo van der Wijk wrote:
> On 6/16/05, Jim Fulton <jim at zope.com> wrote:
>
>>Ivo van der Wijk wrote:
>>
>>>On 6/14/05, Jim Fulton <jim at zope.com> wrote:
>>>
>>>
>>>>In preparation for the 3.1 release, I made these packages (as
>>>>well as zope.app.observable and zope.app.schema) optional and thus
>>>>configured vie package includes. If you have an instance that
>>>>uses these, you will need to add package includes for these.
>>>>
>>>
>>>
>>>I somewhat missed it - cubic started to work without much errors (the
>>>catalog simply stopped working)
>>>
>>>After fixing things/ adding includes, I ran into an old issue again (I
>>>have clean Zope3 svn checkout at this moment, no additional
>>>hacks/workarounds anymore):
>>>
>>> File "/home/ivo/Projects/Zope3/Zope3-svn/src/zope/app/security/adapter.py",
>>>line 88, in __call__ adapter = self.factory(*args)
>>> File "/home/ivo/Projects/Zope3/Zope3-svn/src/zope/app/keyreference/persistent.py",
>>>line 41, in __init__
>>> raise zope.app.keyreference.interfaces.NotYet(object)
>>>NotYet: <zope.app.workflow.stateful.definition.State object at 0xb3bd076c>
>>>
>>>The IntId utility can't handle these exceptions. The following diff
>>>fixes things (for me, at least)
>>>
>
>
>>Yes, but I worry that this could hide bugs.
>>
>>You have an object that could potentially be registered, but
>>can't be yet because we can't get the database yet. It is being added.
>>Later, when it has a database, it won't be added again and so won't be
>>registered. This will lead to mysterous bugs where objects that should
>>be cataloged won't be.
>>
>
>
> I guess somehow Zope3 is trying to assign an id to workflow state
> definitions too early. I can't "retry" this from my code myself (my
> request will simply crash with the trace above), the real fix would
> probably to make sure that these definitions can get IKeyReferenced,
> but this is beyond my knowledge.
>
> I've tried to explicitly _p_jar.add these objects in the past, but
> this fails with recent Zope3 versions.
It shouldn't. Perhaps you could provide some more specific information.
The fact that you can't get key references for persistent objects is a real
pain. I've thought a lot about that, but haven't come up with a good solution.
(Phillip Eby suggested using GUIDs at one point. I've always been a bit
suspicious of GUIDs myself.) One technique that has worked fairly well
for us has been to use savepoints. One interesting side effect of a savepoint
is that new objects get their database and oid set.
Jim
--
Jim Fulton mailto:jim at zope.com Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
More information about the Zope3-dev
mailing list