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

Infinite classLoading discovery process

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • 1.8
    • None
    • compute
    • None

    Description

      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:

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

      Attachments

        1. reproduce.tar.gz
          11 kB
          Evgeny Stanilovsky

        Issue Links

          Activity

            People

              ascherbakov Alexey Scherbakov
              zstan Evgeny Stanilovsky
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m