EmmyLua / IntelliJ-EmmyLua

Lua IDE/Debugger Plugin for IntelliJ IDEA
https://emmylua.github.io
Apache License 2.0
1.74k stars 292 forks source link

Extremely slow startup times since latest 1.4.x updates #548

Open brittyazel opened 1 year ago

brittyazel commented 1 year ago

Since the latest round of updates, launching IntelliJ takes a very long time, with the IDE sitting at "Lua indexing: waiting to start ..." and then "Scanning files to index", both taking a couple of minutes to complete. Likewise, while this is happening, it's using >15% of my CPU.

This is with version 1.4.2, but it was also present in the prior version.

Meivyn commented 1 year ago

Can confirm, with a very large amount of files, the IDE is completely freezing, and the CPU usage can go all the way up to 100%, with IDEA CPU usage averaging 70-80%. It shows this stack trace after opening it back. This behavior is not present on EmmyLua < v1.4.1 and rolling back to v1.3.20 fixes the issue.

Freeze for 158 seconds
IDE KILLED! Sampled time: 128400ms, sampling rate: 100ms, GC time: 18482ms (12%), Class loading: 0%, cpu load: 32%

The stack is from the thread that was blocking EDT

com.intellij.diagnostic.Freeze
    at com.tang.intellij.lua.ty.ExpressionsKt.infer(Expressions.kt:189)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExprInner(Expressions.kt:50)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:43)
    at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:42)
    at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:25)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.inferImpl(ILuaTypeInfer.kt:41)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:35)
    at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:151)
    at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:34)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:62)
    at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:57)
    at com.tang.intellij.lua.psi.LuaTypeGuessable.guessType(LuaTypeGuessable.java:29)
    at com.tang.intellij.lua.psi.LuaPsiImplUtilKt.guessParentType(LuaPsiImplUtil.kt:262)
    at com.tang.intellij.lua.psi.impl.LuaIndexExprImpl.guessParentType(LuaIndexExprImpl.java:93)
    at com.tang.intellij.lua.ty.ExpressionsKt.infer$lambda$8(Expressions.kt:364)
    at com.tang.intellij.lua.ty.ExpressionsKt$$Lambda$6950/0x0000000102c6fae8.compute(Unknown Source)
    at com.intellij.openapi.util.RecursionGuard$$Lambda$1498/0x00000001010d50f8.compute(Unknown Source)
    at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:112)
    at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:66)
    at com.tang.intellij.lua.ext.UtilsKt.recursionGuard(utils.kt:27)
    at com.tang.intellij.lua.ext.UtilsKt.recursionGuard$default(utils.kt:26)
    at com.tang.intellij.lua.ty.ExpressionsKt.infer(Expressions.kt:323)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExprInner(Expressions.kt:56)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:43)
    at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:42)
    at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:25)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.inferImpl(ILuaTypeInfer.kt:41)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:35)
    at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:151)
    at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:34)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:62)
    at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:57)
    at com.tang.intellij.lua.ty.DeclarationsKt.infer(Declarations.kt:36)
    at com.tang.intellij.lua.ty.ExpressionsKt.infer(Expressions.kt:323)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExprInner(Expressions.kt:56)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:43)
    at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:42)
    at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:25)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.inferImpl(ILuaTypeInfer.kt:41)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:35)
    at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:151)
    at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:34)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:62)
    at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:57)
    at com.tang.intellij.lua.psi.LuaTypeGuessable.guessType(LuaTypeGuessable.java:29)
    at com.tang.intellij.lua.psi.LuaPsiImplUtilKt$guessTypeAt$1.invoke(LuaPsiImplUtil.kt:255)
    at com.tang.intellij.lua.psi.LuaPsiImplUtilKt$guessTypeAt$1.invoke(LuaPsiImplUtil.kt:255)
    at com.tang.intellij.lua.search.SearchContext.withIndex(SearchContext.kt:102)
    at com.tang.intellij.lua.psi.LuaPsiImplUtilKt.guessTypeAt(LuaPsiImplUtil.kt:255)
    at com.tang.intellij.lua.psi.impl.LuaExprListImpl.guessTypeAt(LuaExprListImpl.java:51)
    at com.tang.intellij.lua.ty.DeclarationsKt$infer$1.invoke(Declarations.kt:139)
    at com.tang.intellij.lua.ty.DeclarationsKt$infer$1.invoke(Declarations.kt:138)
    at com.tang.intellij.lua.search.SearchContext.withIndex(SearchContext.kt:102)
    at com.tang.intellij.lua.ty.DeclarationsKt.infer(Declarations.kt:138)
    at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:44)
    at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:25)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.inferImpl(ILuaTypeInfer.kt:41)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:35)
    at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:151)
    at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:34)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:62)
    at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:57)
    at com.tang.intellij.lua.psi.LuaTypeGuessable.guessType(LuaTypeGuessable.java:29)
    at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:40)
    at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:42)
    at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:25)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.inferImpl(ILuaTypeInfer.kt:41)
    at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:35)
    at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:151)
    at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:34)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:57)
    at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:69)
    at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:57)
    at com.tang.intellij.lua.psi.LuaTypeGuessable.guessType(LuaTypeGuessable.java:29)
    at com.tang.intellij.lua.index.GuessableIndexer.tryIndex(Indexer.kt:52)
    at com.tang.intellij.lua.index.IndexTask.run(IndexManager.kt:291)
    at com.tang.intellij.lua.index.IndexTask.run(IndexManager.kt:216)
    at com.tang.intellij.lua.index.IndexManager.scanAllProject(IndexManager.kt:128)
    at com.tang.intellij.lua.index.IndexManager.access$scanAllProject(IndexManager.kt:47)
    at com.tang.intellij.lua.index.IndexManager$runScan$1.invoke(IndexManager.kt:109)
    at com.tang.intellij.lua.index.IndexManager$runScan$1.invoke(IndexManager.kt:109)
    at com.tang.intellij.lua.index.TaskQueue$runReadAction$task$1.run$lambda$0(TaskQueue.kt:51)
    at com.tang.intellij.lua.index.TaskQueue$runReadAction$task$1$$Lambda$3131/0x0000000101a122b0.run(Unknown Source)
    at com.intellij.openapi.project.DumbService.lambda$runReadActionInSmartMode$1(DumbService.java:156)
    at com.intellij.openapi.project.DumbService$$Lambda$6870/0x0000000102c544b0.compute(Unknown Source)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:891)
    at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:69)
    at com.intellij.openapi.project.DumbService.runReadActionInSmartMode(DumbService.java:149)
    at com.tang.intellij.lua.index.TaskQueue$runReadAction$task$1.run(TaskQueue.kt:50)
    at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:429)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:480)
    at com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$1669/0x0000000101218480.apply(Unknown Source)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:252)
    at com.intellij.openapi.progress.impl.ProgressRunner$$Lambda$1672/0x000000010121a0e8.run(Unknown Source)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
    at com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$1363/0x0000000100fb75e0.run(Unknown Source)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
    at com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$1364/0x0000000100fb7ae0.compute(Unknown Source)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:252)
    at com.intellij.openapi.progress.impl.ProgressRunner$$Lambda$1671/0x0000000101219c78.get(Unknown Source)
    at java.base@17.0.6/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base@17.0.6/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base@17.0.6/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base@17.0.6/java.security.AccessController.executePrivileged(AccessController.java:776)
    at java.base@17.0.6/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base@17.0.6/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base@17.0.6/java.lang.Thread.run(Thread.java:833)
