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