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