tangzx commented 1 year ago

Can you please try this version? https://github.com/EmmyLua/IntelliJ-EmmyLua/actions/runs/5206248623

brittyazel commented 1 year ago

I cannot install that version. I get an error saying "failed to load plugin descriptor from file"

tangzx commented 1 year ago

I cannot install that version. I get an error saying "failed to load plugin descriptor from file"

You need to unzip it and you will see another zip file, use that file to install

Meivyn commented 1 year ago

This still freezes the IDE as soon as "Indexing dependencies" is done.

It however doesn't freeze indefinitely like it used to, but file browsing is extremely laggy, and it consumes a lot of RAM (IDE complains that 2048 Mb isn't enough anymore) It also still freezes after a while.

tangzx commented 1 year ago

@Meivyn I can't reproduce the problem, So ... I wonder if your project is complicated? How many Lua files are there and how the size are they?

Meivyn commented 1 year ago

It's not really a project - I am simply loading the whole Interface/AddOns folder from World of Warcraft. Those add-ons are written in Lua. I always did that without a problem until that update. But that implies that there are a lot of files, so I can't tell the size or how many of them though.

tangzx commented 1 year ago

@Meivyn I don't have WOW installed, where I can get the whole addons folder? Can you pack and upload it for me to test ?

Meivyn commented 1 year ago

Here it is: https://send.vis.ee/download/5a3bb95c9f5110f6/#87S-grQ_dqoljGGr6-rbvQ

tangzx commented 1 year ago

I always did that without a problem until that update Yes, I rewrote the index system, since the index system in previous version cannot work in IDEA231. I had to rewrite it.

tangzx commented 1 year ago

Here it is: https://send.vis.ee/download/5a3bb95c9f5110f6/#87S-grQ_dqoljGGr6-rbvQ

Thanks

Meivyn commented 1 year ago

Hmm, no clue what that error means, I am not understanding this language. What about this one? https://wormhole.app/4zyjp#mt4Ty_GWKYvwko_UeOUd4A

tangzx commented 1 year ago

@Meivyn It's my problem, finally I downloaded it, thanks , I'll try it

brittyazel commented 1 year ago

