Community
Participate
Working Groups
Bug for fixing this in WTP 3.2.4p +++ This bug was initially created as a clone of Bug #362238 +++ An adopter found a deadlock during the autobuild after the projects were imported from a repository. These are the partial stack traces: 3XMTHREADINFO "Worker-28" J9VMThread:0x5D37B200, j9thread_t:0x4EBDE03C, java/lang/Thread:0x0AB48490, state:CW, prio=5 3XMTHREADINFO1 (native thread ID:0xEB8, native priority:0x5, native policy:UNKNOWN) 3XMTHREADINFO3 Java callstack: 4XESTACKTRACE at java/lang/Object.wait(Native Method) 4XESTACKTRACE at java/lang/Object.wait(Object.java:167(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.beginModification(FacetedProject.java:1385) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.access$0(FacetedProject.java:1366) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject$5.run(FacetedProject.java:1096) 4XESTACKTRACE at org/eclipse/core/internal/resources/Workspace.run(Workspace.java:1975(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.mergeChanges(FacetedProject.java:1110) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020) ............ 3XMTHREADINFO "Worker-25" J9VMThread:0x5D2C2800, j9thread_t:0x4EBFBD18, java/lang/Thread:0x09EB6750, state:CW, prio=5 3XMTHREADINFO1 (native thread ID:0x8BC, native priority:0x5, native policy:UNKNOWN) 3XMTHREADINFO3 Java callstack: 4XESTACKTRACE at java/lang/Object.wait(Native Method) 4XESTACKTRACE at java/lang/Object.wait(Object.java:196(Compiled Code)) 4XESTACKTRACE at org/eclipse/core/internal/jobs/ThreadJob.waitForRun(ThreadJob.java:269(Compiled Code)) 4XESTACKTRACE at org/eclipse/core/internal/jobs/ThreadJob.joinRun(ThreadJob.java:199) 4XESTACKTRACE at org/eclipse/core/internal/jobs/JobManager.yieldRule(JobManager.java:1398) 4XESTACKTRACE at org/eclipse/core/internal/jobs/InternalJob.yieldRule(InternalJob.java:600(Compiled Code)) 4XESTACKTRACE at org/eclipse/core/runtime/jobs/Job.yieldRule(Job.java:709(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.waitForAllUpdates(DependencyGraphImpl.java:671(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.getReferencingComponents(DependencyGraphImpl.java:126(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.getReferencingComponents(DependencyGraphImpl.java:116(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.getReferencingComponents(VirtualComponent.java:577(Compiled Code)) 4XESTACKTRACE at org/eclipse/jst/j2ee/project/EarUtilities.getReferencingEARProjects(EarUtilities.java:274(Compiled Code)) 4XESTACKTRACE at org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.calculateManifestReferences(J2EEModuleVirtualComponent.java:364(Compiled Code)) 4XESTACKTRACE at org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.cacheManifestReferences(J2EEModuleVirtualComponent.java:354) 4XESTACKTRACE at org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:170) 4XESTACKTRACE at org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:208) 4XESTACKTRACE at org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:201) 4XESTACKTRACE at org/eclipse/jst/j2ee/project/facet/J2EEFacetRuntimeChangedDelegate.execute(J2EEFacetRuntimeChangedDelegate.java:95) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/events/internal/LegacyEventHandlerAdapter.handleEvent(LegacyEventHandlerAdapter.java:100) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/events/internal/ProjectListenerRegistry.notifyListeners(ProjectListenerRegistry.java:76) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.notifyListeners(FacetedProject.java:1328) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.setTargetedRuntimesInternal(FacetedProject.java:751) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.access$4(FacetedProject.java:664) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject$3.run(FacetedProject.java:646) 4XESTACKTRACE at org/eclipse/core/internal/resources/Workspace.run(Workspace.java:1975(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.setTargetedRuntimes(FacetedProject.java:656) 4XESTACKTRACE at org/eclipse/wst/common/project/facet/core/internal/FacetedProject.setRuntime(FacetedProject.java:583) 4XESTACKTRACE at org/eclipse/jst/j2ee/project/facet/J2EEFacetRuntimeChangedDelegate.updateProjectRuntime(J2EEFacetRuntimeChangedDelegate.java:266) 4XESTACKTRACE at org/eclipse/jst/j2ee/project/facet/J2EEFacetRuntimeChangedDelegate.updateProjectRuntime(J2EEFacetRuntimeChangedDelegate.java:286) 4XESTACKTRACE at org/eclipse/jst/j2ee/project/facet/EarFacetRuntimeHandler.updateModuleProjectRuntime(EarFacetRuntimeHandler.java:58) 4XESTACKTRACE at org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.updateModuleRuntimes(AddComponentToEnterpriseApplicationOp.java:336) 4XESTACKTRACE at org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.execute(AddComponentToEnterpriseApplicationOp.java:85) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl$1.run(DataModelPausibleOperationImpl.java:385) 4XESTACKTRACE at org/eclipse/core/internal/resources/Workspace.run(Workspace.java:1975(Compiled Code)) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:410) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:360) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl.doExecute(DataModelPausibleOperationImpl.java:247) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl.executeImpl(DataModelPausibleOperationImpl.java:219) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl.cacheThreadAndContinue(DataModelPausibleOperationImpl.java:89) 4XESTACKTRACE at org/eclipse/wst/common/frameworks/internal/datamodel/DataModelPausibleOperationImpl.execute(DataModelPausibleOperationImpl.java:207) The problem is that worker-25 (autobuild job) initiates a modification in the faceted project, and later it tries to get the referencing EAR projects, which in turn calls the DependencyGraphImpl, which waits for all the updates, which calls to yieldRule, but does not releases the internal lock on the faceted project. Meanwhile, Worker-28, which is a Faceted Project Listener, tries to commit the changes to the faceted project, but because worker-25 already has the internal lock, it will wait until worker-25 finishes.
Created attachment 206135 [details] Proposed patch based on plugin tagged with R3_2_4
approved
Committed to R3_2_4_patches