I can say what changed. We introduced a new custom facet version comparator for ESB.
You can see details in JIRA https://issues.jboss.org/browse/JBIDE-9802
But if to be short...

JBossServerCorePlugin.start() indirectly invokes FacetedProjectFrameworkImpl
FacetedProjectFrameworkImpl starts initialization and loading its metadata including ESB facet comparator
Eclipse starts to start ESB plugin to load the comparator.
ESBCorePlugin.start() indirectly invokes FacetedProjectFrameworkImpl
And here we get a deadlock since FacetedProjectFrameworkImpl.getInstance() is synchronized and invokes recursively in the same thread:

public synchronized static FacetedProjectFrameworkImpl getInstance()
{
    if( instance == null )
    {
        instance = new FacetedProjectFrameworkImpl();
    }

    return instance;
}


Rob, if I'm ok with firing the addition as a job in the esb.
Actually firing a new job in JBossAS solves the problem in JBT but since we have our new ESB facet version comparator we should make sure that if any third-side plugin loads Faceted Framework in its start method we would not get the same deadlock again.
So I'm fully agree with you that it's better to use an extension point but let's fire a new job as a workaround so far.
I'm assigning JBIDE-9802 to you then.


On 10/04/2011 07:31 AM, Brian Fitzpatrick wrote:
Nothing changed in ESB. That's why I'm concerned as well. But I really don't know anything about this faceted framework and can't offer any constructive feedback. 

All we know is that it prevents this test, which runs locally through the PDE and not through the Mavenized test run, from starting this particular plug-in for some mysterious reason.

--Fitz

_______________________________
Brian Fitzpatrick (aka "Fitz")
Senior Software Engineer, SOA-P
JBoss by Red Hat

----- Original Message -----
From: "Max Rydahl Andersen" <max.andersen@redhat.com>
To: "Brian Fitzpatrick" <bfitzpat@redhat.com>
Cc: "Rob Stryker" <rstryker@redhat.com>, jbosstools-dev@lists.jboss.org
Sent: Tuesday, October 4, 2011 8:18:20 AM
Subject: Re: [jbosstools-dev] Couple-o-things re: JBDS 4.1.1 and JBDS 5 test failures with org.jboss.tools.esb.core.test

i'm concerned about what is going on here. This code is ancient (1-2+ years old) is it not ?

What changed ?

About the specifics then I believe any calls out to faceted framework during startup code is dangerous since the faceted framework is probably not fully started yet.

/max

On Oct 4, 2011, at 15:52, Brian Fitzpatrick wrote:

Rob did you apply the patch just in trunk or in 3.2.x as well?

And if you can suggest how to "have esb also fire the addition as a job" I can look into fixing that.

_______________________________
Brian Fitzpatrick (aka "Fitz")
Senior Software Engineer, SOA-P
JBoss by Red Hat

----- Original Message -----
From: "Rob Stryker" <rstryker@redhat.com>
To: akazakov@exadel.com
Cc: jbosstools-dev@lists.jboss.org
Sent: Tuesday, October 4, 2011 1:34:35 AM
Subject: Re: [jbosstools-dev] Couple-o-things re: JBDS 4.1.1 and JBDS 5 test failures with org.jboss.tools.esb.core.test


Just got back from vacation and didn't even see this one. :) 

I've applied your patch as it's not important for me to add the listener in the start method. I suspect firing off the ESB extension addition in a job would also be ok... The Extension thing would be better handled as an extension point, I'm sure, but until we can get around to fixing that, I think we're out of luck. 

If you think having the esb also fire the addition as a job would help, I can do that :) 

What do you think? 

On 10/04/2011 02:45 PM, Alexey Kazakov wrote: 

Rob, I'm still hopping you will take a look at my patch for JBossAS attached to https://issues.jboss.org/browse/JBIDE-9802 and maybe will suggest some fix for ESB too. 
:) 
Though I'm not sure these test failures are related to a deadlock I got in JBIDE-9802 , IMHO it's a blocker and we need to fix it. 

On 10/03/2011 11:22 PM, Nick Boldt wrote:JBIDE-9802 

Caused by: java.lang.NullPointerException at
org.eclipse.wst.common.project.facet.core.ProjectFacetsManager.isProjectFacetDefined(ProjectFacetsManager.java:62)
Can you check if the ProjectFacetsManager is defined and not null before 
calling it?

Is this a bug in o.e.wst?

Nick


On 10/03/2011 05:18 PM, Brian Fitzpatrick wrote: 

Hey Nick et al...

I believe that the issues Alexey has raised with JBIDE-9802 is what's causing the ESB core test failures Nick and I have been trying to track down.

I'm getting a ton of these errors (stack trace below) when I run the JUnit tests for ESB, which seems to be a related issue.

How do we fix the issue in JBIDE-9802 so we can get past the JBIDE-9802 issue and the test failures?

--Fitz

