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

ASF GitHub Bot commented on IGNITE-4806:
----------------------------------------

GitHub user zstan opened a pull request:

    https://github.com/apache/ignite/pull/1616

    IGNITE-4806 Fix infinite classloading discovery

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/gridgain/apache-ignite IGNITE-4806

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/1616.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1616
    
----
commit c2b41d8bb3cdb9bb4aa60b42904162f75bb89a11
Author: Evgeny Stanilovskiy <estanilovs...@gridgain.com>
Date:   2017-03-09T13:54:02Z

    IGNITE-4806 Fix infinite classloading discovery

----


> Infinite classLoading discovery process
> ---------------------------------------
>
>                 Key: IGNITE-4806
>                 URL: https://issues.apache.org/jira/browse/IGNITE-4806
>             Project: Ignite
>          Issue Type: Bug
>          Components: compute
>    Affects Versions: 1.8
>            Reporter: Stanilovsky Evgeny
>            Assignee: Stanilovsky Evgeny
>            Priority: Minor
>         Attachments: reproduce.tar.gz
>
>
> Hello, i found infinite discovery class loading after very rare usage case.
> In a nutshell to reproduce we need to run sequentially 3 different jvm 
> instances.
> FirstNode instance simple start the grid.
> SecondNode connect to grid, initialize custom classLoader, and run 
> IgniteCallable (JobA) wrapped into ComputeTask instance.
> ThirdNode  connect to grid, initialize custom classLoader, and run two 
> IgniteCallable (JobB, jobB2) wrapped into ComputeTask instances.
> Finally we can observe JobA has been running in First and Second nodes, JobB  
> has been running in First, Second and Third nodes, while jobB2 starts 
> infinite class loading. We could see it simply looking into First Node thread 
> dump:
> {code}
> "pub-#69%grid%" prio=10 tid=0x00007f9218015800 nid=0x3de5 runnable 
> [0x00007f9254176000]
>    java.lang.Thread.State: RUNNABLE
>       at java.lang.Throwable.fillInStackTrace(Native Method)
>       at java.lang.Throwable.fillInStackTrace(Throwable.java:783)
>       - locked <0x00000007d43ced00> (a java.lang.ClassNotFoundException)
>       at java.lang.Throwable.<init>(Throwable.java:287)
>       at java.lang.Exception.<init>(Exception.java:84)
>       at 
> java.lang.ReflectiveOperationException.<init>(ReflectiveOperationException.java:75)
>       at 
> java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:82)
>       at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>       at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>       - locked <0x000000070c22fd08> (a java.lang.Object)
>       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:278)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeploymentLocalStore.getDeployment(GridDeploymentLocalStore.java:191)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeploymentManager.getLocalDeployment(GridDeploymentManager.java:383)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader.findClass(GridDeploymentClassLoader.java:497)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>       - locked <0x000000070c0361e0> (a 
> org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader.loadClass(GridDeploymentClassLoader.java:441)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:278)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeployment.deployedClass(GridDeployment.java:444)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeploymentPerVersionStore.getDeployment(GridDeploymentPerVersionStore.java:454)
>       at 
> org.apache.ignite.internal.managers.deployment.GridDeploymentManager.getGlobalDeployment(GridDeploymentManager.java:494)
>       at 
> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:982)
>       at 
> org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1894)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1082)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:710)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:102)
>       at 
> org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:673)
>       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)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to