Bug 389553 - Removing and re-synchronizing project results in
synchronization error
Change-Id: I2e04852e772a02ce33a69e35419b9ec4953b744e
Signed-off-by: John Eblen <jeblen@acm.org>
diff --git a/rdt/org.eclipse.ptp.rdt.sync.git.core/src/org/eclipse/ptp/internal/rdt/sync/git/core/GitSyncService.java b/rdt/org.eclipse.ptp.rdt.sync.git.core/src/org/eclipse/ptp/internal/rdt/sync/git/core/GitSyncService.java
index 852ad63..f53bb43 100644
--- a/rdt/org.eclipse.ptp.rdt.sync.git.core/src/org/eclipse/ptp/internal/rdt/sync/git/core/GitSyncService.java
+++ b/rdt/org.eclipse.ptp.rdt.sync.git.core/src/org/eclipse/ptp/internal/rdt/sync/git/core/GitSyncService.java
@@ -340,11 +340,19 @@
* org.eclipse.core.resources.IProject)
*/
@Override
- public void close(IProject project) throws RemoteSyncException {
+ public synchronized void close(IProject project) throws RemoteSyncException {
JGitRepo repo = getLocalJGitRepo(project, null);
if (repo != null) {
repo.close();
}
+
+ Iterator<Map.Entry<IPath, JGitRepo>> it = localDirectoryToJGitRepoMap.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<IPath, JGitRepo> entry = it.next();
+ if (entry.getValue() == repo) {
+ it.remove();
+ }
+ }
}
/*