commit 900f1e4f9123759f1840f7d493438c80e88e437f Author: Sebastian Tusk Date: Tue Mar 26 10:31:07 2013 +0100 ISPN-2913 putForExternalRead leaves locks diff --git a/core/src/main/java/org/infinispan/interceptors/locking/OptimisticLockingInterceptor.java b/core/src/main/java/org/infinispan/interceptors/locking/OptimisticLockingInterceptor.java index f0c1d09..0756f75 100644 --- a/core/src/main/java/org/infinispan/interceptors/locking/OptimisticLockingInterceptor.java +++ b/core/src/main/java/org/infinispan/interceptors/locking/OptimisticLockingInterceptor.java @@ -142,6 +142,10 @@ public Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand return invokeNextInterceptor(ctx, command); } catch (Throwable te) { throw cleanLocksAndRethrow(ctx, te); + } finally { + //with putForExternalRead the value might be put into L1 without a transaction + //we need to release any locks for these cases + if (!ctx.isInTxScope()) lockManager.unlockAll(ctx); } }