r41beta10

Chris Muller ma.chris.m at gmail.com
Sun Aug 31 23:58:57 UTC 2008


I have just posted r41Beta10 release to the "MagmaTester" project of
squeaksource.  The crux of this release was to add the "commitNumber"
to every object buffer, which logically associates every object in the
repository to its set of commit-log records, granting the potential
for associated meta-information stored in the log (such as
"timestamp") for "free", and brings the potential for "long
transactions" that span session disconnect / reconnects.

This release also (hopefully) finalizes Magma's buffer format for
future releases.  In beta9, there were just 4-bits of available space
on each MaObjectBuffer.  To accomodate the new commitNumber, these
4-bits were used to specify an "attribute-map" for the buffer (a
number between 0 and 15).  Legacy maps are map index 0.  The new
Magma-specific map is 1, which contains a larger header to accomodate
the commitNumber as well as some additional filler for possible future
fields (without having to jump another map index).  A total of 12
bytes per object have been added, so repository sizes will be larger
on disk.

The implementation allows old buffer formats to be read without having
to convert the entire repository at once.  When opening a beta9
repository with this beta10 a MagmaWarning will be signaled,
indicating that the repository is version 9 and will be updated to
version 10, therefore the version 10 code will need to be used going
forward.  The udpate is instantaneous, the old version 9 *buffers* are
left as-is, but any commits will replace them with version 10 buffers.

I also fixed a problem with using #commitAndBegin: in conjunction with
nested transactions.

 - Chris


More information about the Magma mailing list