This is an automated email from the ASF dual-hosted git repository. rnewson pushed a commit to branch lucene-10 in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit deb3d7057955295c926f160b384efab28a226f54 Author: Robert Newson <[email protected]> AuthorDate: Wed Aug 6 16:15:45 2025 +0100 open latest version of index --- .../apache/couchdb/nouveau/core/IndexManager.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java index 623963d81..909884aa2 100644 --- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java +++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/IndexManager.java @@ -40,11 +40,13 @@ import org.apache.couchdb.nouveau.lucene.LuceneIndex; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.index.IndexWriterConfig.OpenMode; import org.apache.lucene.misc.store.DirectIODirectory; import org.apache.lucene.search.SearcherFactory; import org.apache.lucene.search.SearcherManager; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; +import org.apache.lucene.util.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -380,8 +382,11 @@ public final class IndexManager implements Managed { final Path path = indexPath(name); final IndexDefinition indexDefinition = loadIndexDefinition(name); final Analyzer analyzer = LuceneAnalyzerFactory.fromDefinition(indexDefinition); - final Directory dir = new DirectIODirectory(FSDirectory.open(path.resolve("10"))); + final int version = getIndexVersion(path); + final Path indexPath = path.resolve(Integer.toString(version)); + final Directory dir = new DirectIODirectory(FSDirectory.open(indexPath)); final IndexWriterConfig config = new IndexWriterConfig(analyzer); + config.setOpenMode(version == Version.LATEST.major ? OpenMode.CREATE_OR_APPEND : OpenMode.APPEND); config.setUseCompoundFile(false); final IndexWriter writer = new IndexWriter(dir, config); final long updateSeq = getSeq(writer, "update_seq"); @@ -390,6 +395,19 @@ public final class IndexManager implements Managed { return new LuceneIndex(analyzer, writer, updateSeq, purgeSeq, searcherManager); } + /** + * Find highest version index on disk, or latest version if none. + */ + private int getIndexVersion(final Path path) throws IOException { + if (Files.exists(path.resolve("10"))) { + return 10; + } + if (Files.exists(path.resolve("9"))) { + return 9; + } + return 10; + } + private long getSeq(final IndexWriter writer, final String key) throws IOException { final Iterable<Map.Entry<String, String>> commitData = writer.getLiveCommitData(); if (commitData == null) {
