[ https://issues.apache.org/jira/browse/LUCENE-9222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17037263#comment-17037263 ]
Cassandra Targett commented on LUCENE-9222: ------------------------------------------- I'm trying to wrap my head around this, but don't really get the idea. Is this proposal effectively saying that any index using a non-default codec will always throw a IndexFormatTooOldException on upgrade, even between minor versions? Or is it more about improving the type of error that is thrown if the non-default codec has been changed after an upgrade? > Detect upgrades with non-default formats > ---------------------------------------- > > Key: LUCENE-9222 > URL: https://issues.apache.org/jira/browse/LUCENE-9222 > Project: Lucene - Core > Issue Type: Wish > Reporter: Adrien Grand > Priority: Minor > > Lucene doesn't give any backward-compatibility guarantees with non-default > formats, but doesn't try to detect such misuse either, and a couple users > fell in this trap over the years, see e.g. SOLR-14254. > What about dynamically creating the version number of the index format based > on the current Lucene version, so that Lucene would fail with an > IndexFormatTooOldException with non-default formats instead of a confusing > CorruptIndexException. The change would consist of doing something like that > for all our non-default index formats: > {code} > diff --git > a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsWriter.java > b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsWriter.java > index fcc0d00a593..18b35760aec 100644 > --- > a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsWriter.java > +++ > b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsWriter.java > @@ -41,6 +41,7 @@ import org.apache.lucene.util.BytesRef; > import org.apache.lucene.util.FixedBitSet; > import org.apache.lucene.util.IOUtils; > import org.apache.lucene.util.IntsRefBuilder; > +import org.apache.lucene.util.Version; > import org.apache.lucene.util.fst.FSTCompiler; > import org.apache.lucene.util.fst.FST; > import org.apache.lucene.util.fst.Util; > @@ -123,7 +124,7 @@ import org.apache.lucene.util.fst.Util; > public class FSTTermsWriter extends FieldsConsumer { > static final String TERMS_EXTENSION = "tfp"; > static final String TERMS_CODEC_NAME = "FSTTerms"; > - public static final int TERMS_VERSION_START = 2; > + public static final int TERMS_VERSION_START = (Version.LATEST.major << 16) > | (Version.LATEST.minor << 8) | Version.LATEST.bugfix; > public static final int TERMS_VERSION_CURRENT = TERMS_VERSION_START; > > final PostingsWriterBase postingsWriter; > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org