adelf / idea-php-dotenv-plugin

environment parameters completion, based on .env file keys
MIT License
166 stars 13 forks source link

High IDE CPU usage caused by the plug-in #19

Closed CrazyCoder closed 6 years ago

CrazyCoder commented 6 years ago

https://youtrack.jetbrains.com/v2/issue/IDEA-186214

"ApplicationImpl pooled thread 9" prio=0 tid=0x0 nid=0x0 runnable
     java.lang.Thread.State: RUNNABLE

    at gnu.trove.TIntObjectHashMap.insertionIndex(TIntObjectHashMap.java:336)
    at gnu.trove.TIntObjectHashMap.rehash(TIntObjectHashMap.java:233)
    at gnu.trove.THash.compact(THash.java:174)
    at com.intellij.lang.impl.MarkerOptionalData.compact(MarkerOptionalData.java:51)
    at com.intellij.lang.impl.PsiBuilderImpl.g(PsiBuilderImpl.java:1013)
    at com.intellij.lang.impl.PsiBuilderImpl.a(PsiBuilderImpl.java:918)
    at com.intellij.lang.impl.PsiBuilderImpl.getTreeBuilt(PsiBuilderImpl.java:913)
    at com.intellij.lang.javascript.types.JSBlockStatementElementType.doParseContents(JSBlockStatementElementType.java:89)
    at com.intellij.psi.tree.ILazyParseableElementType.parseContents(ILazyParseableElementType.java:80)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.ensureParsed(LazyParseableElement.java:192)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.getFirstChildNode(LazyParseableElement.java:240)
    at com.intellij.psi.impl.source.tree.LazyParseablePsiElement.getFirstChild(LazyParseablePsiElement.java:90)
    at com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:104)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSBlockStatementImpl.accept(JSBlockStatementImpl.java:58)
    at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:81)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSIfStatementImpl.accept(JSIfStatementImpl.java:108)
    at com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:106)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSBlockStatementImpl.accept(JSBlockStatementImpl.java:58)
    at com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSFunctionImpl.accept(JSFunctionImpl.java:157)
    at com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:106)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSBlockStatementImpl.accept(JSBlockStatementImpl.java:58)
    at com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSFunctionExpressionImpl.accept(JSFunctionExpressionImpl.java:54)
    at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:81)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSParenthesizedExpressionImpl.accept(JSParenthesizedExpressionImpl.java:46)
    at com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSCallExpressionImpl.accept(JSCallExpressionImpl.java:103)
    at com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSVariableBaseImpl.accept(JSVariableBaseImpl.java:398)
    at com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
    at com.intellij.psi.PsiRecursiveElementVisitor.visitElement(PsiRecursiveElementVisitor.java:40)
    at ru.adelf.idea.dotenv.js.JsEnvironmentCallsVisitor.visitElement(JsEnvironmentCallsVisitor.java:26)
    at com.intellij.lang.javascript.psi.impl.JSVarStatementBase.accept(JSVarStatementBase.java:46)
    at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:200)
    at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:823)
    at ru.adelf.idea.dotenv.js.JsEnvironmentVariablesUsagesProvider.getUsages(JsEnvironmentVariablesUsagesProvider.java:25)
    at ru.adelf.idea.dotenv.indexing.DotEnvUsagesIndex.lambda$getIndexer$0(DotEnvUsagesIndex.java:34)
    at ru.adelf.idea.dotenv.indexing.DotEnvUsagesIndex$$Lambda$340/1452662302.map(Unknown Source)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:273)
    at com.intellij.util.indexing.VfsAwareMapReduceIndex.calculateUpdateData(VfsAwareMapReduceIndex.java:98)
    at com.intellij.util.indexing.impl.MapReduceIndex.update(MapReduceIndex.java:213)
    at com.intellij.util.indexing.FileBasedIndexImpl.a(FileBasedIndexImpl.java:1654)
    at com.intellij.util.indexing.FileBasedIndexImpl.a(FileBasedIndexImpl.java:1582)
    at com.intellij.util.indexing.FileBasedIndexImpl$$Lambda$1313/1000225462.run(Unknown Source)
    at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:511)
    at com.intellij.util.indexing.FileBasedIndexImpl.a(FileBasedIndexImpl.java:1541)
    at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1529)
    at com.intellij.util.indexing.UnindexedFilesUpdater.a(UnindexedFilesUpdater.java:109)
    at com.intellij.util.indexing.UnindexedFilesUpdater$$Lambda$1214/748859658.consume(Unknown Source)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable.a(CacheUpdateRunner.java:227)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable$$Lambda$1299/1358884322.run(Unknown Source)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1127)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable.a(CacheUpdateRunner.java:243)
    at com.intellij.openapi.project.CacheUpdateRunner$MyRunnable$$Lambda$1303/310145167.run(Unknown Source)
    at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:157)
    at com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$116/424560777.run(Unknown Source)
    at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:543)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
    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.project.CacheUpdateRunner$MyRunnable.run(CacheUpdateRunner.java:240)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:315)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)  
adelf commented 6 years ago

@CrazyCoder I've analyzed the problem a bit. Seems there is a problem while indexing node_modules black hole... (As I understand, normally node_modules should be marked as Excluded and shouldn't be indexed) Since you're JetBrains guy, can you help me? I see these ways to solve it: 1) The best one. Totally rewrite all Find usages functionality to use normal IDEA practices with FindUsagesProvider. But it will take some time. And also there is too little info about how it works... As I remember, there was some community forum for plugin writers... could you tell where is it now? 2) Just exclude files with /node_modules/ in the path from index. 3) Turn off javascript indexing by default and allow to turn it on in Project settings.

adelf commented 6 years ago

Found it :) https://intellij-support.jetbrains.com/hc/en-us/community/topics/200366979-IntelliJ-IDEA-Open-API-and-Plugin-Development