[
https://issues.jboss.org/browse/JBIDE-22658?page=com.atlassian.jira.plugi...
]
Alexey Kazakov edited comment on JBIDE-22658 at 7/1/16 3:39 PM:
----------------------------------------------------------------
Fixed in master. Full CDI build still can take long time for projects with huge CDI jars
but it can now take minutes. Not hours.
was (Author: akazakov):
Fixed in master. Full CDI build still can take long time for projects with huge CDI jars
but it can now takes minutes. Not hours.
Infinite or very long hang in CDI builder with Payara embedded maven
dep
------------------------------------------------------------------------
Key: JBIDE-22658
URL:
https://issues.jboss.org/browse/JBIDE-22658
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: cdi
Reporter: arjan tijms
Assignee: Viacheslav Kabanovich
Fix For: 4.4.1.AM1
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:
{noformat}
"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)
{noformat}
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:
{code:java}
ImplementationCollector ic = new ImplementationCollector(typeDefinitions);
{code}
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:
{code:xml}
<dependency>
<groupId>fish.payara.extras</groupId>
<artifactId>payara-embedded-all</artifactId>
<version>4.1.1.162</version>
<scope>test</scope>
</dependency>
{code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)