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

FineGrainedAtomicHashMap may not lock all the composite keys in optimistic locking

    XMLWordPrintable

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.

      Attachments

        Issue Links

          Activity

            People

              pruivo@redhat.com Pedro Ruivo
              pruivo@redhat.com Pedro Ruivo
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: