This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 177188 - deadlock while creating new maven web app
Summary: deadlock while creating new maven web app
Status: VERIFIED FIXED
Alias: None
Product: projects
Classification: Unclassified
Component: Maven (show other bugs)
Version: 6.x
Hardware: PC Linux
: P1 normal (vote)
Assignee: Milos Kleint
URL:
Keywords: RANDOM, TEST
Depends on:
Blocks:
 
Reported: 2009-11-19 05:06 UTC by Lukas Jungmann
Modified: 2009-12-02 07:50 UTC (History)
3 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lukas Jungmann 2009-11-19 05:06:16 UTC
lukas@lukas-nb-ubuntu:~/main$ hg tip
changeset:   153898:bca87cd531b0

IDE is running on JDK1.6.0_18


-create a new javaee6 maven web app

=>

Found one Java-level deadlock:
=============================
"Parsing & Indexing Loop (091119-bca87cd531b0)":
  waiting to lock monitor 0x8db43cc4 (object 0xa2ddd9c8, a org.netbeans.modules.maven.classpath.BootClassPathImpl),
  which is held by "MavenJaxWsSupportProvider.WS_REQUEST_PROCESSOR"
"MavenJaxWsSupportProvider.WS_REQUEST_PROCESSOR":
  waiting to lock monitor 0x915eb1ec (object 0xa2ddda88, a org.netbeans.modules.maven.classpath.EndorsedClassPathImpl),
  which is held by "Maven projects Binary Downloads"
"Maven projects Binary Downloads":
  waiting to lock monitor 0x8db43cc4 (object 0xa2ddd9c8, a org.netbeans.modules.maven.classpath.BootClassPathImpl),
  which is held by "MavenJaxWsSupportProvider.WS_REQUEST_PROCESSOR"

Java stack information for the threads listed above:
===================================================
"Parsing & Indexing Loop (091119-bca87cd531b0)":
        at org.netbeans.modules.maven.classpath.BootClassPathImpl.findActivePlatform(BootClassPathImpl.java:113)
        - waiting to lock <0xa2ddd9c8> (a org.netbeans.modules.maven.classpath.BootClassPathImpl)
        at org.netbeans.modules.maven.classpath.ClassPathProviderImpl.getJavaPlatform(ClassPathProviderImpl.java:287)
        at org.netbeans.modules.maven.NbMavenProjectImpl.createSystemPropsForPropertyExpressions(NbMavenProjectImpl.java:338)
        at org.netbeans.modules.maven.api.PluginPropertyUtils.createEvaluator(PluginPropertyUtils.java:650)
        at org.netbeans.modules.maven.api.PluginPropertyUtils.getPluginProperty(PluginPropertyUtils.java:87)
        at org.netbeans.modules.maven.j2ee.web.WebModuleImpl.getContentDirectory(WebModuleImpl.java:321)
        at org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule.getContentDirectory(J2eeModule.java:265)
        at org.netbeans.modules.maven.j2ee.web.CopyOnSave.isInPlace(CopyOnSave.java:126)
        at org.netbeans.modules.maven.j2ee.web.CopyOnSave.fileDataCreated(CopyOnSave.java:206)
        at org.openide.filesystems.FCLSupport$DispatchEventWrapper.dispatchEventImpl(FCLSupport.java:136)
        at org.openide.filesystems.FCLSupport$DispatchEventWrapper.dispatchEvent(FCLSupport.java:125)
        at org.openide.filesystems.FCLSupport.dispatchEvent(FCLSupport.java:102)
        at org.openide.filesystems.FileObject$ED.dispatch(FileObject.java:1109)
        at org.openide.filesystems.FileSystem$EventDispatcher.run(FileSystem.java:912)
        at org.openide.filesystems.EventControl.dispatchEvent(EventControl.java:79)
        at org.openide.filesystems.FileSystem.dispatchEvent(FileSystem.java:574)
        at org.openide.filesystems.FileObject.dispatchEvent(FileObject.java:526)
        at org.openide.filesystems.FileObject.fireFileDataCreatedEvent(FileObject.java:478)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj.fireFileDataCreatedEvent(BaseFileObj.java:477)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FolderObj.createDataImpl(FolderObj.java:264)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FolderObj$1.call(FolderObj.java:210)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FolderObj$1.call(FolderObj.java:208)
        at org.netbeans.modules.masterfs.filebasedfs.FileBasedFileSystem.runAsInconsistent(FileBasedFileSystem.java:112)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FolderObj.createData(FolderObj.java:213)
        at org.openide.filesystems.FileUtil.createData(FileUtil.java:891)
        at org.netbeans.modules.parsing.impl.indexing.IndexerCache.writeLastKnownIndexers(IndexerCache.java:588)
        at org.netbeans.modules.parsing.impl.indexing.IndexerCache.getData(IndexerCache.java:407)
        - locked <0xa087ace8> (a org.netbeans.modules.parsing.impl.indexing.IndexerCache$1)
        at org.netbeans.modules.parsing.impl.indexing.IndexerCache.getIndexers(IndexerCache.java:119)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Indexers.<init>(RepositoryUpdater.java:3611)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Indexers.load(RepositoryUpdater.java:3594)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$InitialRootsWork.getDone(RepositoryUpdater.java:3160)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:1936)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:3479)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:3421)
        at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:574)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
"MavenJaxWsSupportProvider.WS_REQUEST_PROCESSOR":
        at org.netbeans.modules.maven.classpath.EndorsedClassPathImpl.getResources(EndorsedClassPathImpl.java:85)
        - waiting to lock <0xa2ddda88> (a org.netbeans.modules.maven.classpath.EndorsedClassPathImpl)
        at org.netbeans.modules.maven.classpath.BootClassPathImpl.getResources(BootClassPathImpl.java:88)
        - locked <0xa2ddd9c8> (a org.netbeans.modules.maven.classpath.BootClassPathImpl)
        at org.netbeans.api.java.classpath.ClassPath.entries(ClassPath.java:295)
        at org.netbeans.api.java.source.ClassIndex.createQueriesForRoots(ClassIndex.java:466)
        at org.netbeans.api.java.source.ClassIndex.access$600(ClassIndex.java:92)
        at org.netbeans.api.java.source.ClassIndex$1.run(ClassIndex.java:442)
        - locked <0xa2ddd958> (a org.netbeans.api.java.source.ClassIndex)
        at org.openide.util.Mutex.readAccess(Mutex.java:362)
        at org.netbeans.api.java.source.ClassIndex.reset(ClassIndex.java:423)
        at org.netbeans.api.java.source.ClassIndex.<init>(ClassIndex.java:243)
        at org.netbeans.api.java.source.ClasspathInfo.getClassIndex(ClasspathInfo.java:337)
        - locked <0xa2dde178> (a org.netbeans.api.java.source.ClasspathInfo)
        at org.netbeans.modules.j2ee.metadata.model.api.support.annotation.AnnotationModelHelper.registerPersistentObjectManager(AnnotationModelHelper.java:130)
        at org.netbeans.modules.j2ee.metadata.model.api.support.annotation.AnnotationModelHelper.createPersistentObjectManager(AnnotationModelHelper.java:122)
        - locked <0xa2f00918> (a org.netbeans.modules.j2ee.metadata.model.api.support.annotation.AnnotationModelHelper)
        at org.netbeans.modules.j2ee.dd.impl.webservices.annotation.WebservicesImpl.initialize(WebservicesImpl.java:99)
        at org.netbeans.modules.j2ee.dd.impl.webservices.annotation.WebservicesImpl.create(WebservicesImpl.java:86)
        at org.netbeans.modules.j2ee.dd.impl.webservices.annotation.WebservicesMetadataModelImpl.<init>(WebservicesMetadataModelImpl.java:84)
        at org.netbeans.modules.j2ee.dd.spi.webservices.WebservicesMetadataModelFactory.createMetadataModel(WebservicesMetadataModelFactory.java:57)
        at org.netbeans.modules.maven.j2ee.web.WebModuleImpl.getWebservicesMetadataModel(WebModuleImpl.java:520)
        - locked <0xa2da03a8> (a org.netbeans.modules.maven.j2ee.web.WebModuleImpl)
        at org.netbeans.modules.maven.j2ee.web.WebModuleImpl.getMetadataModel(WebModuleImpl.java:487)
        at org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule.getMetadataModel(J2eeModule.java:288)
        at org.netbeans.modules.maven.jaxws.MavenJAXWSSupportImpl.getWebservicesMetadataModel(MavenJAXWSSupportImpl.java:233)
        at org.netbeans.modules.websvc.jaxws.light.api.JAXWSLightSupport.getWebservicesMetadataModel(JAXWSLightSupport.java:188)
        at org.netbeans.modules.maven.jaxws.MavenJaxWsSupportProvider$2.run(MavenJaxWsSupportProvider.java:94)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:602)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1084)
