Community
Participate
Working Groups
Should consider starting the IndexManager background thread after the jdt.core plugin is started to improve our startup time. Currently it is started as part of JavaCore.startup(). If it cannot be started later, then consider increasing the 10 second delay in IndexManager.activateProcessing(). Also examine the need for & amount of work performed in the index consistency check.
*** Bug 27551 has been marked as a duplicate of this bug. ***
While trying to eliminate the need for the consistency check, a job is created to re-index rt.jar before the consistencyCheck() is called, because it appears as if it was 'added' to the classpath. Why does it appear added? SetClasspathOperation.generateClasspathChangeDeltas(IClasspathEntry[],...) line: 274 SetClasspathOperation.updateClasspath() line: 558 SetClasspathOperation.executeOperation() line: 242 SetClasspathOperation(JavaModelOperation).execute() line: 326 SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaProject(JavaElement).runOperation(JavaModelOperation,...) line: 562 JavaProject.setRawClasspath(IClasspathEntry[],...) line: 2090 JavaCore$4.run(IProgressMonitor) line: 2800 BatchOperation.executeOperation() line: 34 BatchOperation(JavaModelOperation).execute() line: 326 BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaCore.run(IWorkspaceRunnable, IProgressMonitor) line: 2383 JavaCore.updateVariableValues(String[], IPath[], IProgressMonitor) line: 2788 JavaCore.setClasspathVariables(String[], IPath[], IProgressMonitor) line: 2589 JavaCore.setClasspathVariable(String, IPath, IProgressMonitor) line: 2561 JavaClasspathVariablesInitializer.setJREVariable(IPath, String) line: 111 JavaClasspathVariablesInitializer.initialize(String) line: 55 JavaCore$2.run() line: 849 InternalPlatform.run(ISafeRunnable) line: 839 Platform.run(ISafeRunnable) line: 413 JavaCore.getClasspathVariable(String) line: 844 JavaCore.getResolvedVariablePath(IPath) line: 1487 JavaCore.getResolvedClasspathEntry(IClasspathEntry) line: 1454 JavaProject.getResolvedClasspath(IClasspathEntry[],...) line: 1383 SetClasspathOperation.updateProjectReferencesIfNecessary() line: 703 SetClasspathOperation.executeOperation() line: 228 SetClasspathOperation(JavaModelOperation).execute() line: 326 SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaProject(JavaElement).runOperation(JavaModelOperation,...) line: 562 JavaProject.setRawClasspath(IClasspathEntry[],...) line: 2090 JavaCore$4.run(IProgressMonitor) line: 2800 BatchOperation.executeOperation() line: 34 BatchOperation(JavaModelOperation).execute() line: 326 BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaCore.run(IWorkspaceRunnable, IProgressMonitor) line: 2383 JavaCore.updateVariableValues(String[], IPath[], IProgressMonitor) line: 2788 JavaCore.setClasspathVariables(String[], IPath[], IProgressMonitor) line: 2589 JavaCore.setClasspathVariable(String, IPath, IProgressMonitor) line: 2561 JavaClasspathVariablesInitializer.setJREVariable(IPath, String) line: 111 JavaClasspathVariablesInitializer.initialize(String) line: 55 JavaCore$2.run() line: 849 InternalPlatform.run(ISafeRunnable) line: 839 Platform.run(ISafeRunnable) line: 413 JavaCore.getClasspathVariable(String) line: 844 JavaCore.getResolvedVariablePath(IPath) line: 1487 JavaCore.getResolvedClasspathEntry(IClasspathEntry) line: 1453 JavaProject.getResolvedClasspath(IClasspathEntry[],...) line: 1383 SetClasspathOperation.updateProjectReferencesIfNecessary() line: 703 SetClasspathOperation.executeOperation() line: 228 SetClasspathOperation(JavaModelOperation).execute() line: 326 SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaProject(JavaElement).runOperation(JavaModelOperation,...) line: 562 JavaProject.setRawClasspath(IClasspathEntry[],...) line: 2090 JavaCore$4.run(IProgressMonitor) line: 2800 BatchOperation.executeOperation() line: 34 BatchOperation(JavaModelOperation).execute() line: 326 BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaCore.run(IWorkspaceRunnable, IProgressMonitor) line: 2383 JavaCore.updateVariableValues(String[], IPath[], IProgressMonitor) line: 2788 JavaCore.setClasspathVariables(String[], IPath[], IProgressMonitor) line: 2589 JavaCore.setClasspathVariable(String, IPath, IProgressMonitor) line: 2561 JavaClasspathVariablesInitializer.setJREVariable(IPath, String) line: 111 JavaClasspathVariablesInitializer.initialize(String) line: 55 JavaCore$2.run() line: 849 InternalPlatform.run(ISafeRunnable) line: 839 Platform.run(ISafeRunnable) line: 413 JavaCore.getClasspathVariable(String) line: 844 JavaCore.getResolvedVariablePath(IPath) line: 1487 JavaCore.getResolvedClasspathEntry(IClasspathEntry) line: 1402 JavaProject.getResolvedClasspath(IClasspathEntry[],...) line: 1383 JavaProject.getResolvedClasspath(boolean, boolean) line: 1328 JavaProject.getResolvedClasspath(boolean) line: 1305 IndexManager$2.run(IProgressMonitor) line: 405 BatchOperation.executeOperation() line: 34 BatchOperation(JavaModelOperation).execute() line: 326 BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 626 Workspace.run(IWorkspaceRunnable, IProgressMonitor) line: 1581 JavaCore.run(IWorkspaceRunnable, IProgressMonitor) line: 2383 IndexManager.reset() line: 397 JavaCore.startIndexing() line: 2659 JavaCore.startup() line: 2691
Moved the SaveIndex jobs to immediately after the IndexAllProject & IndexBinaryFolder jobs... instead of after all of these jobs are complete.
Created attachment 2717 [details] opeing preference page one more scenario where this would help is first opening of preference page (72% of time is spend in startIndexing())
Related to bug 19303 and bug 27289
*** Bug 28073 has been marked as a duplicate of this bug. ***
Deferred to M5. Changes are quite big and too close to M4. Need more testing.
Removed all index consistency checks from JDT Core startup. Released changes to persisently keep track of saved & consistent index files... any request to an inconsistent index adds a rebuildAll job to the queue.
Verified.