You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrey Velichko (JIRA)" <ji...@apache.org> on 2016/08/10 18:24:20 UTC

[jira] [Commented] (IGNITE-3197) OverlappingFileLockException in marshaller context

    [ https://issues.apache.org/jira/browse/IGNITE-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15415722#comment-15415722 ] 

Andrey Velichko commented on IGNITE-3197:
-----------------------------------------

Error was reproduced - one JVM and more then 1 class loader.

> OverlappingFileLockException in marshaller context
> --------------------------------------------------
>
>                 Key: IGNITE-3197
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3197
>             Project: Ignite
>          Issue Type: Bug
>          Components: general
>    Affects Versions: 1.6
>            Reporter: Valentin Kulichenko
>            Assignee: Andrey Velichko
>            Priority: Minor
>              Labels: important
>             Fix For: 1.8
>
>
> {{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}}:
> {noformat}
> [#|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)
> |#]
> {noformat}
> It's actually harmless, but the logs are flooded with the errors.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)