From 3097c2f126e5ee04236257b1b95711d1b5dfcc2e Mon Sep 17 00:00:00 2001 From: Bogdan Gheorghe Date: Wed, 30 Mar 2005 14:35:50 +0000 Subject: [PATCH] Modified IndexManger to get rid of an exisiting index for a project when an indexer gets changed. --- core/org.eclipse.cdt.core/index/ChangeLog | 6 ++++++ .../core/search/indexing/IndexManager.java | 14 +++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 55b0789b47e..365eafc7649 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,3 +1,9 @@ +2005-03-30 Bogdan Gheorghe + Modified IndexManger to get rid of an exisiting index for a project when an + indexer gets changed. This is needed in the case where two indexers share the same + storage (which is the current case for all indexers) to avoid them treading + on each other. + 2005-03-29 Bogdan Gheorghe Changed indexer change notification to run as a job. Some additiional ICDTIndexer changes. diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java index 251221105be..0c836686f7c 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java @@ -334,10 +334,18 @@ public class IndexManager extends JobManager{ * @param project */ public void indexerChangeNotification(IProject project) { + + //Get rid of any jobs scheduled by the old indexer + this.discardJobs(project.getName()); + + //Get rid of the old index file + ICDTIndexer currentIndexer = getIndexerForProject(project); + IIndexStorage storage = currentIndexer.getIndexStorage(); + if (storage instanceof CIndexStorage) + ((CIndexStorage) storage).removeIndex(project.getFullPath()); + monitor.enterWrite(); - try{ - //Get rid of any jobs scheduled by the old indexer - this.discardJobs(project.getName()); + try{ //Purge the old indexer from the indexer map Object e = indexerMap.remove(project); } finally {