Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Outdated stub in index #265

Closed
fj-dt opened this issue Apr 4, 2021 · 1 comment
Closed

Outdated stub in index #265

fj-dt opened this issue Apr 4, 2021 · 1 comment

Comments

@fj-dt
Copy link

fj-dt commented Apr 4, 2021

Describe the bug
I am getting an error with the tool and I think this is due to the fact that it looks into a symlink file to a common folder (shared between several directories).
When the common folder gets updated, I think the cache is refreshed or something and the plugin crashes.
The symlink is marked as excluded in my project, so I think the plugin should ignore it as well, and I'm guessing it currently does not.

Outdated stub in index: file:///Users/someone/PycharmProjects/.../common/abc.py indexing timestamp = 1616410525292, binary = false, byte size = 109836, char size = 109836, doc=DocumentImpl[file:///Users/someone/PycharmProjects/.../common/abc.py], docSaved=true, wasIndexedAlready=true, queried at 1616748668931
doc length=111601
file length=111601
cached PSI class com.jetbrains.python.psi.impl.PyFileImpl
projects with file: 1
physical file exists; length = 111601

java.lang.Exception
	at com.intellij.psi.stubs.StubTreeLoaderImpl.diagnoseLengthMismatch(StubTreeLoaderImpl.java:177)
	at com.intellij.psi.stubs.StubTreeLoaderImpl.checkLengthMatch(StubTreeLoaderImpl.java:143)
	at com.intellij.psi.stubs.StubTreeLoaderImpl.readFromVFile(StubTreeLoaderImpl.java:105)
	at com.intellij.psi.stubs.StubTreeLoader.stubTreeAndIndexDoNotMatch(StubTreeLoader.java:59)
	at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:201)
	at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:149)
	at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:216)
	at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:734)
	at com.intellij.extapi.psi.StubBasedPsiElementBase.getNode(StubBasedPsiElementBase.java:128)
	at com.intellij.extapi.psi.ASTDelegatePsiElement.getFirstChild(ASTDelegatePsiElement.java:99)
	at com.intellij.psi.util.PsiTreeUtil.getChildOfType(PsiTreeUtil.java:340)
	at com.jetbrains.python.psi.impl.PyClassImpl.getSuperClassExpressionList(PyClassImpl.java:145)
	at com.jetbrains.python.psi.impl.PyClassImpl.getSuperClassExpressions(PyClassImpl.java:154)
	at com.jetbrains.python.codeInsight.typing.PyTypedDictTypeProvider$Companion.checkIfClassIsDirectTypedDictInheritor(PyTypedDictTypeProvider.kt:59)
	at com.jetbrains.python.codeInsight.typing.PyTypedDictTypeProvider$Companion.isTypingTypedDictInheritor(PyTypedDictTypeProvider.kt:46)
	at com.jetbrains.python.codeInsight.typing.PyTypedDictTypeProvider$Companion.getTypedDictTypeForResolvedElement(PyTypedDictTypeProvider.kt:240)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getTypeForResolvedElement(PyTypingTypeProvider.java:810)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getType(PyTypingTypeProvider.java:724)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getIndexTypes(PyTypingTypeProvider.java:1324)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getParameterizedType(PyTypingTypeProvider.java:1338)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getTypeForResolvedElement(PyTypingTypeProvider.java:781)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getType(PyTypingTypeProvider.java:724)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getIndexTypes(PyTypingTypeProvider.java:1320)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getParameterizedType(PyTypingTypeProvider.java:1338)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getTypeForResolvedElement(PyTypingTypeProvider.java:781)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getType(PyTypingTypeProvider.java:724)
	at com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider.getReturnType(PyTypingTypeProvider.java:336)
	at com.jetbrains.python.psi.impl.PyFunctionImpl.getReturnType(PyFunctionImpl.java:202)
	at com.jetbrains.python.psi.types.TypeEvalContext.lambda$getReturnType$1(TypeEvalContext.java:203)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.jetbrains.python.psi.types.TypeEvalContext.getReturnType(TypeEvalContext.java:192)
	at com.jetbrains.python.psi.types.PyFunctionTypeImpl.getReturnType(PyFunctionTypeImpl.java:42)
	at com.jetbrains.python.psi.types.PyTypeChecker.collectGenerics(PyTypeChecker.java:673)
	at com.jetbrains.python.psi.types.PyTypeChecker.hasGenerics(PyTypeChecker.java:631)
	at com.jetbrains.python.psi.impl.PyReferenceExpressionImpl.getTypeFromTarget(PyReferenceExpressionImpl.java:409)
	at com.jetbrains.python.psi.impl.PyReferenceExpressionImpl.getTypeFromTargets(PyReferenceExpressionImpl.java:313)
	at com.jetbrains.python.psi.impl.PyReferenceExpressionImpl.getType(PyReferenceExpressionImpl.java:231)
	at com.jetbrains.python.psi.types.TypeEvalContext.lambda$getType$0(TypeEvalContext.java:180)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.jetbrains.python.psi.types.TypeEvalContext.getType(TypeEvalContext.java:169)
	at com.koxudaxi.pydantic.PydanticKt.getPyClassByPyCallExpression(Pydantic.kt:114)
	at com.koxudaxi.pydantic.PydanticKt.getPydanticPyClass(Pydantic.kt:416)
	at com.koxudaxi.pydantic.PydanticAnnotator.annotatePydanticModelCallableExpression(PydanticAnnotator.kt:23)
	at com.koxudaxi.pydantic.PydanticAnnotator.visitPyCallExpression(PydanticAnnotator.kt:18)
	at com.jetbrains.python.psi.impl.PyCallExpressionImpl.acceptPyVisitor(PyCallExpressionImpl.java:29)
	at com.jetbrains.python.psi.impl.PyBaseElementImpl.accept(PyBaseElementImpl.java:69)
	at com.jetbrains.python.validation.PyAnnotator.annotateElement(PyAnnotator.java:46)
	at com.jetbrains.python.validation.PyAnnotatingVisitor.runAnnotators(PyAnnotatingVisitor.java:65)
	at com.jetbrains.python.validation.PyCompositeAnnotator.annotate(PyCompositeAnnotator.java:17)
	at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.runAnnotators(DefaultHighlightVisitor.java:136)
	at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.visit(DefaultHighlightVisitor.java:116)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.runVisitors(GeneralHighlightingPass.java:336)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.lambda$collectHighlights$5(GeneralHighlightingPass.java:269)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:295)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.lambda$analyzeByVisitors$6(GeneralHighlightingPass.java:298)
	at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.analyze(DefaultHighlightVisitor.java:96)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:298)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectHighlights(GeneralHighlightingPass.java:266)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectInformationWithProgress(GeneralHighlightingPass.java:212)
	at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:84)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:56)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:400)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1137)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:393)
	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.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:392)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:368)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:172)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:183)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:366)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:188)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

To Reproduce
I made a project structure equivalent to my project to show you. Unfortunately I was not able to reproduce the bug with this little project. The one I'm working on is really big.
image

Environments

  • IDE: 2020.3.5
  • OS: macOS 11.2.3
  • Pydantic Version 1.3
  • Plugin version 0.2.1
@koxudaxi
Copy link
Owner

koxudaxi commented Apr 5, 2021

@fj-dt
Thank you for creating this issue and the log.
I have understood the problem came from PydanticAnnotator .
I have an idea to resolve the problem. I will do it when I get the time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants