IndexNotReadyException in DumbService.runReadActionInSmartMode

As part of a `ProjectSdkSetupValidator` I resolve certain files to ensure that my sdk is properly configured. All code that access indexes is wrapped in a `DumbService.runReadActionInSmartMode` , however I am still getting a IndexNotReadyException. Any help welcome. My full stacktrace is here:

 

 

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.handleDumbMode(FileBasedIndexImpl.java:759)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:708)
at com.intellij.util.indexing.FileBasedIndexImpl.processExceptions(FileBasedIndexImpl.java:879)
at com.intellij.util.indexing.FileBasedIndexImpl.processValueIterator(FileBasedIndexImpl.java:965)
at com.intellij.util.indexing.FileBasedIndexImpl.processValuesInScope(FileBasedIndexImpl.java:936)
at com.intellij.util.indexing.FileBasedIndexImpl.getContainingFiles(FileBasedIndexImpl.java:798)
at io.github.intellij.dlanguage.index.DModuleIndex.getVirtualFilesByModuleName(DModuleIndex.java:49)
at io.github.intellij.dlanguage.index.DModuleIndex.getFilesByModuleName(DModuleIndex.java:39)
at io.github.intellij.dlanguage.resolve.processors.basic.BasicResolve.getObject(BasicResolve.kt:32)
at io.github.intellij.dlanguage.DLangProjectDmdSetupValidator$cannotFindObjectDotD$resolveObjectDotD$1.compute(DLanguage.kt:76)
at io.github.intellij.dlanguage.DLangProjectDmdSetupValidator$cannotFindObjectDotD$resolveObjectDotD$1.compute(DLanguage.kt:40)
at com.intellij.openapi.project.DumbService.lambda$runReadActionInSmartMode$0(DumbService.java:94)
at com.intellij.openapi.project.DumbService.runReadActionInSmartMode(DumbService.java:125)
at com.intellij.openapi.project.DumbService.runReadActionInSmartMode(DumbService.java:94)
at io.github.intellij.dlanguage.DLangProjectDmdSetupValidator.cannotFindObjectDotD(DLanguage.kt:78)
at io.github.intellij.dlanguage.DLangProjectDmdSetupValidator.isApplicableFor(DLanguage.kt:53)
at com.intellij.codeInsight.daemon.impl.SdkSetupNotificationProvider.createNotificationPanel(SdkSetupNotificationProvider.java:61)
at com.intellij.codeInsight.daemon.impl.SdkSetupNotificationProvider.createNotificationPanel(SdkSetupNotificationProvider.java:36)
at com.intellij.ui.EditorNotificationsImpl$3.performInReadAction(EditorNotificationsImpl.java:148)
at com.intellij.openapi.progress.util.ReadTask.lambda$runBackgroundProcess$0(ReadTask.java:66)
at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:47)
at com.intellij.openapi.progress.util.ReadTask.runBackgroundProcess(ReadTask.java:66)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runUnderProgress$5(ProgressIndicatorUtils.java:238)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:173)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:157)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:534)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:479)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runUnderProgress(ProgressIndicatorUtils.java:236)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.access$000(ProgressIndicatorUtils.java:47)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils$4.run(ProgressIndicatorUtils.java:187)
at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:212)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

 

1
1 comment
Avatar
Permanently deleted user

I found that runReadActionInSmartMode won't work in this situation, because waiting for smart mode would cause a deadlock. 

0

Please sign in to leave a comment.