[cl-prevalence-devel] Keeping state during transactions
Alexey Voznyuk
me at swizard.info
Sat Sep 26 11:13:01 UTC 2009
Leslie P. Polzer wrote:
> [snip]
>> - I didn't get what *txn-state* is for. All that it does is
>> doubling 'known-object-id' / 'set-known-object' functions.
>>
>
> *txn-state* holds the transaction-specific state. The old model
> only has transaction states via a system-global variable that
> gets reset before every transaction. This new code moves this
> state to *txn-state* and uses the system-global variable as a
> true global state that does not get reset.
>
> Does that make things clear?
>
No :) The only purpose of 'state' in serialization is to maintain
the objects table already serialized, so we can reference them instead
of full persistence procedure. The old cl-prevalence implementation
keeps that state only during one 'transaction', so the following
transactions need to deeply serialize objects, that were already been
serialized during previous transactions. My purpose to maintain that
objects table until full snapshot is occurred.
I don't see what *txn-state* is for. It only copies the old state
behavior.
> [snip]
>> Please check my latest 20090926 cumulative patch where I only
>> removed serialization state clearing on each transaction. There are some
>> tests included.
>>
>
> I don't think this will suffice. Can your code handle cycles in
> the object graph?
>
Sure, no problems here. The references to the already known objects
are not serialized.
Check test/test-complex-serialize.lisp in my recent
cl-prevalence-3.patch, there are tests for complex objects structure
with cycles and several indexes.
> Leslie
>
>
More information about the Cl-prevalence-devel
mailing list