You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by Oliver Zeigermann <oz...@c1-fse.de> on 2004/05/06 11:42:44 UTC

TLock revival

Folks!

I took up the TLock idea initially present by Peter Nevermann and 
Michael Hartmeier.

My TLocks can be set on any resource and are
- transient: they will be automatically removed at the end of a 
transatction which currently ends when the request ends
- exclusive: at most one transaction can hold such a lock on the same 
resource

TLocks are currently used only on creation and removal of resources. In 
this case the parent of such a resource will be locked exclusively. The 
reason for this is to avoid deadlocks especially when auto-versioning is 
turned on. Let me show how things were before this:


BEFORE TLOCKS
-------------

(I) Pessimistic locking

Tx1				Tx2
1 Read history			XXX
2 XXX				Read history
3 XXX				XXX
4 Try Write histroy (wait)	XXX
5 Wait				Try Write histroy (wait)
6 Wait				Wait
7 Wait 				DEADLOCK -> ROLLBACK
8 Commit

(II) Optimistic locking

Tx1				Tx2
1 Read history			XXX
2 XXX				Read history
3 XXX				XXX
4 Write histroy 		XXX
5 XXX				Write histroy
6 XXX				XXX
7 Try commit ->			XXX
   Concurrent Modification ->
   ROLLBACK
8 				Commit


AFTER TLOCKS
------------

Tx1				Tx2
1 Lock history			XXX
2 XXX				Try Lock history (wait)
3 Read history			Wait
4 Write histroy			Wait
5 Commit (releases all TLocks)	Wait
6				Histoty Locked
7 				Read history
8 				Write histroy
9 				Commit


CONFIGURATION
-------------

There is nothing special to do as TLocks are now part of the 
ExtendedStore. TLocks have timeouts as well which is the maximum amount 
in seconds a transaction will wait for a TLock until it rolls back and 
reports a conflict. The default is 20 seconds, but you can change it in 
Domain.xml using parameter tlock-timeout. The configuration might look like:

      <store name="TxFileStore">
        <parameter name="tlock-timeout">20</parameter>
         ....
      </store>


CONCLUSION
----------

Using TLocks and Sequences I could concurrently upload from seven 
clients each having 100 resources without a single conflict. Of course, 
concurrency is reduced as at most one writing (pure reading is not 
affected) transaction can have access to the history folder at a time. 
This is still much better than to lock the whole PUT method or apply 
weired hacks as done before.

That's it I guess...

Cheers,
Oliver

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org