[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