diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java
index 81117f4..892e062 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java
@@ -29,7 +29,7 @@
 	public static final String TYPE = "org.eclipse.equinox.p2.extensionlocation.artifactRepository"; //$NON-NLS-1$
 	public static final Integer VERSION = new Integer(1);
 
-	final IFileArtifactRepository artifactRepository;
+	IFileArtifactRepository artifactRepository;
 	private File base;
 	private Object state = SiteListener.UNINITIALIZED;
 
@@ -64,9 +64,21 @@
 		if (state == SiteListener.INITIALIZED || state == SiteListener.INITIALIZING)
 			return;
 		// if the repo has not been synchronized for us already, synchronize it.
+		// Note: this will reload "artifactRepository"
 		SiteListener.synchronizeRepositories(null, this, base);
 	}
 
+	void reload() {
+		try {
+			ExtensionLocationArtifactRepository repo = (ExtensionLocationArtifactRepository) new ExtensionLocationArtifactRepositoryFactory().load(getLocation(), null);
+			artifactRepository = repo.artifactRepository;
+		} catch (ProvisionException e) {
+			//unexpected
+			e.printStackTrace();
+			throw new IllegalStateException(e.getMessage());
+		}
+	}
+
 	void state(Object value) {
 		state = value;
 	}
@@ -187,10 +199,12 @@
 	}
 
 	public Map getProperties() {
+		ensureInitialized();
 		return artifactRepository.getProperties();
 	}
 
 	public String setProperty(String key, String value) {
+		ensureInitialized();
 		return artifactRepository.setProperty(key, value);
 	}
 }
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationMetadataRepository.java b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationMetadataRepository.java
index 5cc250e..c700035 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationMetadataRepository.java
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationMetadataRepository.java
@@ -30,7 +30,7 @@
 	public static final String TYPE = "org.eclipse.equinox.p2.extensionlocation.metadataRepository"; //$NON-NLS-1$
 	public static final Integer VERSION = new Integer(1);
 
-	final IMetadataRepository metadataRepository;
+	IMetadataRepository metadataRepository;
 	private File base;
 	private Object state = SiteListener.UNINITIALIZED;
 
@@ -64,9 +64,21 @@
 		if (state == SiteListener.INITIALIZED || state == SiteListener.INITIALIZING)
 			return;
 		// if the repo has not been synchronized for us already, synchronize it.
+		// Note: this will reload "metadataRepository"
 		SiteListener.synchronizeRepositories(this, null, base);
 	}
 
+	void reload() {
+		try {
+			ExtensionLocationMetadataRepository repo = (ExtensionLocationMetadataRepository) new ExtensionLocationMetadataRepositoryFactory().load(getLocation(), null);
+			metadataRepository = repo.metadataRepository;
+		} catch (ProvisionException e) {
+			//unexpected
+			e.printStackTrace();
+			throw new IllegalStateException(e.getMessage());
+		}
+	}
+
 	void state(Object value) {
 		state = value;
 	}
@@ -154,6 +166,7 @@
 	 * @see org.eclipse.equinox.internal.provisional.spi.p2.core.repository.AbstractRepository#getProperties()
 	 */
 	public Map getProperties() {
+		ensureInitialized();
 		return metadataRepository.getProperties();
 	}
 
@@ -162,6 +175,7 @@
 	}
 
 	public String setProperty(String key, String value) {
+		ensureInitialized();
 		return metadataRepository.setProperty(key, value);
 	}
 }
diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java
index 9635a05..1eab349 100644
--- a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java
+++ b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/SiteListener.java
@@ -73,9 +73,11 @@
 	public static synchronized void synchronizeRepositories(ExtensionLocationMetadataRepository metadataRepository, ExtensionLocationArtifactRepository artifactRepository, File base) {
 		try {
 			if (metadataRepository == null) {
+				artifactRepository.reload();
 				ExtensionLocationMetadataRepositoryFactory factory = new ExtensionLocationMetadataRepositoryFactory();
 				metadataRepository = (ExtensionLocationMetadataRepository) factory.load(artifactRepository.getLocation(), null);
 			} else if (artifactRepository == null) {
+				metadataRepository.reload();
 				ExtensionLocationArtifactRepositoryFactory factory = new ExtensionLocationArtifactRepositoryFactory();
 				artifactRepository = (ExtensionLocationArtifactRepository) factory.load(metadataRepository.getLocation(), null);
 			}
