[Zope-dev] To the brave folks trying Zope HEAD...

Sidnei da Silva sidnei at awkly.org
Fri Dec 12 06:54:31 EST 2003


| >Is there any special trick to such script? Provided some pointers of
| >what the script should do, I wouldn't mind writing and testing it.
| 
| There are lots of special tricks to such a script. Otherwise, I would
| have written it already. :)

Obviously.

/me slaps his forehead

| OK, here's how I think it needs to happen, with some, hopefuly helpful 
| notes.
| 
| 1. The script needs to be run under Zope 2.6 or 2.7.  There should
|    be a product that people can install that installs some method to
|    be run.  People should be able to run this method in a running zope.
|    They should not need to shut down their site to do the conversion.
| 
| 2. The method should walk the object tree, converting:
| 
|    - old-style BTrees to modern BTrees
|    - old-style buckets to modern buckets
|    - intSets to IITreeSets.

Just to check:

+----------+-----------+
|   Old    |    New    |
+----------+-----------+
|  BTree   |  OOBTree  |
+----------+-----------+
| IIBTree  |  IIBtree  |
+----------+-----------+
| OIBTree  |  OIBTree  |
+----------+-----------+
| IOBTree  |  IOBTree  |
+----------+-----------+
|  intSet  | IITreeSet |
+----------+-----------+
| bucket?  |  bucket?  |
+----------+-----------+

|    The individual conversions should be pretty simple. At worst involving
|    a for loop, but, in many cases, the constructors for the new types will
|    be able to accept the old types.
| 
| 3. The hard part is walking the object tree.  You will need a function that,
|    given an object, will return the oids of the objects it references.
|    Perhaps Jeremy can help you with that.

I hope so *wink*.

| 4. You should do each conversion in a separate transaction.  That is, when 
| you
|    encounter an object that needs to be converted, you should convert it 
|    and commit.
|
| 5. You will want to keep a dictionary of the oids visited, just in case 
| there are
|    any cyles.  Also, if you encounter an oid that was converted, you will 
|    need to
|    subtitute the new value.  This might be really hard. :(  I think this 
|    probably
|    won't happen, but perhaps you should at least check for it.
| 
| 6. After the conversion has been run, the database should be usable with
|    the head.

Kewl. I'm eager to get my hands on it.

-- 
Sidnei da Silva <sidnei at awkly.org>
http://awkly.org - dreamcatching :: making your dreams come true
http://plone.org/about/team#dreamcatcher

Somebody's terminal is dropping bits.  I found a pile of them over in the
corner.



More information about the Zope-Dev mailing list