diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
index bad4af5..ed9587b 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
@@ -305,29 +305,26 @@
 		}
 	}
 
-	public IndexContainer refresh(boolean block) {
-		try {
-			Thread.sleep(100);
-		} catch (InterruptedException e1) {
-		}
+	public IndexContainer refresh() {
+		List<SearcherManager> managers = new LinkedList<>();
 		synchronized (fIndexSearchers) {
 			for (Map<Integer, SearcherManager> searcher : fIndexSearchers
 					.values()) {
 				for (SearcherManager man : searcher.values()) {
-					try {
-						if (man != null) {
-							if (block) {
-								man.maybeRefreshBlocking();
-							} else {
-								man.maybeRefresh();
-							}
-						}
-					} catch (IOException e) {
-						Logger.logException(e);
+					if (man != null) {
+						managers.add(man);
 					}
 				}
 			}
 		}
+		for (SearcherManager man : managers) {
+			try {
+				man.maybeRefreshBlocking();
+			} catch (IOException e) {
+				Logger.logException(e);
+			}
+		}
+
 		return this;
 
 	}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneManager.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneManager.java
index d5e4aca..bef82ba 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneManager.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneManager.java
@@ -104,7 +104,7 @@
 		try {
 			for (IndexContainer indexContainer : getDirtyContainers()) {
 				indexContainer.commit();
-				indexContainer.refresh(true);
+				indexContainer.refresh();
 			}
 
 		} catch (Exception e) {
@@ -417,8 +417,4 @@
 		}
 		indexRoot.toFile().mkdir();
 	}
-
-	public void refreshContainer(String fContainer, boolean block) {
-		getIndexContainer(fContainer).refresh(block);
-	}
 }
