[513746] Oomph cache is not cleared when reloading an update site
manually

https://bugs.eclipse.org/bugs/show_bug.cgi?id=513746
diff --git a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingRepositoryManager.java b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingRepositoryManager.java
index f5500a7..7892cde 100644
--- a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingRepositoryManager.java
+++ b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingRepositoryManager.java
@@ -49,6 +49,7 @@
 import org.eclipse.osgi.util.NLS;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.lang.reflect.Method;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -200,8 +201,11 @@
             }
             catch (ProvisionException e)
             {
-              failure = e;
-              break;
+              if (!(e.getStatus().getException() instanceof FileNotFoundException))
+              {
+                failure = e;
+                break;
+              }
             }
 
             if (result != null)
diff --git a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingTransport.java b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingTransport.java
index c6ffbb3..ca74c4d 100644
--- a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingTransport.java
+++ b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/CachingTransport.java
@@ -387,9 +387,24 @@
 
   private long delegateGetLastModified(URI uri, IProgressMonitor monitor) throws CoreException, FileNotFoundException, AuthenticationFailedException
   {
-    long lastModified = delegate.getLastModified(uri, monitor);
-
     File cacheFile = getCacheFile(uri);
+
+    long lastModified;
+
+    try
+    {
+      lastModified = delegate.getLastModified(uri, monitor);
+    }
+    catch (FileNotFoundException ex)
+    {
+      synchronized (getLock(uri))
+      {
+        cacheFile.delete();
+      }
+
+      throw ex;
+    }
+
     if (cacheFile.length() == 0)
     {
       return lastModified - 1;