Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-3386

Reentrant lock is lost when lock owner leaves topology

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Won't Fix
    • 1.6
    • 2.0
    • data structures
    • None

    Description

      If to create a lock with the following configuration
      IgniteLock lock = ignite.reentrantLock("lock", true, true, true);

      and perform the following steps below

      1) run the first node using LockIssue that is attached;
      2) run the second node using LockIssue;
      3) stop the first node.

      you will get the following exception on the second node side (the lock information will be lost and the second node won't recreate it ignore "create=true" flag):

      SEVERE: <ignite-atomics-sys-cache> Failed to compare and set: o.a.i.i.processors.datastructures.GridCacheLockImpl$Sync$1@67aea87d
      class org.apache.ignite.IgniteCheckedException: Failed to find reentrant lock with given name: test
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync$1.call(GridCacheLockImpl.java:525)
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync$1.call(GridCacheLockImpl.java:518)
        at org.apache.ignite.internal.processors.cache.GridCacheUtils$23.call(GridCacheUtils.java:1648)
        at org.apache.ignite.internal.processors.cache.GridCacheUtils.outTx(GridCacheUtils.java:891)
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync.compareAndSetGlobalState(GridCacheLockImpl.java:517)
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync.tryAcquire(GridCacheLockImpl.java:400)
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync.tryAcquire(GridCacheLockImpl.java:437)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:861)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync.lock(GridCacheLockImpl.java:432)
        at org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl.lock(GridCacheLockImpl.java:1201)
        at com.bfm.amc.loaders.server.StartIgniteServer.main(StartIgniteServer.java:15)
      

      However the issue is not 100% reproduced but it should be clear from the logs what happens.

      Attachments

        1. LockIssueVer2.java
          1 kB
          Denis A. Magda

        Issue Links

          Activity

            People

              ezhuravl Evgenii Zhuravlev
              dmagda Denis A. Magda
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: