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

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

Hello, need same help, created draft pull request 
https://github.com/apache/ignite/pull/945

1 For unit test MarshallerContextImpl what is best source name?
Temporary used class MarshallerContextTestLock

2 Method MarshallerContextImpl.tryChanelLock what timeout is optimal now 3 sec.
Maybe there are other ideas for locking file?

3. Is there are best solution for class loading and executing in thread
MarshallerContextImpl.ContinuousQueryListener.onUpdated ?

Test reproduced if
- comment lock usage line 295 //Lock lock = fileLock(fileName);
- replace line FileLock fileLock = tryChanelLock(out.getChannel());
to original FileLock fileLock = out.getChannel().lock();

> 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)

Reply via email to