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

OverlappingFileLockException in marshaller context

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.6
    • 1.8
    • general
    • Important

    Description

      MarshallerContextImpl uses static locks to avoid writing to the same file concurrently. But if Ignite is running embedded in managed environment (e.g., application server), it's possible that there will be two clients loaded by different class loaders. In this case they will not share these static locks and therefore they can try to acquire the file lock for the same file, causing the OverlappingFileLockException:

      [#|2016-05-17T08:02:21.950+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=291;_ThreadName=Thread-2;|java.nio.channels.OverlappingFileLockException
       at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
       at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
       at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1011)
       at org.apache.ignite.internal.MarshallerContextImpl$ContinuousQueryListener.onUpdated(MarshallerContextImpl.java:239)
       at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.notifyCallback(CacheContinuousQueryHandler.java:655)
       at org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.processNotification(GridContinuousProcessor.java:967)
       at org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.access$1900(GridContinuousProcessor.java:94)
       at org.apache.ignite.internal.processors.continuous.GridContinuousProcessor$8.onMessage(GridContinuousProcessor.java:612)
       at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1058)
       at org.apache.ignite.internal.managers.communication.GridIoManager.access$1600(GridIoManager.java:104)
       at org.apache.ignite.internal.managers.communication.GridIoManager$GridCommunicationMessageSet.unwind(GridIoManager.java:2295)
       at org.apache.ignite.internal.managers.communication.GridIoManager.unwindMessageSet(GridIoManager.java:1018)
       at org.apache.ignite.internal.managers.communication.GridIoManager.access$1900(GridIoManager.java:104)
       at org.apache.ignite.internal.managers.communication.GridIoManager$6.run(GridIoManager.java:987)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       at java.lang.Thread.run(Thread.java:745)
      |#]
      

      It's actually harmless, but the logs are flooded with the errors.

      Attachments

        Activity

          People

            AndreyVel Andrey Velichko
            vkulichenko Valentin Kulichenko
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: