picimako / terra-support

Adds support for Cerner's Terra UI component and test automation libraries.
https://plugins.jetbrains.com/plugin/15430-terra-support
Apache License 2.0
0 stars 0 forks source link

Exception is thrown when trying to refresh VirtualFiles during wdio tool window event processing #45

Closed picimako closed 3 years ago

picimako commented 3 years ago

Steps to reproduce

The following exception is thrown from com.picimako.terra.wdio.toolwindow.TerraWdioTreeModel#buildTree:

java.lang.Throwable: Assertion failed: Changes to PSI are not allowed inside event processing
        at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:195)
        at com.intellij.psi.impl.PsiManagerImpl.fireEvent(PsiManagerImpl.java:333)
        at com.intellij.psi.impl.PsiManagerImpl.beforeChildRemoval(PsiManagerImpl.java:212)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.lambda$beforeFileDeletion$1(PsiVFSListener.java:197)
        at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1000)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.beforeFileDeletion(PsiVFSListener.java:190)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.before(PsiVFSListener.java:705)
        at com.intellij.psi.impl.file.impl.PsiVFSListener$1.before(PsiVFSListener.java:127)
        at jdk.internal.reflect.GeneratedMethodAccessor103.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:652)
        at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:426)
        at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:401)
        at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:383)
        at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
        at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:189)
        at com.sun.proxy.$Proxy115.before(Unknown Source)
        at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.fireBeforeEvents(PersistentFSImpl.java:1084)
        at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.applyMultipleEvents(PersistentFSImpl.java:1074)
        at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.processEvents(PersistentFSImpl.java:1063)
        at com.intellij.openapi.vfs.newvfs.AsyncEventSupport.processEventsFromRefresh(AsyncEventSupport.java:130)
        at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.fireEventsInWriteAction(RefreshSessionImpl.java:226)
        at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.lambda$fireEvents$1(RefreshSessionImpl.java:204)
        at com.intellij.openapi.application.impl.ApplicationImpl.lambda$runEdtProgressWriteAction$12(ApplicationImpl.java:964)
        at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:658)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:610)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:65)
        at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165)
        at com.intellij.openapi.progress.util.PotemkinProgress.runInSwingThread(PotemkinProgress.java:191)
        at com.intellij.openapi.application.impl.ApplicationImpl.lambda$runEdtProgressWriteAction$13(ApplicationImpl.java:964)
        at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithClass(ApplicationImpl.java:988)
        at com.intellij.openapi.application.impl.ApplicationImpl.runEdtProgressWriteAction(ApplicationImpl.java:962)
        at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithNonCancellableProgressInDispatchThread(ApplicationImpl.java:943)
        at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.lambda$fireEvents$2(RefreshSessionImpl.java:198)
        at com.intellij.openapi.application.WriteAction.run(WriteAction.java:102)
        at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.fireEvents(RefreshSessionImpl.java:197)
        at com.intellij.openapi.vfs.newvfs.RefreshQueueImpl.execute(RefreshQueueImpl.java:54)
        at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.launch(RefreshSessionImpl.java:114)
        at com.intellij.openapi.vfs.newvfs.RefreshQueue.refresh(RefreshQueue.java:42)
        at com.intellij.openapi.vfs.newvfs.RefreshQueue.refresh(RefreshQueue.java:28)
        at com.intellij.openapi.vfs.newvfs.NewVirtualFile.refresh(NewVirtualFile.java:62)
        at com.intellij.openapi.vfs.VirtualFile.refresh(VirtualFile.java:672)
        at com.picimako.terra.wdio.toolwindow.TerraWdioTreeModel.buildTree(TerraWdioTreeModel.java:142)
        at com.picimako.terra.wdio.toolwindow.TerraWdioExternalFileAndFolderChangeListener.after(TerraWdioExternalFileAndFolderChangeListener.java:72)
        at jdk.internal.reflect.GeneratedMethodAccessor104.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:652)
        at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:426)
        at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:401)
        at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:383)
        at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
        at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:182)
        at com.sun.proxy.$Proxy41.modificationCountChanged(Unknown Source)
        at com.intellij.psi.impl.PsiModificationTrackerImpl.fireEvent(PsiModificationTrackerImpl.java:81)
        at com.intellij.psi.impl.PsiModificationTrackerImpl.incCountersInner(PsiModificationTrackerImpl.java:86)
        at com.intellij.psi.impl.PsiModificationTrackerImpl.treeChanged(PsiModificationTrackerImpl.java:96)
        at com.intellij.psi.impl.PsiManagerImpl.fireEvent(PsiManagerImpl.java:338)
        at com.intellij.psi.impl.PsiManagerImpl.childRemoved(PsiManagerImpl.java:271)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.lambda$filesDeleted$2(PsiVFSListener.java:237)
        at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1000)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.filesDeleted(PsiVFSListener.java:233)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.lambda$fireForGrouped$9(PsiVFSListener.java:735)
        at com.intellij.psi.impl.DebugUtil.performPsiModification(DebugUtil.java:567)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.fireForGrouped(PsiVFSListener.java:735)
        at one.util.streamex.CollapseSpliterator.accept(CollapseSpliterator.java:150)
        at one.util.streamex.CollapseSpliterator.forEachRemaining(CollapseSpliterator.java:140)
        at one.util.streamex.AbstractStreamEx.forEach(AbstractStreamEx.java:306)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.groupAndFire(PsiVFSListener.java:729)
        at com.intellij.psi.impl.file.impl.PsiVFSListener.after(PsiVFSListener.java:718)
        at com.intellij.psi.impl.file.impl.PsiVFSListener$1.after(PsiVFSListener.java:152)
        at jdk.internal.reflect.GeneratedMethodAccessor104.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:652)
        at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:426)
        at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:401)
        at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:383)
        at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
        at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:189)
        at com.sun.proxy.$Proxy115.after(Unknown Source)
        at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.fireAfterEvents(PersistentFSImpl.java:1091)
        at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.processEvent(PersistentFSImpl.java:781)
        at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.deleteFile(PersistentFSImpl.java:521)
        at com.intellij.openapi.vfs.newvfs.impl.VirtualFileSystemEntry.delete(VirtualFileSystemEntry.java:260)
        at com.intellij.psi.impl.file.PsiDirectoryImpl.delete(PsiDirectoryImpl.java:486)
        at com.intellij.ide.util.DeleteHandler.lambda$doDeleteFiles$5(DeleteHandler.java:318)
        at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1000)
        at com.intellij.ide.util.DeleteHandler.doDeleteFiles(DeleteHandler.java:315)
        at com.intellij.ide.util.DeleteHandler.lambda$deleteInCommand$0(DeleteHandler.java:208)
        at com.intellij.openapi.fileEditor.impl.NonProjectFileWritingAccessProvider.disableChecksDuring(NonProjectFileWritingAccessProvider.java:176)
        at com.intellij.ide.util.DeleteHandler.lambda$deleteInCommand$1(DeleteHandler.java:195)
        at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:220)
        at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:177)
        at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:167)
        at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:153)
        at com.intellij.ide.util.DeleteHandler.deleteInCommand(DeleteHandler.java:195)
        at com.intellij.ide.util.DeleteHandler.deletePsiElement(DeleteHandler.java:180)
        at com.intellij.ide.util.DeleteHandler.deletePsiElement(DeleteHandler.java:108)
        at com.intellij.ide.projectView.impl.ProjectViewDeleteElementProvider.deleteElement(ProjectViewDeleteElementProvider.java:53)
        at com.intellij.ide.actions.DeleteAction.actionPerformed(DeleteAction.java:37)
        at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:281)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:615)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$processAction$3(IdeKeyEventDispatcher.java:675)
        at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:95)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:674)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:625)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.java:522)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:476)
        at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:225)
        at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:892)
        at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:837)
        at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:454)
        at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:773)
        at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:453)
        at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
        at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:507)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Technical notes

Versions affected

<= 0.4.0

Out of scope

picimako commented 3 years ago

This will be fixed by #46.