apache / apache/grails-intellij-plugin

IndexNotReadyException on attempt to view domain class dependencies diagram while indexing

Open
#211 0 comments 0 reactions 0 assignees View on GitHub
bug imported-from-youtrack
Dominant language
Java
Stars
17
Forks
4
Avg merge
5d 15h
Merged PRs (30d)
4

Description

To reproduce;

1. Open Grails project (grails library is not bundled to IDE)
2. Open domain class in editor, click "Configure Grails SDK", specify grails library (used grails-2.5.0)
3. Click "Domain class dependencies" tab while indexing is still in progress => exception:
(Diagram view apppears empty after indexing is finished, restart helps)

Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation

com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation

```
at com.intellij.util.indexing.FileBasedIndexImpl.a(FileBasedIndexImpl.java:871)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:818)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:801)
at com.intellij.psi.stubs.StubIndexImpl.a(StubIndexImpl.java:269)
at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:250)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:145)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:135)
at com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.get(JavaFullClassNameIndex.java:48)
at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.a(JavaFileManagerImpl.java:122)
at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.findClass(JavaFileManagerImpl.java:115)
at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:54)
at com.intellij.psi.impl.JavaPsiFacadeImpl.a(JavaPsiFacadeImpl.java:121)
at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:98)
at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager.findClassWithCache(GroovyPsiManager.java:142)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil.getExtendsListTypes(GrClassImplUtil.java:129)
at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionImpl$1.compute(GrTypeDefinitionImpl.java:284)
at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:131)
at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:48)
at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:83)
at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionImpl.getExtendsListTypes(GrTypeDefinitionImpl.java:281)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil.getSuperTypes(GrClassImplUtil.java:204)
at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionImpl.getSuperTypes(GrTypeDefinitionImpl.java:327)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil.getSupers(GrClassImplUtil.java:274)
at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionImpl.getSupers(GrTypeDefinitionImpl.java:321)
at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.processCyclicDependence(CollectClassMembersUtil.java:107)
at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.isCyclicDependence(CollectClassMembersUtil.java:97)
at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.getCachedMembers(CollectClassMembersUtil.java:86)
at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.getAllInnerClasses(CollectClassMembersUtil.java:116)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil$4.compute(GrClassImplUtil.java:462)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil$4.compute(GrClassImplUtil.java:458)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil.getInnerClassesForResolve(GrClassImplUtil.java:458)
at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil.processDeclarations(GrClassImplUtil.java:374)
at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionImpl.processDeclarations(GrTypeDefinitionImpl.java:227)
at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.doProcessDeclarations(ResolveUtil.java:161)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey.collectScopeDeclarations(DeclarationCacheKey.java:136)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey.access$000(DeclarationCacheKey.java:42)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey$2.process(DeclarationCacheKey.java:125)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey$2.process(DeclarationCacheKey.java:122)
at com.intellij.psi.util.PsiTreeUtil.treeWalkUp(PsiTreeUtil.java:1009)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey.collectDeclarations(DeclarationCacheKey.java:122)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey.getAllDeclarations(DeclarationCacheKey.java:144)
at org.jetbrains.plugins.groovy.lang.resolve.DeclarationCacheKey.processCachedDeclarations(DeclarationCacheKey.java:151)
at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.treeWalkUp(ResolveUtil.java:119)
at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.treeWalkUp(ResolveUtil.java:100)
at org.jetbrains.plugins.groovy.lang.psi.impl.types.GrCodeReferenceElementImpl$OurResolver._resolve(GrCodeReferenceElementImpl.java:364)
at org.jetbrains.plugins.groovy.lang.psi.impl.types.GrCodeReferenceElementImpl$OurResolver.resolve(GrCodeReferenceElementImpl.java:283)
at org.jetbrains.plugins.groovy.lang.psi.impl.types.GrCodeReferenceElementImpl$OurResolver.resolve(GrCodeReferenceElementImpl.java:277)
at com.intellij.psi.impl.source.resolve.ResolveCache$3.compute(ResolveCache.java:142)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:139)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:167)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:159)
at org.jetbrains.plugins.groovy.lang.psi.impl.InferenceContext$1.multiResolve(InferenceContext.java:69)
at org.jetbrains.plugins.groovy.lang.psi.impl.types.GrCodeReferenceElementImpl.resolve(GrCodeReferenceElementImpl.java:123)
at org.jetbrains.plugins.groovy.lang.psi.impl.types.GrCodeReferenceElementImpl.getCanonicalText(GrCodeReferenceElementImpl.java:176)
at org.jetbrains.plugins.groovy.lang.psi.impl.GrClassReferenceType.getCanonicalText(GrClassReferenceType.java:132)
at org.jetbrains.plugins.grails.references.domain.DomainClassUtils.buildSourceToOutEdgesMapByFields(DomainClassUtils.java:220)
at org.jetbrains.plugins.grails.references.domain.DomainClassUtils.buildMapForTypeDefinition(DomainClassUtils.java:161)
at org.jetbrains.plugins.grails.references.domain.DomainClassUtils.buildNodesAndEdges(DomainClassUtils.java:139)
at org.jetbrains.plugins.grails.perspectives.graph.DomainClassesRelationsDataModel.updateDataModel(DomainClassesRelationsDataModel.java:73)
at org.jetbrains.plugins.grails.perspectives.graph.DomainClassesRelationsDataModel.refreshDataModel(DomainClassesRelationsDataModel.java:69)
at org.jetbrains.plugins.grails.perspectives.graph.DomainClassesRelationsDataModel.getNodes(DomainClassesRelationsDataModel.java:62)
at com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.createDataModel(GraphBuilderImpl.java:390)
at com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.buildModel(GraphBuilderImpl.java:384)
at com.intellij.openapi.graph.impl.builder.GraphBuilderImpl.initialize(GraphBuilderImpl.java:98)
at org.jetbrains.plugins.grails.perspectives.PerspectiveFileEditorComponent.(PerspectiveFileEditorComponent.java:86)
at org.jetbrains.plugins.grails.perspectives.DomainClassesRelationsEditor.getDependenciesComponent(DomainClassesRelationsEditor.java:84)
at org.jetbrains.plugins.grails.perspectives.DomainClassesRelationsEditor.createCustomComponent(DomainClassesRelationsEditor.java:61)
at com.intellij.util.xml.ui.PerspectiveFileEditor.ensureInitialized(PerspectiveFileEditor.java:231)
at com.intellij.util.xml.ui.PerspectiveFileEditor.selectNotify(PerspectiveFileEditor.java:217)
at com.intellij.openapi.fileEditor.impl.EditorComposite$1$1.run(EditorComposite.java:145)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:124)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
at com.intellij.openapi.fileEditor.impl.EditorComposite$1.selectionChanged(EditorComposite.java:151)
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:116)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:368)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:355)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:341)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:334)
at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:42)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:223)
at com.sun.proxy.$Proxy94.selectionChanged(Unknown Source)
at com.intellij.openapi.fileEditor.impl.EditorComposite$3.run(EditorComposite.java:224)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$14$1.run(FileEditorManagerImpl.java:1042)
at com.intellij.openapi.wm.impl.FocusManagerImpl.a(FocusManagerImpl.java:672)
at com.intellij.openapi.wm.impl.FocusManagerImpl.g(FocusManagerImpl.java:656)
at com.intellij.openapi.wm.impl.FocusManagerImpl.e(FocusManagerImpl.java:626)
at com.intellij.openapi.wm.impl.FocusManagerImpl.access$200(FocusManagerImpl.java:60)
at com.intellij.openapi.wm.impl.FocusManagerImpl$11.run(FocusManagerImpl.java:522)
at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2284)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:500)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:495)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:64)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$14.run(FileEditorManagerImpl.java:1039)
at com.intellij.openapi.util.BusyObject$Impl$Simple.execute(BusyObject.java:123)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.notifyPublisher(FileEditorManagerImpl.java:1035)
at com.intellij.openapi.fileEditor.impl.EditorComposite.a(EditorComposite.java:219)
at com.intellij.openapi.fileEditor.impl.EditorComposite.access$600(EditorComposite.java:65)
at com.intellij.openapi.fileEditor.impl.EditorComposite$MyChangeListener.stateChanged(EditorComposite.java:390)
at com.intellij.ui.JBTabsPaneImpl.a(JBTabsPaneImpl.java:81)
at com.intellij.ui.JBTabsPaneImpl.access$100(JBTabsPaneImpl.java:36)
at com.intellij.ui.JBTabsPaneImpl$2.selectionChanged(JBTabsPaneImpl.java:67)
at com.intellij.ui.tabs.impl.JBTabsImpl.fireSelectionChanged(JBTabsImpl.java:962)
at com.intellij.ui.tabs.impl.JBTabsImpl.executeSelectionChange(JBTabsImpl.java:915)
at com.intellij.ui.tabs.impl.JBTabsImpl._setSelected(JBTabsImpl.java:879)
at com.intellij.ui.tabs.impl.JBTabsImpl.select(JBTabsImpl.java:861)
at com.intellij.ui.tabs.impl.TabLabel$1.mousePressed(TabLabel.java:89)
at java.awt.Component.processMouseEvent(Component.java:6522)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4530)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:872)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:657)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:396)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
```

---

*Imported from [IDEA-143190](https://youtrack.jetbrains.com/issue/IDEA-143190) · Type: Bug · Votes: 0*
*Comments, attachments, dates and reporter are not part of the export — follow the link above for the full history.*

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at org.jetbrains.plugins.grails.perspectives.graph.DomainClassesRelationsDataModel and DomainClassUtils, following the stack into the domain-class dependencies editor. Review the IndexNotReadyException documentation and the lookup path used while indexing is active. Done means opening the dependency diagram during indexing no longer raises the exception and the diagram is usable after indexing finishes.

Written by the indexing model from the issue text.

Assessment

Tech stack
groovy, java
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
67/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.