4 Replies Latest reply: Apr 26, 2012 1:28 PM by Dmitry Udalov RSS

    Is it possible to have Locks with different LockAcquisitionTimeout ?

    Dmitry Udalov Newbie

      1. I see that timeout for cache.getAdvancedCache().lock(Key) is determined by LockAcquisitionTimeout that is set for the entire cache.https://docs.jboss.org/author/display/ISPN/Configuring+cache+programmatically. It makes the timeout a property of cached objects and the same across the entire cache. It seems that it would sense to consider timeout as property of operations performed on the cache objects, not the objects. So it would be up to a caller to specify the timeout, similarly to standard "tryLock(long, TimeUnit)" functionality.

       

      2. Also it’s not clear why an innocent attempt to acquire a lock might cause transaction termination (if it exceeds the timeout). That makes it dangerous even trying to acquire a lock.

       

          InvocationContextInterceptor.markTxForRollbackAndRethrow(InvocationContext, Throwable) line: 178   

          InvocationContextInterceptor.handleAll(InvocationContext, VisitableCommand) line: 144   

          InvocationContextInterceptor.visitLockControlCommand(TxInvocationContext, LockControlCommand) line: 94   

          LockControlCommand.acceptVisitor(InvocationContext, Visitor) line: 129   

          InterceptorChain.invoke(InvocationContext, VisitableCommand) line: 345   

          CacheImpl<K,V>.lock(Collection<? extends K>, EnumSet<Flag>, ClassLoader) line: 484   

          CacheImpl<K,V>.lock(K...) line: 468   

       

      Is there any other Infinispan API to try acquiring a lock on a cached object with non-default timeout and without endangering the entire transaction?

       

      Thanks,

      Dmitry