!ENTRY org.eclipse.osgi 4 0 2011-10-03 11:35:25.361
!MESSAGE An error occurred while automatically activating bundle org.jboss.tools.esb.project.core (490).
!STACK 0
org.osgi.framework.BundleException: Exception in org.jboss.tools.esb.core.ESBProjectCorePlugin.start() of bundle org.jboss.tools.esb.project.core.
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
	at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
	at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338)
	at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197)
	at org.eclipse.wst.common.project.facet.core.util.internal.Versionable.getVersionComparator(Versionable.java:153)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.calculateVersionComparisonTables(FacetedProjectFrameworkImpl.java:1658)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.readMetadata(FacetedProjectFrameworkImpl.java:1386)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.<init>(FacetedProjectFrameworkImpl.java:188)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.getInstance(FacetedProjectFrameworkImpl.java:211)
	at org.eclipse.wst.common.project.facet.core.ProjectFacetsManager.<clinit>(ProjectFacetsManager.java:37)
	at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.findFactoryForProject(ComponentImplManager.java:130)
	at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.createComponent(ComponentImplManager.java:213)
	at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.createComponent(ComponentImplManager.java:203)
	at org.eclipse.wst.common.componentcore.ComponentCore.createComponent(ComponentCore.java:64)
	at org.jboss.tools.common.model.util.EclipseResourceUtil.getFirstWebContentResource(EclipseResourceUtil.java:441)
	at org.jboss.tools.common.model.util.EclipseResourceUtil.createObjectForResource(EclipseResourceUtil.java:378)
	at org.jboss.tools.esb.core.test.ESBModelTest.getFileObject(ESBModelTest.java:526)
	at org.jboss.tools.esb.core.test.ESBModelTest.testListener(ESBModelTest.java:63)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:124)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at org.codehaus.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:75)
	at org.codehaus.tycho.surefire.osgibooter.AbstractUITestApplication$1.run(AbstractUITestApplication.java:25)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.codehaus.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:21)
	at org.codehaus.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:109)
	at org.codehaus.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:27)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Caused by: java.lang.NullPointerException
	at org.eclipse.wst.common.project.facet.core.ProjectFacetsManager.isProjectFacetDefined(ProjectFacetsManager.java:62)
	at org.eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities.addDefaultExtension(VirtualReferenceUtilities.java:44)
	at org.jboss.tools.esb.core.ESBProjectCorePlugin.start(ESBProjectCorePlugin.java:47)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
	... 80 more
Root exception:
java.lang.NullPointerException
	at org.eclipse.wst.common.project.facet.core.ProjectFacetsManager.isProjectFacetDefined(ProjectFacetsManager.java:62)
	at org.eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities.addDefaultExtension(VirtualReferenceUtilities.java:44)
	at org.jboss.tools.esb.core.ESBProjectCorePlugin.start(ESBProjectCorePlugin.java:47)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
	at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
	at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338)
	at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197)
	at org.eclipse.wst.common.project.facet.core.util.internal.Versionable.getVersionComparator(Versionable.java:153)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.calculateVersionComparisonTables(FacetedProjectFrameworkImpl.java:1658)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.readMetadata(FacetedProjectFrameworkImpl.java:1386)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.<init>(FacetedProjectFrameworkImpl.java:188)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectFrameworkImpl.getInstance(FacetedProjectFrameworkImpl.java:211)
	at org.eclipse.wst.common.project.facet.core.ProjectFacetsManager.<clinit>(ProjectFacetsManager.java:37)
	at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.findFactoryForProject(ComponentImplManager.java:130)
	at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.createComponent(ComponentImplManager.java:213)
	at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.createComponent(ComponentImplManager.java:203)
	at org.eclipse.wst.common.componentcore.ComponentCore.createComponent(ComponentCore.java:64)
	at org.jboss.tools.common.model.util.EclipseResourceUtil.getFirstWebContentResource(EclipseResourceUtil.java:441)
	at org.jboss.tools.common.model.util.EclipseResourceUtil.createObjectForResource(EclipseResourceUtil.java:378)
	at org.jboss.tools.esb.core.test.ESBModelTest.getFileObject(ESBModelTest.java:526)
	at org.jboss.tools.esb.core.test.ESBModelTest.testListener(ESBModelTest.java:63)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:124)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
	at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
	at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
	at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
	at org.codehaus.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:75)
	at org.codehaus.tycho.surefire.osgibooter.AbstractUITestApplication$1.run(AbstractUITestApplication.java:25)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.codehaus.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:21)
	at org.codehaus.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:109)
	at org.codehaus.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:27)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1384)


_______________________________
Brian Fitzpatrick (aka "Fitz")
Senior Software Engineer, SOA-P
JBoss by Red Hat 


_______________________________________________
jbosstools-dev mailing list
jbosstools-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
_______________________________________________
jbosstools-dev mailing list
jbosstools-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
/max
http://about.me/maxandersen



_______________________________________________
jbosstools-dev mailing list
jbosstools-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev