Fix for Bug 33493 Workspaces created by 2.0.3 cannot be opened by 2.0.2 from same dir
diff --git a/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java b/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java
index f2ce7b6..416393c 100644
--- a/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java
+++ b/bundles/org.eclipse.core.boot/src/org/eclipse/core/internal/boot/PlatformConfiguration.java
@@ -104,7 +104,7 @@
 	
 	private static final String CFG_VERSION = "version"; //$NON-NLS-1$
 	private static final String CFG_TRANSIENT = "transient"; //$NON-NLS-1$
-	private static final String VERSION = "1.0"; //$NON-NLS-1$
+	private static final String VERSION = "2.1"; //$NON-NLS-1$
 	private static final String EOF = "eof"; //$NON-NLS-1$
 	private static final int CFG_LIST_LENGTH = 10;
 	
@@ -1506,6 +1506,32 @@
 		resetInitializationLocation(initDir);
 	}
 	
+	private void resetUpdateManagerState(URL url) throws IOException {
+		// [20111]
+		if (!supportsDetection(url))
+			return; // can't do ...
+		
+		// find directory where the platform configuration file is	
+		URL resolved = resolvePlatformURL(url);
+		File initCfg = new File(resolved.getFile().replace('/',File.separatorChar));
+		File initDir = initCfg.getParentFile();
+		
+		// Find the Update Manager State directory
+		if (initDir == null || !initDir.exists() || !initDir.isDirectory())
+			return;
+		String temp = initCfg.getName()+".metadata";		
+		File UMDir = new File(initDir,temp+'/');
+	
+		// Attempt to rename it
+		if (UMDir == null || !UMDir.exists() || !UMDir.isDirectory())
+		return;
+		Date now = new Date();
+		boolean renamed = UMDir.renameTo(new File(initDir,temp+now.getTime()+'/'));
+		
+		if (!renamed)
+			resetInitializationLocation(UMDir);
+	}	
+	
 	private void resetInitializationLocation(File dir) {
 		// [20111]
 		if (dir == null || !dir.exists() || !dir.isDirectory())
@@ -1893,7 +1919,10 @@
 		
 		// check version
 		String v = props.getProperty(CFG_VERSION);
-		if (!VERSION.equals(v)) {			
+		if (!VERSION.equals(v)) {	
+			// the state is invalid, delete any files under the directory
+			// bug 33493
+			resetUpdateManagerState(url);	
 			throw new IOException(Policy.bind("cfig.badVersion",v)); //$NON-NLS-1$
 		}