[Bese-devel] [ucw] rfc: how to handle transactions

Marco Baringer mb at bese.it
Mon Feb 9 22:41:09 UTC 2004


christion queinnec (one very smart cookie) implements transactions with 
something along these lines:

(let ((done-p nil))
   (when done-p
     (call sorry-cant-do-this-more-than-once)
     (exit-from-let-body))
   (call some-page)
   (setf done-p t))

basically the use of the lexical done-p ensures that the body of the 
let will only be executed once (due to the fact that done-p is a closed 
over variable which doesn't change values on subsequent returns from 
(call same-page)).

i'd really love the implementation of transactions in ucw to be this 
simple, however unlike queinnec's model we can't be sure that the call 
to call will only show one page (in fact in his model CALL is actually 
SHOW-PAGE (or something similar)). anyway, what i'm wondering is this: 
if component FOO is in a transaction, and that transaction has already 
terminated, should we simply not allow FOO to return multiple times (as 
would happen with the above implementation) or should we do keep doing 
what ucw currently does and not allow any of the pages generated by FOO 
(or components called by FOO) to call actions?

--
Marco
Ring the bells that still can ring.
Forget the perfect offering.
There is a crack in everything.
That's how the light gets in.
	-Leonard Cohen





More information about the bese-devel mailing list