It's a bit better. It doesn't lock up the UI nearly as much, though it takes 2-3min to finish it's analysis every single time I open my projects. It appears like it's having to analyze over 100k items according to the new loading status. Almost all of the things it is "analyzing" are the API files added to the project as external libraries. It seems odd that it has to do it every single time. Prior to 1.4.x it would open in just a few seconds.

brittyazel commented 1 year ago

I have the exact same situation as @Meivyn. We are both loading the whole Interface codebase from World of Warcraft. I have it added as a project SDK. It's quite a bit of files: https://github.com/Gethe/wow-ui-source

brittyazel commented 1 year ago

Would it be possible to implement some sort of caching system for between sessions? I.e. the 100,000+ objects needing scanned in the World of Warcraft API aren't changing that often, and therefore it seems wasteful to scan them over and over again on each launch. Likewise, even when they are changed, it's really just a subset of them. If the session somehow knew which files had or had not been changed from one session to the next, and could use that information to inform the indexer, that could considerably speed things up.

brittyazel commented 1 year ago

@tangzx I can confirm your rollback update today returned the previous behavior. Thank you for doing that.

I'm super excited for your hard work on the new indexer, and I'm hoping the above issue can be resolved without too much headache! Let me know if I can help in any way.

Meivyn commented 1 year ago

I am getting an infinite indexing loop with the latest version. It starts to index the module, and then the SDK, and then the module, and then the SDK, and then the module...

It even does this for non-Lua projects after installing this version.

brittyazel commented 1 year ago

@Meivyn Just a thought, have you tried invalidating your caches and restarting the IDE? I'm not able to replicate your issue on my end.

Meivyn commented 1 year ago

Yeah, I did, and that didn't help. It was fixed when I reverted back to 1.3.20.

In case it helps, I am also getting this exception:

com.intellij.diagnostic.PluginException: encoded string (
local B..., },
})
) too long: 493211 bytes [Plugin: com.tang]
    at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.lambda$getSerializationProblemReporter$6(VfsAwareMapReduceIndex.java:353)
    at com.intellij.util.indexing.impl.ValueSerializationChecker.checkValueSerialization(ValueSerializationChecker.java:36)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:299)
    at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:172)
    at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:39)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:242)
    at com.intellij.indexing.composite.CompositeInvertedIndexBase.updateBaseIndex(CompositeInvertedIndexBase.java:294)
    at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:64)
    at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:30)
    at com.intellij.util.indexing.FileBasedIndexImpl.createSingleIndexValueApplier(FileBasedIndexImpl.java:1681)
    at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$26(FileBasedIndexImpl.java:1546)
    at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyWithProvidedValueIn(FileTypeManagerImpl.java:675)
    at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1494)
    at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1467)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexOneFileOfJob$4(IndexUpdateRunner.java:317)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:746)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:778)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:573)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:537)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1102)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:72)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:129)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:110)
    at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$1(ProgressManager.java:70)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
    at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:70)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:107)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:72)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:537)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:464)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:218)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexOneFileOfJob(IndexUpdateRunner.java:321)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexJobsFairly$3(IndexUpdateRunner.java:243)
    at com.intellij.openapi.progress.impl.ProgressSuspender.executeNonSuspendableSection(ProgressSuspender.java:80)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexJobsFairly(IndexUpdateRunner.java:246)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$doIndexFiles$2(IndexUpdateRunner.java:177)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:248)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:28)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:221)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:227)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:210)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.io.UTFDataFormatException: encoded string (
local B..., },
})
) too long: 493211 bytes
    at java.base/java.io.DataOutputStream.writeUTF(DataOutputStream.java:369)
    at java.base/java.io.DataOutputStream.writeUTF(DataOutputStream.java:333)
    at com.tang.intellij.lua.stubs.index.LuaStringArgIndex$getValueExternalizer$1.save(LuaStringArgIndex.kt:50)
    at com.tang.intellij.lua.stubs.index.LuaStringArgIndex$getValueExternalizer$1.save(LuaStringArgIndex.kt:45)
    at com.intellij.util.indexing.impl.forward.AbstractForwardIndexAccessor.serializeToByteSeq(AbstractForwardIndexAccessor.java:81)
    at com.intellij.util.indexing.impl.forward.AbstractForwardIndexAccessor.serializeValueToByteSeq(AbstractForwardIndexAccessor.java:69)
    at com.intellij.util.indexing.impl.ValueSerializationChecker.getValueSerializationProblem(ValueSerializationChecker.java:49)
    at com.intellij.util.indexing.impl.ValueSerializationChecker.checkValueSerialization(ValueSerializationChecker.java:34)
    ... 53 more
Meivyn commented 1 year ago

@tangzx Would appreciate it if you could look at it/send some news since 2023.2 is now officially out.

Meivyn commented 11 months ago

This exception is indeed the cause of the issue. It happens with this addon: https://www.curseforge.com/wow/addons/btwquests-dragonflight

Excluding the Database folder from the sources did solve the issue.