[jbosstools-issues] [JBoss JIRA] (JBIDE-10808) Illegal State exception when deleting project

Viacheslav Kabanovich (JIRA) jira-events at lists.jboss.org
Tue Feb 7 19:56:48 EST 2012


    [ https://issues.jboss.org/browse/JBIDE-10808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12664936#comment-12664936 ] 

Viacheslav Kabanovich commented on JBIDE-10808:
-----------------------------------------------

Exception occures during refresh of Project Explorer, if refresh of the project node started before the project is removed, and refresh of web descriptor child node started after the project is removed. 

JEE5ModelProvider.getModelResource() throws exception, and JEE5ContentProvider.getCachedContentProvider() catches it and ignores... but only if content provider for that project was already created. It is easy to reproduce in debugger this exception with a cached content provider, but the exception is not logged in this case. On event PRE_DELETE project, its content provider is removed from the cache, so that if tree view refresh is running, it can invoke creating a new content provider. This code checks project.isAccessible(), but obviously project becomes inaccessible after that but before JEE5ModelProvider.getModelResource() is called. 

Trying to reproduce Illegal State exception, at one moment I caught a failure in JEE5ContentProvider.getCachedModelProvider() (see npe.txt), which had no Jboss Tool in stack trace, and so proved to be UpStream problem.

We can prevent AbstractSeamContentProvider from triggering Project Explorer refresh when a project is deleted, that is processed by Project Explorer's own resource listener.
                
> Illegal State exception when deleting project
> ---------------------------------------------
>
>                 Key: JBIDE-10808
>                 URL: https://issues.jboss.org/browse/JBIDE-10808
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: Seam 2
>    Affects Versions: 3.3.0.Beta1
>            Reporter: Rastislav Wagner
>            Assignee: Viacheslav Kabanovich
>             Fix For: 3.3.0.Beta1
>
>         Attachments: npe.txt
>
>
> Message: An exception occurred invoking extension: org.eclipse.jst.jee.ui.web for object P/DynWebP
> Stack Trace: java.lang.IllegalStateException: The project <P/DynWebP> is not accessible.
> 	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelResource(JEE5ModelProvider.java:148)
> 	at org.eclipse.jst.jee.model.internal.Web25ModelProvider.getModelObject(Web25ModelProvider.java:44)
> 	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelObject(JEE5ModelProvider.java:217)
> 	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.loadProviders(AbstractMergedModelProvider.java:261)
> 	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.access$2(AbstractMergedModelProvider.java:255)
> 	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider$LoadModelsWorkspaceRunnable.run(AbstractMergedModelProvider.java:278)
> 	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
> 	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.loadModel(AbstractMergedModelProvider.java:249)
> 	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.getMergedModel(AbstractMergedModelProvider.java:219)
> 	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.getModelObject(AbstractMergedModelProvider.java:139)
> 	at org.eclipse.jst.jee.ui.internal.navigator.Web25ContentProvider.getNewContentProviderInstance(Web25ContentProvider.java:69)
> 	at org.eclipse.jst.jee.ui.internal.navigator.JEE5ContentProvider.getCachedContentProvider(JEE5ContentProvider.java:92)
> 	at org.eclipse.jst.jee.ui.internal.navigator.Web25ContentProvider.getChildren(Web25ContentProvider.java:35)
> 	at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:96)
> 	at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:275)
> 	at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:94)
> 	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$1.run(NavigatorContentServiceContentProvider.java:152)
> 	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> 	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.internalGetChildren(NavigatorContentServiceContentProvider.java:139)
> 	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.getChildren(NavigatorContentServiceContentProvider.java:125)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1352)
> 	at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:391)
> 	at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:917)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:605)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2620)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1908)
> 	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:721)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1915)
> 	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:721)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1883)
> 	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1840)
> 	at org.eclipse.ui.navigator.CommonViewer.internalRefresh(CommonViewer.java:561)
> 	at org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1535)
> 	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1443)
> 	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:403)
> 	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1404)
> 	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1533)
> 	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:548)
> 	at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:353)
> 	at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:510)
> 	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1465)
> 	at org.jboss.tools.seam.ui.views.AbstractSeamContentProvider$3.run(AbstractSeamContentProvider.java:233)
> 	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
> 	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
> 	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
> 	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:173)
> 	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
> 	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.run(RefactoringWizardDialog2.java:331)
> 	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalPerformFinish(RefactoringWizard.java:605)
> 	at org.eclipse.ltk.ui.refactoring.UserInputWizardPage.performFinish(UserInputWizardPage.java:153)
> 	at org.eclipse.ltk.ui.refactoring.resource.DeleteResourcesWizard$DeleteResourcesRefactoringConfigurationPage.performFinish(DeleteResourcesWizard.java:151)
> 	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.performFinish(RefactoringWizard.java:678)
> 	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.okPressed(RefactoringWizardDialog2.java:455)
> 	at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:472)
> 	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
> 	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
> 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
> 	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
> 	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
> 	at org.eclipse.jface.window.Window.open(Window.java:801)
> 	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:181)
> 	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
> 	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:193)
> 	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:116)
> 	at org.eclipse.ltk.internal.ui.refactoring.actions.DeleteResourcesHandler.execute(DeleteResourcesHandler.java:40)
> 	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
> 	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
> 	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
> 	at org.eclipse.ui.internal.handlers.HandlerService.executeCommandInContext(HandlerService.java:270)
> 	at org.eclipse.ui.internal.ide.actions.LTKLauncher.runCommand(LTKLauncher.java:95)
> 	at org.eclipse.ui.internal.ide.actions.LTKLauncher.openDeleteWizard(LTKLauncher.java:47)
> 	at org.eclipse.ui.actions.DeleteResourceAction.run(DeleteResourceAction.java:474)
> 	at org.eclipse.jdt.internal.ui.refactoring.reorg.DeleteAction.run(DeleteAction.java:165)
> 	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275)
> 	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)
> 	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
> 	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
> 	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
> 	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
> 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
> 	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
> 	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
> 	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
> 	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
> 	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
> 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> 	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
> 	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> 	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
> 	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:344)
> 	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:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:616)
> 	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
> 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
> 	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
> 	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jbosstools-issues mailing list