diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index e34082d60ce9..c2333519fa15 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -132,6 +132,7 @@ Other * GITHUB#14817: Refactor some complex uses of PriorityQueue to use Comparators. (Simon Cooper) * GITHUB#14607: Index open performs version check on each segment, ignores indexCreatedVersionMajor (Rahul Goswami) +* GITHUB#15454: Restore binary readability for 8.x indexes like previously and throw IndexFormatTooOldException for an older default codec not found on classpath (Rahul Goswami) ======================= Lucene 10.4.0 ======================= diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/backward_index/TestAncientIndicesCompatibility.java b/lucene/backward-codecs/src/test/org/apache/lucene/backward_index/TestAncientIndicesCompatibility.java index af3cf28c93ad..246e6fe01b27 100644 --- a/lucene/backward-codecs/src/test/org/apache/lucene/backward_index/TestAncientIndicesCompatibility.java +++ b/lucene/backward-codecs/src/test/org/apache/lucene/backward_index/TestAncientIndicesCompatibility.java @@ -45,7 +45,6 @@ import org.apache.lucene.tests.util.LuceneTestCase; import org.apache.lucene.tests.util.TestUtil; import org.apache.lucene.util.IOUtils; -import org.apache.lucene.util.Version; public class TestAncientIndicesCompatibility extends LuceneTestCase { static final Set UNSUPPORTED_INDEXES; @@ -200,7 +199,7 @@ public void testUnsupportedOldIndexes() throws Exception { checker.setInfoStream(new PrintStream(bos, false, UTF_8)); checker.setLevel(CheckIndex.Level.MIN_LEVEL_FOR_INTEGRITY_CHECKS); CheckIndex.Status indexStatus = checker.checkIndex(); - if (getVersion(version).onOrAfter(Version.fromBits(8, 6, 0))) { + if (version.startsWith("8.") || version.startsWith("9.")) { assertTrue(indexStatus.clean); } else { assertFalse(indexStatus.clean); @@ -218,18 +217,6 @@ public void testUnsupportedOldIndexes() throws Exception { } } - private Version getVersion(String version) { - if (version.startsWith("5x")) { - // couple of indices in unsupported_indices.txt start with "5x' - return Version.fromBits(5, 0, 0); - } - String[] versionBitsStr = version.split("[.\\-]"); - return Version.fromBits( - Integer.parseInt(versionBitsStr[0]), - Integer.parseInt(versionBitsStr[1]), - Integer.parseInt(versionBitsStr[2])); - } - // #12895: test on a carefully crafted 9.8.0 index (from a small contiguous subset // of wikibigall unique terms) that shows the read-time exception of // IntersectTermsEnum (used by WildcardQuery) diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java b/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java index c6042baf0b03..dac837a30801 100644 --- a/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java +++ b/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java @@ -328,7 +328,7 @@ public static final SegmentInfos readCommit( throw new IndexFormatTooOldException( input, magic, CodecUtil.CODEC_MAGIC, CodecUtil.CODEC_MAGIC); } - format = CodecUtil.checkHeaderNoMagic(input, "segments", VERSION_86, VERSION_CURRENT); + format = CodecUtil.checkHeaderNoMagic(input, "segments", VERSION_74, VERSION_CURRENT); byte[] id = new byte[StringHelper.ID_LENGTH]; input.readBytes(id, 0, id.length); CodecUtil.checkIndexHeaderSuffix(input, Long.toString(generation, Character.MAX_RADIX)); @@ -529,11 +529,13 @@ private static Codec readCodec(DataInput input) throws IOException { } catch (IllegalArgumentException e) { // maybe it's an old default codec that moved if (name.startsWith("Lucene")) { - throw new IllegalArgumentException( + throw new IndexFormatTooOldException( + input, "Could not load codec '" + name - + "'. Did you forget to add lucene-backward-codecs.jar?", - e); + + "'. " + + e.getMessage() + + ". Did you forget to add lucene-backward-codecs.jar?"); } throw e; }