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 ef75f21..5de745e 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
@@ -285,9 +285,6 @@
 					return true;
 				}
 			}
-			if (fTimestampsWriter != null) {
-				return fTimestampsWriter.hasUncommittedChanges();
-			}
 		}
 		return false;
 	}
@@ -295,34 +292,19 @@
 	void commit(IProgressMonitor monitor) {
 		int ticks = 1;
 		for (Map<?, ?> dataWriters : fIndexWriters.values()) {
-			ticks += dataWriters.size() * 2;
+			ticks += dataWriters.size();
 		}
 		SubMonitor subMonitor = SubMonitor.convert(monitor, ticks);
 		try {
 			for (Entry<IndexType, Map<Integer, IndexWriter>> entry : fIndexWriters
 					.entrySet()) {
 				Map<Integer, IndexWriter> dataWriters = entry.getValue();
-				Map<Integer, SearcherManager> dataSearchers = fIndexSearchers
-						.get(entry.getKey());
 				for (Entry<Integer, IndexWriter> writerEntry : dataWriters
 						.entrySet()) {
 					IndexWriter writer = writerEntry.getValue();
 					if (writer != null && !subMonitor.isCanceled()) {
 						writer.commit();
 						subMonitor.worked(1);
-						if (dataSearchers != null) {
-							SearcherManager m = dataSearchers
-									.get(writerEntry.getKey());
-							if (m != null) {
-								try {
-									m.maybeRefreshBlocking();
-								} catch (IOException e) {
-									dataSearchers.put(writerEntry.getKey(),
-											null);
-								}
-							}
-						}
-						subMonitor.worked(1);
 					}
 				}
 			}
