fix dumb-mode race condition on startup (IDEA-67563)

This commit is contained in:
Eugene Zhuravlev
2011-04-14 19:47:21 +02:00
parent 32ee3ea91a
commit b1a50f79fa
6 changed files with 18 additions and 9 deletions

View File

@@ -169,8 +169,10 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase {
DaemonCodeAnalyzerImpl daemonCodeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(getProject());
toInitializeDaemon = !daemonCodeAnalyzer.isInitialized();
daemonCodeAnalyzer.prepareForTest(toInitializeDaemon);
((StartupManagerImpl)StartupManagerEx.getInstanceEx(getProject())).runStartupActivities();
((StartupManagerImpl)StartupManagerEx.getInstanceEx(getProject())).runPostStartupActivities();
final StartupManagerImpl startupManager = (StartupManagerImpl)StartupManagerEx.getInstanceEx(getProject());
startupManager.runStartupActivities();
startupManager.startCacheUpdate();
startupManager.runPostStartupActivities();
DaemonCodeAnalyzerSettings.getInstance().setImportHintEnabled(false);
if (isPerformanceTest()) {

View File

@@ -117,7 +117,6 @@ public class StartupManagerImpl extends StartupManagerEx {
myStartupActivitiesRunning = false;
startCacheUpdate();
myStartupActivitiesPassed = true;
}
finally {
@@ -170,9 +169,9 @@ public class StartupManagerImpl extends StartupManagerEx {
Registry.get("ide.firstStartup").setValue(false);
}
private void startCacheUpdate() {
public void startCacheUpdate() {
try {
DumbServiceImpl.getInstance(myProject).queueCacheUpdate(myCacheUpdaters);
DumbServiceImpl.getInstance(myProject).queueCacheUpdateInDumbMode(myCacheUpdaters);
}
catch (ProcessCanceledException e) {
throw e;

View File

@@ -391,7 +391,9 @@ public class ProjectManagerImpl extends ProjectManagerEx implements NamedJDOMExt
notifyProjectOpenFailed();
return false;
}
startupManager.startCacheUpdate();
startupManager.runPostStartupActivities();
if (!ApplicationManager.getApplication().isHeadlessEnvironment() && !ApplicationManager.getApplication().isUnitTestMode()) {

View File

@@ -300,7 +300,9 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da
});
((StartupManagerImpl)StartupManager.getInstance(ourProject)).runStartupActivities();
final StartupManagerImpl startupManager = (StartupManagerImpl)StartupManager.getInstance(ourProject);
startupManager.runStartupActivities();
startupManager.startCacheUpdate();
}
}.execute().throwException();
}

View File

@@ -234,8 +234,10 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
}
protected void runStartupActivities() {
((StartupManagerImpl)StartupManager.getInstance(myProject)).runStartupActivities();
((StartupManagerImpl)StartupManager.getInstance(myProject)).runPostStartupActivities();
final StartupManagerImpl startupManager = (StartupManagerImpl)StartupManager.getInstance(myProject);
startupManager.runStartupActivities();
startupManager.startCacheUpdate();
startupManager.runPostStartupActivities();
}
protected File getIprFile() throws IOException {
@@ -448,6 +450,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
mm.projectOpened();
setUpJdk();
sm.runStartupActivities();
sm.startCacheUpdate();
// extra init for libraries
sm.runPostStartupActivities();
}

View File

@@ -157,6 +157,7 @@ class HeavyIdeaTestFixtureImpl extends BaseFixture implements HeavyIdeaTestFixtu
StartupManagerImpl sm = (StartupManagerImpl)StartupManager.getInstance(myProject);
sm.runStartupActivities();
sm.startCacheUpdate();
sm.runPostStartupActivities();
ProjectManagerEx.getInstanceEx().setCurrentTestProject(myProject);