-
Bug
-
Resolution: Done
-
Major
-
5.2.7.Final, 5.3.0.Final
In OptimisticLockingInterceptor, we are collecting the composite keys from ApplyDeltaCommand is the key belongs to the node:
case ApplyDeltaCommand.COMMAND_ID: ApplyDeltaCommand command = (ApplyDeltaCommand) wc; if (cdl.localNodeIsOwner(command.getKey())) { Object[] compositeKeys = command.getCompositeKeys(); set.addAll(Arrays.asList(compositeKeys)); } break;
However, when we are going to acquire the lock in the node if it is the primary owner:
protected final void lockAndRegisterBackupLock(TxInvocationContext ctx, Object key, long lockTimeout, boolean skipLocking) throws InterruptedException { if (cdl.localNodeIsPrimaryOwner(key)) { lockKeyAndCheckOwnership(ctx, key, lockTimeout, skipLocking); } else if (cdl.localNodeIsOwner(key)) { ctx.getCacheTransaction().addBackupLockForKey(key); } }
The CompositeKey should always acquire the lock.
This is probably a bug. Add an unit test to verify that locking works as expected for AtomicHashMap.
- blocks
-
ISPN-3736 Backport to 5.2.x for EAP 6.3
- Closed