"Maven projects Binary Downloads":
        at org.netbeans.modules.maven.classpath.BootClassPathImpl.findActivePlatform(BootClassPathImpl.java:113)
        - waiting to lock <0xa2ddd9c8> (a org.netbeans.modules.maven.classpath.BootClassPathImpl)
        at org.netbeans.modules.maven.classpath.ClassPathProviderImpl.getJavaPlatform(ClassPathProviderImpl.java:287)
        at org.netbeans.modules.maven.NbMavenProjectImpl.createSystemPropsForPropertyExpressions(NbMavenProjectImpl.java:338)
        at org.netbeans.modules.maven.api.PluginPropertyUtils.createEvaluator(PluginPropertyUtils.java:650)
        at org.netbeans.modules.maven.api.PluginPropertyUtils.getPluginProperty(PluginPropertyUtils.java:87)
        at org.netbeans.modules.maven.classpath.EndorsedClassPathImpl.getBootClasspath(EndorsedClassPathImpl.java:109)
        at org.netbeans.modules.maven.classpath.EndorsedClassPathImpl.getResources(EndorsedClassPathImpl.java:88)
        - locked <0xa2ddda88> (a org.netbeans.modules.maven.classpath.EndorsedClassPathImpl)
        at org.netbeans.api.java.classpath.ClassPath$SPIListener.propertyChange(ClassPath.java:988)
        at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:188)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
        at org.netbeans.modules.maven.classpath.EndorsedClassPathImpl.resetCache(EndorsedClassPathImpl.java:136)
        at org.netbeans.modules.maven.classpath.BootClassPathImpl.propertyChange(BootClassPathImpl.java:165)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
        at org.netbeans.modules.maven.api.NbMavenProject.doFireReload(NbMavenProject.java:459)
        at org.netbeans.modules.maven.api.NbMavenProject.access$200(NbMavenProject.java:82)
        at org.netbeans.modules.maven.api.NbMavenProject$AccessorImpl.doFireReload(NbMavenProject.java:123)
        at org.netbeans.modules.maven.NbMavenProjectImpl.fireProjectReload(NbMavenProjectImpl.java:541)
        at org.netbeans.modules.maven.api.NbMavenProject.fireProjectReload(NbMavenProject.java:453)
        at org.netbeans.modules.maven.api.NbMavenProject.fireMavenProjectReload(NbMavenProject.java:472)
        at org.netbeans.modules.maven.api.NbMavenProject$1.run(NbMavenProject.java:211)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:602)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1084)

Found 1 deadlock.
Comment 1 Milos Kleint 2009-11-23 09:57:46 UTC
please verify. Might be worth backporting to 6.8
http://hg.netbeans.org/core-main/rev/187790b39c72
Comment 2 Quality Engineering 2009-11-24 19:07:58 UTC
Integrated into 'main-golden', will be available in build *200911241400* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/187790b39c72
User: Milos Kleint <mkleint@netbeans.org>
Log: #177188 unify synchronization lock for both EndorsedCP and BootCP
Comment 3 Lukas Jungmann 2009-11-26 08:17:27 UTC
v in trunk. I agree it's worth to backport this to 6.8 - feel free to do that.

Thanks!
Comment 4 David Simonek 2009-11-27 01:04:56 UTC
review: fix is correct. By unifying the lock between EndorsedClassPathImpl and BootClassPathImpl we assure that sections don't get executed simultaneously waiting on each other, and deadlock is gone.
Comment 5 Antonin Nebuzelsky 2009-11-27 03:14:04 UTC
Reopening per HR process.

Milosi, prepare backport to 6.8. Thanks.
Comment 6 Marian Mirilovic 2009-11-27 03:51:39 UTC
OK, we'll do that for RC2/FCS not for RC1
Comment 7 Milos Kleint 2009-11-27 03:57:15 UTC
Marian, what exactly does that mean? can i integrate today to release68 clone? or do I have to wait for some later "go"?
Comment 8 Marian Mirilovic 2009-11-27 04:08:36 UTC
Yes, you can integrate it today into release68 ... just wanted to stress that this is not a stoper for RC1 that will be released today.
Comment 9 Marian Mirilovic 2009-11-30 04:47:32 UTC
This issue was already fixed in release68 : 
http://hg.netbeans.org/release68/rev/67e1cd9be2ea
... wasn't it ?
Comment 10 Lukas Jungmann 2009-12-02 07:50:01 UTC
v. in 6.8rc2