mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
Add debug info to FileDocumentManagerListener in JavaLibraryModificationTracker which accesses WorkspaceFileIndex
GitOrigin-RevId: d0d23e7e505d73e7c7df1a6197a7cefc9708f500
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3bd9369d37
commit
840e8558c5
@@ -3,6 +3,8 @@ package com.intellij.java.library;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.components.Service;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.diagnostic.ThrottledLogger;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManagerListener;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -18,6 +20,8 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
|
||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
|
||||
/**
|
||||
* Use this modification tracker for {@link com.intellij.psi.util.CachedValue} which may contain {@link com.intellij.psi.PsiElement}
|
||||
* instances from libraries only. If a cache value contains only simple non-PsiElement values, e.g. String, List of primitives,
|
||||
@@ -30,6 +34,8 @@ public final class JavaLibraryModificationTracker implements ModificationTracker
|
||||
private final ModificationTracker myDumbServiceModificationTracker;
|
||||
private final ModificationTracker myForcefulReparseModificationTracker; // PsiClass from libraries may become invalid on reparse
|
||||
private final SimpleModificationTracker myOnContentReloadModificationTracker = new SimpleModificationTracker();
|
||||
private final static ThrottledLogger THROTTLED_LOG = new ThrottledLogger(Logger.getInstance(JavaLibraryModificationTracker.class), SECONDS.toMillis(30));
|
||||
private final Throwable creationStack = new Throwable();
|
||||
|
||||
public JavaLibraryModificationTracker(Project project) {
|
||||
myProjectRootManager = ProjectRootManager.getInstance(project);
|
||||
@@ -42,6 +48,12 @@ public final class JavaLibraryModificationTracker implements ModificationTracker
|
||||
|
||||
@Override
|
||||
public void fileWithNoDocumentChanged(@NotNull VirtualFile file) {
|
||||
if (!project.isInitialized()) {
|
||||
THROTTLED_LOG.warn("SearchScope.contains(file) would log an error because WorkspaceFileIndex is not yet initialized. " +
|
||||
"Probably JavaLibraryModificationTracker was created too early. " +
|
||||
"See JavaLibraryModificationTracker creation stacktrace: ", creationStack);
|
||||
return;
|
||||
}
|
||||
if (projectLibraryScope.contains(file)) {
|
||||
myOnContentReloadModificationTracker.incModificationCount();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user