diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexProjectHandler.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexProjectHandler.java index c3ce6433c228..c79aca0c1aaf 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexProjectHandler.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexProjectHandler.java @@ -22,7 +22,9 @@ package com.intellij.util.indexing; import com.intellij.ide.IdeBundle; import com.intellij.ide.caches.FileContent; import com.intellij.ide.startup.StartupManagerEx; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.AbstractProjectComponent; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.*; @@ -42,6 +44,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Collection; public class FileBasedIndexProjectHandler extends AbstractProjectComponent implements IndexableFileSet { + private static final Logger LOG = Logger.getInstance("#com.intellij.util.indexing.FileBasedIndexProjectHandler"); private final FileBasedIndexImpl myIndex; private final ProjectRootManagerEx myRootManager; private final FileTypeManager myFileTypeManager; @@ -52,6 +55,18 @@ public class FileBasedIndexProjectHandler extends AbstractProjectComponent imple myRootManager = rootManager; myFileTypeManager = ftManager; + if (ApplicationManager.getApplication().isInternal()) { + project.getMessageBus().connect().subscribe(DumbService.DUMB_MODE, new DumbService.DumbModeListener() { + + public void enteredDumbMode() { + } + + public void exitDumbMode() { + LOG.info("Has changed files: " + (createChangedFilesIndexingTask(project) != null) + "; project=" + project); + } + }); + } + final StartupManagerEx startupManager = (StartupManagerEx)StartupManager.getInstance(project); if (startupManager != null) { startupManager.registerPreStartupActivity(new Runnable() { diff --git a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java index 1eae4c287c1d..eb64c824b801 100644 --- a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java @@ -262,10 +262,17 @@ public class StartupManagerImpl extends StartupManagerEx { } }); } + + @Override + public String toString() { + return "initial refresh"; + } }); } - dumbService.queueCacheUpdateInDumbMode(myCacheUpdaters); + if (!myCacheUpdaters.isEmpty()) { + dumbService.queueCacheUpdateInDumbMode(myCacheUpdaters); + } } catch (ProcessCanceledException e) { throw e; diff --git a/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java b/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java index 7866cdec5da5..25c312a08131 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java @@ -34,6 +34,7 @@ import com.intellij.util.Consumer; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.Collection; import java.util.Set; import java.util.concurrent.Future; @@ -52,6 +53,11 @@ public class CacheUpdateRunner { myUpdaters = updaters; } + @Override + public String toString() { + return new ArrayList(myUpdaters).toString(); + } + public int queryNeededFiles(@NotNull ProgressIndicator indicator) { // can be queried twice in DumbService return getSession(indicator).getFilesToUpdate().size(); diff --git a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java index 4cd56c52b548..f71eb5fef698 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java @@ -97,6 +97,11 @@ public class DumbServiceImpl extends DumbService { public void canceled() { } + + @Override + public String toString() { + return task.toString(); + } }; queueCacheUpdateInDumbMode(Arrays.asList(wrapper)); } @@ -258,6 +263,8 @@ public class DumbServiceImpl extends DumbService { myDumb = false; if (myProject.isDisposed()) return; + if (ApplicationManager.getApplication().isInternal()) LOG.info("updateFinished"); + try { myPublisher.exitDumbMode(); FileEditorManagerEx.getInstanceEx(myProject).refreshIcons(); @@ -425,6 +432,7 @@ public class DumbServiceImpl extends DumbService { private void runAction(ProgressIndicator indicator, CacheUpdateRunner updateRunner) { while (updateRunner != null) { try { + if (ApplicationManager.getApplication().isInternal()) LOG.info("Running dumb mode task: " + updateRunner); indicator.checkCanceled(); indicator.setIndeterminate(true); indicator.setText(IdeBundle.message("progress.indexing.scanning")); diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java index 63cfad0e25f9..8fd90f6b8215 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java @@ -419,6 +419,11 @@ public class ProjectManagerImpl extends ProjectManagerEx implements NamedJDOMExt public void performInDumbMode(@NotNull ProgressIndicator indicator) { waitForFileWatcher(indicator); } + + @Override + public String toString() { + return "wait for file watcher"; + } }); final StartupManagerImpl startupManager = (StartupManagerImpl)StartupManager.getInstance(project);