Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-2995

FineGrainedAtomicHashMap may not lock all the composite keys in optimistic locking

    Details

      Description

      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.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  pruivo Pedro Ruivo
                  Reporter:
                  pruivo Pedro Ruivo
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: