public void waitForIndexationCompletion(DimensionIndex di, int timeOutInSec) throws InterruptedException { logger.info("Checking indexation completion for index " + di.getDimensionName()); synchronized (di) { if (di.getStatus() != Status.DONE) { Thread.sleep(timeOutInSec * 1000); if (!lastIndexedDimension.containsKey(di.getDimension().getId()) && !lastIndexedCorrelation.containsKey(di.getDimension().getId())) { // handle empty index di.setDone(); } else { if (!di.isCorrelationIndexationDone( lastIndexedCorrelation.get(di.getDimension().getId()))) { logger.info("timeout during correlation indexing " + di.getDimensionName()); di.setPermanentError("timeout during correlation indexing"); } if (di.isDimensionIndexationDone(lastIndexedDimension.get(di.getDimension().getId()))) { logger.info("indexing ok " + di.getDimensionName()); di.setDone(); } else { logger.info("timeout during indexing " + di.getDimensionName()); di.setPermanentError("timeout during indexing"); } } } } }
@Override public Status getStatus() { if (sourceIndex == null) { return Status.STALE; } else { return sourceIndex.getStatus(); } }