Magma limitations
Last updated at 12:40 pm UTC on 17 January 2006
Magma tries to be stable within its supported functionality. But Squeak is open and limitless, so it is beneficial to describe the tested boundaries of Magma that should be crossed only after rereading the disclaimer.
See supported classes for a list of classes you can use and which ones to avoid.
Security
The first round of security has finally been implemented and delivered 1/2006.
Multiple sessions in one image
This is not part of the test cases but it does seem to work in my tests. The "chalkboard collaboration" of the Magma Tutorial demonstrates that this works, and at least one user has reported success using multiple sessions in the same image to support a Seaside application. However, you should prove to yourself it works before trusting it.
Multiple processes
With the new pre and post-processing blocks, it may be possible to run into a "Block already being evaluated". This should be able to be recitified by using a MessageSend in #setUpPreAndPostProcessing or using Anthony's BlockClosures. Beyond that, it seems like it "should work," but I have never tested it, therefore I wouldn't trust it until your own tests prove it will work.
Long transactions
Long transactions are only somewhat supported. If you log in and are not active with the database for a long time it will terminate your session so it can purge your individual transaction log. But when you then agitate a proxy your session will be automatically reconnected.
Things that probably won't work
The following things should NOT be expected to work:
- Use of Weak references. (the main problem here is: navigating portions of a large model with weak references would not behave the same as when the entire model of objects is in memory. What if an object, say A, in our model is strongly referenced and weakly-referenced from two different places, and the strongly-referenced portion of our model is not in our local memory. But we then bring in the weak reference to it. Since our local system garbage collects it and, thinking it changed, updates the weak object. This is incorrect behavior!)
- become: of a persistent object may cause problems
- attempting to persist a MagmaSession (persist its #magmaId or #location instead)
Risk management
There are several ways to reduce the risk of moving to an unproven database such as Magma.
- start small - for any software that hasn't earned your trust must earn it, start small. Don't start with important data that can't be recovered if something tragic happens.
- perform extensive testing - MagmaTestCase covers basic functions and several combinations of unique scenarios. You may want to write test cases for your program that involve using Magma to verify Magma behaves the way you expect it to.
- replicate persistence - Use another database you trust in conjunction with Magma or log objects out to a flat file until you feel comfortable.