mirror of
https://github.com/sismics/docs.git
synced 2024-11-22 14:07:55 +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.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.store.Directory;
|
||||
import org.apache.lucene.store.RAMDirectory;
|
||||
import org.apache.lucene.store.SimpleFSDirectory;
|
||||
import org.apache.lucene.store.SingleInstanceLockFactory;
|
||||
import org.apache.lucene.util.Version;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -64,6 +68,26 @@ public class IndexingService extends AbstractScheduledService {
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user