From 82a89c35edc6a6680dfdbcf62cd5b2306a8188cd Mon Sep 17 00:00:00 2001 From: John Cortell Date: Wed, 22 Aug 2012 15:08:31 -0500 Subject: [PATCH] BaseUITestCase.waitForIndexer() intermittently throws exception --- .../eclipse/cdt/ui/tests/BaseUITestCase.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java index 7618b5e913c..04e6abcb899 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java @@ -125,20 +125,25 @@ public class BaseUITestCase extends BaseTestCase { if (CCorePlugin.getIndexManager().isIndexerSetupPostponed(CoreModel.getDefault().create(file.getProject()))) continue; - index.acquireReadLock(); try { - IIndexFile[] indexFiles= index.getFiles(IndexLocationFactory.getWorkspaceIFL(file)); - for (IIndexFile indexFile : indexFiles) { - if (indexFile != null && indexFile.getTimestamp() >= file.getLocalTimeStamp()) { - return; + index.acquireReadLock(); + try { + IIndexFile[] indexFiles= index.getFiles(IndexLocationFactory.getWorkspaceIFL(file)); + for (IIndexFile indexFile : indexFiles) { + if (indexFile != null && indexFile.getTimestamp() >= file.getLocalTimeStamp()) { + return; + } + } + } finally { + index.releaseReadLock(); + int time= (int) (endTime - System.currentTimeMillis()); + if (time > 0) { + CCorePlugin.getIndexManager().joinIndexer(time, npm()); } } - } finally { - index.releaseReadLock(); - int time= (int) (endTime - System.currentTimeMillis()); - if (time > 0) { - CCorePlugin.getIndexManager().joinIndexer(time, npm()); - } + } + catch (InterruptedException e) { + // index.acquireReadLock() can be interrupted } } throw new Exception("Indexer did not complete in time!");