[jbosscache-dev] Issue with JBCACHE-1309 WAS: Branch for 2.1.X

Manik Surtani manik at jboss.org
Wed Apr 2 06:33:15 EDT 2008


On 1 Apr 2008, at 22:58, Manik Surtani wrote:
> On 1 Apr 2008, at 21:53, Brian Stansberry wrote:
>> Test for this is  
>> org 
>> .jboss 
>> .cache 
>> .integration 
>> .hibernate 
>> .UpdateTimestampsCachingTest 
>> .testTimestampUpdateInAfterCompletionOptimistic()
>
> Could you add this test to trunk a well?
>
>> Brian Stansberry wrote:
>>>
>
> < SNIP />
>
>>> ......
>>> org 
>>> .jboss 
>>> .cache 
>>> .invocation 
>>> .CacheInvocationDelegate.put(CacheInvocationDelegate.java:488)  
>>> What's going on here is fetchWorkspaceNode() is walking up the  
>>> tree from /TS/test/org/hibernate/cache/UpdateTimestampsCache/ 
>>> Accounts to Fqn.ROOT, calling lockAndCreateWorkspaceNode() on each  
>>> Fqn.  When it gets to Fqn.ROOT it fails.  This is because  
>>> lockAndCreateWorkspaceNode() wants a write lock on the target node  
>>> before making the workspace copy. In this case the WL can't be  
>>> obtained, because a RL is held by the suspended tx.
>>> Does lockAndCreateWorkspaceNode() need a write lock here?
>
> Probably not.  I'm guessing it could do with a RL instead, let me  
> investigate.

Ok, this is only called when a node exists in the tree and it needs to  
be added to the workspace.  In this case, we should only attempt to  
acquire a read lock, not a write lock.  The write locks are acquired  
on nodes marked as dirty when a transaction commits.

This fix is in svn (trunk and 2.1.X) and your tests - along with other  
optimistic locking tests - pass.  I'm waiting for a full Hudson test  
suite run.

Cheers
--
Manik Surtani
Lead, JBoss Cache
manik at jboss.org









More information about the jbosscache-dev mailing list