Uploaded image for project: 'Tools (JBoss Tools)'
  1. Tools (JBoss Tools)
  2. JBIDE-22658

Infinite or very long hang in CDI builder with Payara embedded maven dep

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 4.4.1.AM1
    • Component/s: cdi
    • Labels:
      None
    • Steps to Reproduce:
      Hide

      Add the above mentioned dependency to a pom.xml in a Maven project. Let Eclipse build the project. See the build get stuck on say 30% with 'Invoking CDI ... Builder on ...' in the progress view

      Show
      Add the above mentioned dependency to a pom.xml in a Maven project. Let Eclipse build the project. See the build get stuck on say 30% with 'Invoking CDI ... Builder on ...' in the progress view

      Description

      In the latest JBoss Tools for Eclipse Mars .2 (would be great if it was easy to see the main version easily, but I guess it's 4.3.1), the CDI builder either infinitely hangs or takes an enormous amount of time (an hour at least on a core M laptop) when payara embedded is present as (test) dependency in a maven project.

      During this hang I took a stack trace, which looks as follows:

      "Worker-20" #96 prio=5 os_prio=31 tid=0x0000000101512000 nid=0x14803 runnable [0x0000700003fde000]
         java.lang.Thread.State: RUNNABLE
      	at java.util.zip.ZipFile.open(Native Method)
      	at java.util.zip.ZipFile.<init>(ZipFile.java:219)
      	at java.util.zip.ZipFile.<init>(ZipFile.java:149)
      	at java.util.zip.ZipFile.<init>(ZipFile.java:163)
      	at org.eclipse.jdt.internal.core.JavaModelManager.getZipFile(JavaModelManager.java:2678)
      	at org.eclipse.jdt.internal.core.JavaModelManager.getZipFile(JavaModelManager.java:2644)
      	at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.getJar(JarPackageFragmentRoot.java:156)
      	at org.eclipse.jdt.internal.core.ClassFile.getJarBinaryTypeInfo(ClassFile.java:355)
      	at org.eclipse.jdt.internal.core.ClassFile.getBinaryTypeInfo(ClassFile.java:290)
      	at org.eclipse.jdt.internal.core.ClassFile.getBinaryTypeInfo(ClassFile.java:284)
      	at org.eclipse.jdt.internal.core.ClassFile.buildStructure(ClassFile.java:93)
      	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:259)
      	at org.eclipse.jdt.internal.core.SourceRefElement.generateInfos(SourceRefElement.java:107)
      	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:579)
      	at org.eclipse.jdt.internal.core.BinaryType.getElementInfo(BinaryType.java:287)
      	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:302)
      	at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:220)
      	at org.jboss.tools.cdi.internal.core.scanner.ImplementationCollector.process(ImplementationCollector.java:41)
      	at org.jboss.tools.cdi.internal.core.scanner.ImplementationCollector.<init>(ImplementationCollector.java:32)
      	at org.jboss.tools.cdi.internal.core.impl.CDIProject.rebuildBeans(CDIProject.java:1309)
      	at org.jboss.tools.cdi.internal.core.impl.CDIProject.update(CDIProject.java:1216)
      	- locked <0x000000078ecd93d8> (a org.jboss.tools.cdi.internal.core.impl.CDICache)
      	at org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext.applyWorkingCopy(DefinitionContext.java:442)
      	at org.jboss.tools.cdi.core.CDICoreBuilder.build(CDICoreBuilder.java:267)
      	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
      	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
      	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:205)
      	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:245)
      	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:300)
      	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
      	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
      	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:359)
      	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:382)
      	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
      	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
      	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
      

      I debugged Eclipse with a second Eclipse, and it appeared that the code is repeatedly opening .m2/repository/fish/payara/extras/payara-embedded-all/4.1.1.162/payara-embedded-all-4.1.1.162.jar from CDIProject#rebuildBeans.

      The specific line of code is:

      ImplementationCollector ic = new ImplementationCollector(typeDefinitions);
      

      The number of type definitions it seems to go through in ImplementationCollector#process is 33009 and the loop looks to be making progress, so it's more likely just incredibly slow and not an infinite hang.

      The dependency in pom.xml looks as follows:

      <dependency>
          <groupId>fish.payara.extras</groupId>
          <artifactId>payara-embedded-all</artifactId>
          <version>4.1.1.162</version>
          <scope>test</scope>
      </dependency>
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  scabanovich Viacheslav Kabanovich
                  Reporter:
                  atijms arjan tijms
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: