mirror of
https://github.com/sismics/docs.git
synced 2024-11-22 22:07:56 +01:00
#62: Rebuild index if too old or corrupted
This commit is contained in:
parent
7f19f8c112
commit
a7a6adfa34
@ -4,11 +4,15 @@ import java.io.IOException;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.apache.lucene.index.CheckIndex;
|
||||||
|
import org.apache.lucene.index.CheckIndex.Status;
|
||||||
|
import org.apache.lucene.index.CheckIndex.Status.SegmentInfoStatus;
|
||||||
import org.apache.lucene.index.DirectoryReader;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.store.Directory;
|
import org.apache.lucene.store.Directory;
|
||||||
import org.apache.lucene.store.RAMDirectory;
|
import org.apache.lucene.store.RAMDirectory;
|
||||||
import org.apache.lucene.store.SimpleFSDirectory;
|
import org.apache.lucene.store.SimpleFSDirectory;
|
||||||
import org.apache.lucene.store.SingleInstanceLockFactory;
|
import org.apache.lucene.store.SingleInstanceLockFactory;
|
||||||
|
import org.apache.lucene.util.Version;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -64,6 +68,26 @@ public class IndexingService extends AbstractScheduledService {
|
|||||||
log.error("Error initializing Lucene index", e);
|
log.error("Error initializing Lucene index", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check index version and rebuild it if necessary
|
||||||
|
log.info("Checking index health and version");
|
||||||
|
try (CheckIndex checkIndex = new CheckIndex(directory)) {
|
||||||
|
Status status = checkIndex.checkIndex();
|
||||||
|
if (status.clean) {
|
||||||
|
for (SegmentInfoStatus segmentInfo : status.segmentInfos) {
|
||||||
|
if (!segmentInfo.version.onOrAfter(Version.LATEST)) {
|
||||||
|
RebuildIndexAsyncEvent rebuildIndexAsyncEvent = new RebuildIndexAsyncEvent();
|
||||||
|
AppContext.getInstance().getAsyncEventBus().post(rebuildIndexAsyncEvent);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
RebuildIndexAsyncEvent rebuildIndexAsyncEvent = new RebuildIndexAsyncEvent();
|
||||||
|
AppContext.getInstance().getAsyncEventBus().post(rebuildIndexAsyncEvent);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("Error checking index", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user