I just started using JBoss Cache and went through the doc and searched the 
forum but didn't find the answer for my question. I am using JBossCache 
3.2.0.GA. 

I need to perform the following operation frequently in a clustered caching 
environment:

  |   Node node = cache.getChild(Fqn.fromString("app/sequence/msgId"));
  |   Integer currentId = (Integer)node.get("id");
  |   Integer nextId = new Integer(currentId.intValue()+1);
  |   node.put("id", nextId);
  | 

Basically, a read followed by a write that increment the value. I'd like to 
know what's the best way to approach this.

If I don't use any locking, the node.put() will, according to the doc, fast 
fail if another thread on the same JBoss node or the clustered node updates the 
value, in which case I need to capture exception and repeat this operation and 
might suffer the starvation problem.

Alternatively, I think I can use LockManager.lock() to proactively lock the 
node before read / update it. The starvation problem may still occur, but if I 
obtain the lock, I know I won't get an exception for writing later one. But I 
didn't find any useful document on the use of the LockManager and therefore, I 
am not sure if this approach is recommended or not.

Furthermore, I am not sure how my setting of the  isolationLevel attribute 
(either "READ_COMMITTED" or "REPEATABLE_READ") affects the behavior in the 
above two scenarios.

Can someone please share your thoughts on this? 

Thank you,

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4256268#4256268

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4256268
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to