# HG changeset patch # User Ed Swartz # Date 1285086938 18000 # Node ID 588b26a6b387ddcf824d321d98842b1f4768c349 # Parent 8a7ea8bb2e31e34169129a5a80883cce02265594# Parent efbf4aa05426ef330e41f14e48d387297e23ad9a Merge commit diff -r efbf4aa05426 -r 588b26a6b387 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildManager.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildManager.java Tue Sep 21 11:06:28 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideBuildManager.java Tue Sep 21 11:35:38 2010 -0500 @@ -443,6 +443,9 @@ resourceChangedListener.addResource(wsPath, handler); } } + + // make sure .cproject itself is never accidentally listened to (possible cause in bug 12139) + resourceChangedListener.removeResource(new Path(cpi.getProject().getName()).append(".cproject"), handler); } public void installedSdkChanged(SDKChangeEventType eventType) { diff -r efbf4aa05426 -r 588b26a6b387 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java Tue Sep 21 11:06:28 2010 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java Tue Sep 21 11:35:38 2010 -0500 @@ -95,6 +95,7 @@ private final String ENTRY_DELIMTER = ";"; //$NON-NLS-1$ private final String LOCAL_MARKER = "[LOCAL]"; //$NON-NLS-1$ + private Job persistCacheJob; public CarbideLanguageData(ICarbideBuildConfiguration config) { @@ -154,24 +155,34 @@ // But we must save the cache in a workspace job because this code // is usually called when the project description is being read for // the first time (thus saving just throws an exception). - Job job = new Job("Saving Carbide indexer cache for " + carbideBuildConfig.toString()) { - - @Override - protected IStatus run(IProgressMonitor monitor) { - persistCache(monitor); - - return Status.OK_STATUS; + + // Bug 12139: oops, this job was running over and over again without end + synchronized (this) { + if (persistCacheJob == null) { + persistCacheJob = new Job("Saving Carbide indexer cache for " + carbideBuildConfig.toString()) { + + @Override + protected IStatus run(IProgressMonitor monitor) { + persistCache(monitor); + + return Status.OK_STATUS; + } + + }; + persistCacheJob.setRule(ResourcesPlugin.getWorkspace().getRoot()); + persistCacheJob.setSystem(true); + persistCacheJob.setPriority(Job.LONG); } - - }; - job.setRule(ResourcesPlugin.getWorkspace().getRoot()); - job.setSystem(true); - job.setPriority(Job.LONG); - job.schedule(5000); - // This scheduling delay is a gross HACK: WorkspaceModelProvider#saveStorage() - // has had and still has problems with deadlocks on saving - // model content. This job exacerbates it unless we wait a - // while before locking the workspace. + + // don't reschedule if it has not run yet + if (persistCacheJob.getResult() == null || persistCacheJob.getState() == Job.NONE) { + persistCacheJob.schedule(5000); + // This scheduling delay is a gross HACK: WorkspaceModelProvider#saveStorage() + // has had and still has problems with deadlocks on saving + // model content. This job exacerbates it unless we wait a + // while before locking the workspace. + } + } } switch(kind) { diff -r efbf4aa05426 -r 588b26a6b387 core/com.nokia.carbide.cpp.doc.user/html/qt_help/images/qt_dlg_add_version.png diff -r efbf4aa05426 -r 588b26a6b387 core/com.nokia.carbide.cpp.doc.user/html/qt_help/images/qt_dlg_edit_version.png diff -r efbf4aa05426 -r 588b26a6b387 core/com.nokia.carbide.cpp.doc.user/html/qt_help/images/qt_pref_panel.png