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();
+			}
+		}
 	}
 
 		/*