Re: Online activity

Paul Cowan <[email protected]> Mon, 12 Oct 2009 08:40:46 +0100
Newsgroups gmane.comp.windows.devel.dotnet.advanced
Message-ID <[email protected]>
Thanks Marc, that makes a lot of sense.

Cheers

Paul Cowan

Cutting-Edge Solutions (Scotland)

http://thesoftwaresimpleton.blogspot.com/



2009/10/12 Marc Brooks <[email protected]>

> This is a classic use of a "saga" in a long-running transaction.  I
> this case, the transaction is a multistep one with the following
> steps:
>
> 1) Display records available (no locks needed)
> 2) User selects some for edit (acquire a "reservation" or intent-to-edit
> lock)
> 3) User makes edits (intent locks held)
> 4) Users saves (write-locks acquired, edits saved)
> 5) Write locks and Intent locks released.
> 6) Saga ends.
>
> Now, what makes this interesting is handling the intent-locks at step
> 2 and timeouts/abandons before step 5.  When you encounter that, you
> need to add two other operations to the mix.
>
> First, at step 2.5 you insert a "timed undo" operation into a work
> queue. When the time of this undo expires, the "intent-to-edit" lock
> is automatically released.  You can do this by doing a release
> timed-out before acquire at step 2, or you can have a continuously
> (scheduled) daemon process that does this.
>
> Second, at step 5.5, you released (or just delete) the "timed-undo"
> queue entry. this is safe and desirable because we now know that the
> intent-lock has been deleted and thus doesn't need to be undone.
>
> This is exactly how "ticket reservations" work. You are offered a
> specific seat(s) ticket for 5 minutes, and if you don't complete the
> sale before then, the tickets are released (intent locks undone).
>
> Any further information can be found the excellent book by Bernstein &
> Newcomer "Principles of Transactional Processing" specifically the
> chapter on long-running transactions. http://bit.ly/HVeIr
>
> --
> Marc C. Brooks
> http://musingmarc.blogspot.com
>
> NOT sent from an iPhone
>
> ===================================
> View archives and manage your subscription(s) at
> http://peach.ease.lsoft.com/archives
>

===================================
View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives