Hi Sam,
I don't know how are your specification but in mine thre is no time out specified.
To make some assumptions will increase the code complexity(see Leos post). On ther side which time out you'll choose and how you'll justify it ?
I am not shore that I undersant you point :
I don't roll back anything if a lock isn't released, I just kill the lock after a timeout period.
The time out purpose is to prevent the death locks - if you only release(you use "kill") the lock without release the thread them the thread (or client) is remain in waiting.
Regards, Mihai
SCJP, SCJD, SCWCD, OCPJBCD