From ead3b98bdb6778a0d1b9869a42ce38c5d8c8b54a Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 9 Aug 2017 18:03:22 +0300 Subject: [PATCH] javac ast indices: IDEA-177334 1. add check for cancellation for long running queries 2. remove redundant log.debug since it's redundant (logged problem is already fixed) --- .../compiler/backwardRefs/CompilerReferenceReader.java | 7 ++++++- .../backwardRefs/CompilerReferenceServiceImpl.java | 4 ---- .../inspection/FrequentlyUsedInheritorInspection.java | 2 ++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java index 4fe01740a3d6..9fb285c41ac8 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package com.intellij.compiler.backwardRefs; import com.intellij.compiler.server.BuildManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -236,6 +237,10 @@ class CompilerReferenceReader { break; } if (result.add(curClass)) { + if (result.size() % 100 == 0) { + ProgressManager.checkCanceled(); + } + if (!(curClass instanceof LightRef.LightAnonymousClassDef) && (checkBaseClassAmbiguity || curClass != hierarchyElement)) { if (hasMultipleDefinitions(curClass)) { return null; diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java index f51916fa23f3..edce380b146c 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceImpl.java @@ -16,7 +16,6 @@ package com.intellij.compiler.backwardRefs; import com.intellij.compiler.CompilerDirectHierarchyInfo; -import com.intellij.compiler.CompilerWorkspaceConfiguration; import com.intellij.compiler.backwardRefs.view.CompilerReferenceFindUsagesTestInfo; import com.intellij.compiler.backwardRefs.view.CompilerReferenceHierarchyTestInfo; import com.intellij.compiler.backwardRefs.view.DirtyScopeTestInfo; @@ -586,9 +585,6 @@ public class CompilerReferenceServiceImpl extends CompilerReferenceServiceEx imp throw e; } if ((--myActiveBuilds == 0) && myProject.isOpen()) { - LOG.assertTrue(myReader == null, "isAutoMakeEnabled = " + - ReadAction - .compute(() -> CompilerWorkspaceConfiguration.getInstance(myProject).MAKE_PROJECT_ON_SAVE)); myReader = CompilerReferenceReader.create(myProject); LOG.info("backward reference index reader " + (myReader == null ? "doesn't exist" : "is opened")); } diff --git a/java/compiler/impl/src/com/intellij/compiler/inspection/FrequentlyUsedInheritorInspection.java b/java/compiler/impl/src/com/intellij/compiler/inspection/FrequentlyUsedInheritorInspection.java index d0720f42aac6..e7339f255686 100644 --- a/java/compiler/impl/src/com/intellij/compiler/inspection/FrequentlyUsedInheritorInspection.java +++ b/java/compiler/impl/src/com/intellij/compiler/inspection/FrequentlyUsedInheritorInspection.java @@ -20,6 +20,7 @@ import com.intellij.compiler.CompilerReferenceService; import com.intellij.compiler.backwardRefs.CompilerReferenceServiceEx; import com.intellij.compiler.backwardRefs.ReferenceIndexUnavailableException; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; @@ -165,6 +166,7 @@ public class FrequentlyUsedInheritorInspection extends BaseJavaLocalInspectionTo .of(directInheritors) .filter(inheritor -> !(inheritor instanceof LightRef.LightAnonymousClassDef)) .map(inheritor -> { + ProgressManager.checkCanceled(); int count = compilerRefService.getInheritorCount(inheritor); if (count != 1 && count * 100 > finalHierarchyCardinality * PERCENT_THRESHOLD) { return new Object() {