Hi,

I have investigated this problem and I think I have a basic idea what is
happening:

The error happens in the global Lockmanager in the class
org.apache.jackrabbit.core.lock.LockManagerImpl in the method
internalUnlock(NodeImpl node). This LockManager tries to find the node that
should be unlocked in a PathMap called lockMap and throws "LockException:
Node not locked" if it can't be found. 

Because we are in a transaction, the actual move operation and with it the
refresh of the mentioned PathMap in the global LockManager only happens upon
commit. The unlocking however seems to be done within the prepare of the
transaction, so this will always happen before the commit and actual move.
This means that the LockManager and it's lockMap can't know about the
changed path yet and will fail, because the entry in the lockMap still
contains the old path. 

I don't know if this is a bug or if there is something wrong with the way
move/unlock is used in the test case and I didn't find a workaround for this
problem yet. Would be great if someone has any ideas for this issue.

Kind regards,
Thomas



--
View this message in context: 
http://jackrabbit.510166.n4.nabble.com/Move-Locks-and-Transactions-tp4662332p4662354.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.

Reply via email to