[ 
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

Reply via email to