[ZODB-Dev] Odd output from checkbtrees.py
Paul Winkler
pw_lists at slinkp.com
Wed Aug 27 12:24:27 EDT 2003
I'm testing ZODB 3.1.3 on a Data.fs that has lived through several
zope upgrades (2.5.0 ... 2.6.2b6).
This is the first time I've examined the btrees, and I have no real
understanding of how FileStorage uses btrees, so I'm not sure
whether this is a bug in checkbtrees.py, or a bug in DCWorkflow,
or something nasty in my Data.fs, or (eep!) expected behavior...
In a stripped-down DCWorkflow with only 2 transitions
('publish' and 'retract'), I notice this in the output:
(snip lots of CMF content objects)
...
['Application'].portals.portal_workflow.cti_basic_workflow.transitions['publish'
].guard <Guard instance at 8e43d78>
['Application'].portals.portal_workflow.cti_basic_workflow.transitions['publish'
]['publish'] <TransitionDefinition at transitions/publish>
['Application'].portals.portal_workflow.cti_basic_workflow.transitions['publish'
]['retract'] <TransitionDefinition at transitions/retract>
['Application'].portals.portal_workflow.cti_basic_workflow.transitions['retract'
].guard <Guard instance at 9027ed8>
['Application'].portals.portal_workflow.cti_basic_workflow.transitions['retract'
]['publish'] <TransitionDefinition at transitions/publish>
['Application'].portals.portal_workflow.cti_basic_workflow.transitions['retract'
]['retract'] <TransitionDefinition at transitions/retract>
...
Note that there are 2 ** 2 occurrences: ['publish']['publish'],
['publish']['retract'], ['retract']['publish'], ['retract' ]['retract'].
No big deal.
Later on, there is another portal with a 6-transition workflow.
in this case we see 6 ** 2 of these:
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish'].g
uard <Guard instance at 8e12cc8>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish'] <TransitionDefinition at transitions/publish>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
retract'] <TransitionDefinition at transitions/retract>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
reject'] <TransitionDefinition at transitions/reject>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
hide'] <TransitionDefinition at transitions/hide>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
submit'] <TransitionDefinition at transitions/submit>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
show'] <TransitionDefinition at transitions/show>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['retract'].g
uard <Guard instance at 8dbd550>
...
etc.
The real fun begins in yet another cmf instance in which I was playing
with a different 6-transition workflow...
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish'].guard <Guard instance at 8e12cc8>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['publish'] <TransitionDefinition at transitions/publish>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['retract'] <TransitionDefinition at transitions/retract>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['reject'] <TransitionDefinition at transitions/reject>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['hide'] <TransitionDefinition at transitions/hide>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['submit'] <TransitionDefinition at transitions/submit>
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['show'] <TransitionDefinition at transitions/show>
... etc.
You guessed it, there are 6 ** 3 of these lines...
and ... oy vey, here comes another section -
['Application'].paul_stuff.wkflow.portal_workflow.test2.transitions['publish']['
publish']['publish']['publish'] <TransitionDefinition at transitions/publish>
yep, there are 6 ** 4 of those lines ...
It just keeps getting worse... there's a 6 ** 5 case later on...
and after that 6 ** 6... I don't know how if this progression is finite,
I killed it after about half an hour; i'm now letting it run again to see
if it manages to end.
--
Paul Winkler
http://www.slinkp.com
Look! Up in the sky! It's CYBERNETIC ENGINEER!
(random hero from isometric.spaceninja.com)
More information about the ZODB-Dev
mailing list