Scaling Seaside apps (was: [Seaside] About SToR)
chris at funkyobjects.org
Mon Jul 31 22:33:02 UTC 2006
> Well, the idea was to *not* perform modifications in the shared Magma
> session. They would be performed in separate allocated sessions.
Sounds interesting. How would you "find" the object(s) to be modified
in the other (mutator) session? An oid lookup, perhaps?
> Btw, the approach of wrapping each request in an commit block (or as
> do - just an abort before performing the request (we run
> to the model in separately started transactions)) has a noticable
Did you set refreshPersistentObjectsEvenWhenChangedOnlyByMe: true?
That can kill abort performance, I would try really hard to leave that
Did you know, when you leave that option off, you can:
- make changes to the model, outside of a transaction
- send #begin, which will refresh only the objects which were changed
by others, not revert your own changes
- immediately send #commit, which will commit your changes
This satisfies the "I forgot to begin" use-case, but maybe also a
useful alternative to the performance-killing
> I did profile the aborts trying to figure out why they take so long
> when there are no changes - but can't recall right now what it was.
If the profile shows its in MaTransaction>>#restore then the
refreshPersistentObjectsEvenWhenChangedOnlyByMe was turned on, don't do
Otherwise, please post the profile to the Magma list, I'll look at it
More information about the Seaside