Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lucene/CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 =======================

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> UNSUPPORTED_INDEXES;
Expand Down Expand Up @@ -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);
Expand All @@ -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)
Expand Down
10 changes: 6 additions & 4 deletions lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down Expand Up @@ -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;
}
Expand Down