diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene101/Lucene101PostingsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene101/Lucene101PostingsReader.java index 08df1b13effb..c30b6bd96018 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene101/Lucene101PostingsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene101/Lucene101PostingsReader.java @@ -38,6 +38,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.ByteArrayDataInput; @@ -1404,15 +1405,15 @@ static FreqAndNormBuffer readImpacts(ByteArrayDataInput in, FreqAndNormBuffer re } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { if (docIn != null) { - CodecUtil.checksumEntireFile(docIn); + CodecUtil.checksumEntireFile(docIn, merge); } if (posIn != null) { - CodecUtil.checksumEntireFile(posIn); + CodecUtil.checksumEntireFile(posIn, merge); } if (payIn != null) { - CodecUtil.checksumEntireFile(payIn); + CodecUtil.checksumEntireFile(payIn, merge); } } diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene102/Lucene102BinaryQuantizedVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene102/Lucene102BinaryQuantizedVectorsReader.java index a9683ab80394..3bf41e40dfbf 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene102/Lucene102BinaryQuantizedVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene102/Lucene102BinaryQuantizedVectorsReader.java @@ -43,6 +43,7 @@ import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.KnnVectorValues; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; import org.apache.lucene.index.VectorEncoding; @@ -211,9 +212,9 @@ public RandomVectorScorer getRandomVectorScorer(String field, byte[] target) thr } @Override - public void checkIntegrity() throws IOException { - rawVectorsReader.checkIntegrity(); - CodecUtil.checksumEntireFile(quantizedVectorData); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + rawVectorsReader.checkIntegrity(merge); + CodecUtil.checksumEntireFile(quantizedVectorData, merge); } @Override diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene103/Lucene103PostingsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene103/Lucene103PostingsReader.java index 617550ec6a1d..1744a86a3bab 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene103/Lucene103PostingsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene103/Lucene103PostingsReader.java @@ -38,6 +38,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.search.DocAndFloatFeatureBuffer; @@ -1449,15 +1450,15 @@ static FreqAndNormBuffer readImpacts(ByteArrayDataInput in, FreqAndNormBuffer re } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { if (docIn != null) { - CodecUtil.checksumEntireFile(docIn); + CodecUtil.checksumEntireFile(docIn, merge); } if (posIn != null) { - CodecUtil.checksumEntireFile(posIn); + CodecUtil.checksumEntireFile(posIn, merge); } if (payIn != null) { - CodecUtil.checksumEntireFile(payIn); + CodecUtil.checksumEntireFile(payIn, merge); } } diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene80/Lucene80DocValuesProducer.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene80/Lucene80DocValuesProducer.java index 03f2f10d3599..eb47401755ad 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene80/Lucene80DocValuesProducer.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene80/Lucene80DocValuesProducer.java @@ -31,6 +31,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.NumericDocValues; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; @@ -1683,8 +1684,8 @@ public DocValuesSkipper getSkipper(FieldInfo field) { } @Override - public void checkIntegrity() throws IOException { - CodecUtil.checksumEntireFile(data); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + CodecUtil.checksumEntireFile(data, merge); } /** diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90HnswVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90HnswVectorsReader.java index 351c96bad60b..15f531cf8d1f 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90HnswVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90HnswVectorsReader.java @@ -32,6 +32,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorSimilarityFunction; import org.apache.lucene.internal.hppc.IntObjectHashMap; @@ -218,9 +219,9 @@ private FieldEntry readField(IndexInput input, FieldInfo info) throws IOExceptio } @Override - public void checkIntegrity() throws IOException { - CodecUtil.checksumEntireFile(vectorData); - CodecUtil.checksumEntireFile(vectorIndex); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + CodecUtil.checksumEntireFile(vectorData, merge); + CodecUtil.checksumEntireFile(vectorIndex, merge); } private FieldEntry getFieldEntry(String field) { diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90PostingsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90PostingsReader.java index 27345b94ada3..219b42ac4637 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90PostingsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/Lucene90PostingsReader.java @@ -36,6 +36,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SlowImpactsEnum; @@ -2042,15 +2043,15 @@ public long cost() { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { if (docIn != null) { - CodecUtil.checksumEntireFile(docIn); + CodecUtil.checksumEntireFile(docIn, merge); } if (posIn != null) { - CodecUtil.checksumEntireFile(posIn); + CodecUtil.checksumEntireFile(posIn, merge); } if (payIn != null) { - CodecUtil.checksumEntireFile(payIn); + CodecUtil.checksumEntireFile(payIn, merge); } } diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/blocktree/Lucene90BlockTreeTermsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/blocktree/Lucene90BlockTreeTermsReader.java index 1559404f50f5..361027c4b4d3 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/blocktree/Lucene90BlockTreeTermsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene90/blocktree/Lucene90BlockTreeTermsReader.java @@ -29,6 +29,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.Terms; import org.apache.lucene.internal.hppc.IntCursor; @@ -327,15 +328,15 @@ public int size() { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { // terms index - CodecUtil.checksumEntireFile(indexIn); + CodecUtil.checksumEntireFile(indexIn, merge); // term dictionary - CodecUtil.checksumEntireFile(termsIn); + CodecUtil.checksumEntireFile(termsIn, merge); // postings - postingsReader.checkIntegrity(); + postingsReader.checkIntegrity(merge); } @Override diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene91/Lucene91HnswVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene91/Lucene91HnswVectorsReader.java index 2c99e782f2eb..16df0ba4ca90 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene91/Lucene91HnswVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene91/Lucene91HnswVectorsReader.java @@ -34,6 +34,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorSimilarityFunction; import org.apache.lucene.internal.hppc.IntObjectHashMap; @@ -214,9 +215,9 @@ private FieldEntry readField(IndexInput input, FieldInfo info) throws IOExceptio } @Override - public void checkIntegrity() throws IOException { - CodecUtil.checksumEntireFile(vectorData); - CodecUtil.checksumEntireFile(vectorIndex); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + CodecUtil.checksumEntireFile(vectorData, merge); + CodecUtil.checksumEntireFile(vectorIndex, merge); } private FieldEntry getFieldEntry(String field) { diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene912/Lucene912PostingsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene912/Lucene912PostingsReader.java index 6945a67a20b2..5267d9525212 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene912/Lucene912PostingsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene912/Lucene912PostingsReader.java @@ -38,6 +38,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SlowImpactsEnum; @@ -1795,15 +1796,15 @@ static FreqAndNormBuffer readImpacts(ByteArrayDataInput in, FreqAndNormBuffer re } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { if (docIn != null) { - CodecUtil.checksumEntireFile(docIn); + CodecUtil.checksumEntireFile(docIn, merge); } if (posIn != null) { - CodecUtil.checksumEntireFile(posIn); + CodecUtil.checksumEntireFile(posIn, merge); } if (payIn != null) { - CodecUtil.checksumEntireFile(payIn); + CodecUtil.checksumEntireFile(payIn, merge); } } diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene92/Lucene92HnswVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene92/Lucene92HnswVectorsReader.java index a749e74c7fbd..dbcc8873db26 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene92/Lucene92HnswVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene92/Lucene92HnswVectorsReader.java @@ -33,6 +33,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorSimilarityFunction; import org.apache.lucene.internal.hppc.IntObjectHashMap; @@ -211,9 +212,9 @@ private FieldEntry readField(IndexInput input, FieldInfo info) throws IOExceptio } @Override - public void checkIntegrity() throws IOException { - CodecUtil.checksumEntireFile(vectorData); - CodecUtil.checksumEntireFile(vectorIndex); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + CodecUtil.checksumEntireFile(vectorData, merge); + CodecUtil.checksumEntireFile(vectorIndex, merge); } private FieldEntry getFieldEntry(String field) { diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/Lucene94HnswVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/Lucene94HnswVectorsReader.java index 3bacd40482a5..3cdd05201565 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/Lucene94HnswVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/Lucene94HnswVectorsReader.java @@ -33,6 +33,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorEncoding; import org.apache.lucene.index.VectorSimilarityFunction; @@ -229,9 +230,9 @@ private FieldEntry readField(IndexInput input, FieldInfo info) throws IOExceptio } @Override - public void checkIntegrity() throws IOException { - CodecUtil.checksumEntireFile(vectorData); - CodecUtil.checksumEntireFile(vectorIndex); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + CodecUtil.checksumEntireFile(vectorData, merge); + CodecUtil.checksumEntireFile(vectorIndex, merge); } private FieldEntry getFieldEntryOrThrow(String field) { diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene95/Lucene95HnswVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene95/Lucene95HnswVectorsReader.java index 20571783ab67..de4e1ef9f597 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene95/Lucene95HnswVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene95/Lucene95HnswVectorsReader.java @@ -37,6 +37,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorEncoding; import org.apache.lucene.index.VectorSimilarityFunction; @@ -229,9 +230,9 @@ private FieldEntry readField(IndexInput input, FieldInfo info) throws IOExceptio } @Override - public void checkIntegrity() throws IOException { - CodecUtil.checksumEntireFile(vectorData); - CodecUtil.checksumEntireFile(vectorIndex); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + CodecUtil.checksumEntireFile(vectorData, merge); + CodecUtil.checksumEntireFile(vectorIndex, merge); } private FieldEntry getFieldEntryOrThrow(String field) { diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99PostingsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99PostingsReader.java index 1cfdeed28841..e5f08d419928 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99PostingsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99PostingsReader.java @@ -36,6 +36,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SlowImpactsEnum; @@ -2075,15 +2076,15 @@ private void prefetchSkipData(IndexInput docIn, long docStartFP, long skipOffset } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { if (docIn != null) { - CodecUtil.checksumEntireFile(docIn); + CodecUtil.checksumEntireFile(docIn, merge); } if (posIn != null) { - CodecUtil.checksumEntireFile(posIn); + CodecUtil.checksumEntireFile(posIn, merge); } if (payIn != null) { - CodecUtil.checksumEntireFile(payIn); + CodecUtil.checksumEntireFile(payIn, merge); } } diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99ScalarQuantizedVectorsReader.java b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99ScalarQuantizedVectorsReader.java index 17eebc3ddc9d..2fbcf8352b23 100644 --- a/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99ScalarQuantizedVectorsReader.java +++ b/lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene99/Lucene99ScalarQuantizedVectorsReader.java @@ -34,6 +34,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; import org.apache.lucene.index.VectorEncoding; @@ -166,9 +167,9 @@ static void validateFieldEntry(FieldInfo info, FieldEntry fieldEntry) { } @Override - public void checkIntegrity() throws IOException { - rawVectorsReader.checkIntegrity(); - CodecUtil.checksumEntireFile(quantizedVectorData); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + rawVectorsReader.checkIntegrity(merge); + CodecUtil.checksumEntireFile(quantizedVectorData, merge); } private FieldEntry getFieldEntry(String field) { diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java index e24b2f3b46b0..2c3767bb6164 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java @@ -30,6 +30,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.TermState; @@ -867,11 +868,11 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { // verify terms - CodecUtil.checksumEntireFile(in); + CodecUtil.checksumEntireFile(in, merge); // verify postings - postingsReader.checkIntegrity(); + postingsReader.checkIntegrity(merge); } } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsBlockTreeTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsBlockTreeTermsReader.java index e00d234b2afa..55a045256a2b 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsBlockTreeTermsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsBlockTreeTermsReader.java @@ -28,6 +28,7 @@ import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.Terms; import org.apache.lucene.store.IndexInput; @@ -226,12 +227,12 @@ public int size() { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { // term dictionary - CodecUtil.checksumEntireFile(in); + CodecUtil.checksumEntireFile(in, merge); // postings - postingsReader.checkIntegrity(); + postingsReader.checkIntegrity(merge); } @Override diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java index 1243c20b42fb..2e3ef1c02207 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java @@ -34,6 +34,7 @@ import org.apache.lucene.index.Fields; import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; @@ -387,8 +388,8 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException { - delegateFieldsProducer.checkIntegrity(); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + delegateFieldsProducer.checkIntegrity(merge); } @Override diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java index 24b6fe188bee..e939a18c23b4 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java @@ -30,6 +30,7 @@ import org.apache.lucene.index.Fields; import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.OrdTermState; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; @@ -106,7 +107,7 @@ public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException if (state.context.context() != IOContext.Context.MERGE) { FieldsProducer loadedPostings; try { - postings.checkIntegrity(); + postings.checkIntegrity(null); loadedPostings = new DirectFields(state, postings, minSkipCount, lowFreqCutoff); } finally { postings.close(); @@ -148,7 +149,7 @@ public int size() { public void close() {} @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { // if we read entirely into ram, we already validated. // otherwise returned the raw postings reader } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java index 397d08827fca..06c9ab77d039 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java @@ -32,6 +32,7 @@ import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentInfo; import org.apache.lucene.index.SegmentReadState; @@ -787,7 +788,7 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException { - postingsReader.checkIntegrity(); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + postingsReader.checkIntegrity(merge); } } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java index cceb1fcbef47..4941bc252111 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java @@ -58,6 +58,7 @@ import org.apache.lucene.index.DocValuesType; import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.NumericDocValues; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SortedDocValues; @@ -882,7 +883,7 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { BytesRefBuilder scratch = new BytesRefBuilder(); IndexInput clone = data.clone(); clone.seek(0); diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java index 71e44fb0f82f..afa82ea2479b 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java @@ -42,6 +42,7 @@ import org.apache.lucene.index.Impacts; import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SlowImpactsEnum; @@ -844,5 +845,5 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException {} + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {} } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java index 4927bd73042b..ae17f4770a06 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java @@ -34,6 +34,7 @@ import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.FloatVectorValues; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorSimilarityFunction; import org.apache.lucene.internal.hppc.IntObjectHashMap; @@ -239,7 +240,7 @@ public void search(String field, byte[] target, KnnCollector knnCollector, Accep } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { IndexInput clone = dataIn.clone(); clone.seek(0); diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java index 371b02eefb64..1301986c2972 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextNormsFormat.java @@ -22,6 +22,7 @@ import org.apache.lucene.codecs.NormsProducer; import org.apache.lucene.index.EmptyDocValuesProducer; import org.apache.lucene.index.FieldInfo; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.NumericDocValues; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; @@ -73,8 +74,8 @@ public void close() throws IOException { } @Override - public void checkIntegrity() throws IOException { - impl.checkIntegrity(); + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { + impl.checkIntegrity(merge); } @Override diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointsReader.java index 087c1f80836b..bc9efa63d3e5 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextPointsReader.java @@ -41,6 +41,7 @@ import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PointValues; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.BufferedChecksumIndexInput; @@ -217,7 +218,7 @@ public PointValues getValues(String fieldName) { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { BytesRefBuilder scratch = new BytesRefBuilder(); IndexInput clone = dataIn.clone(); clone.seek(0); diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java index ff396af78a4f..26045b4b3f95 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsReader.java @@ -36,6 +36,7 @@ import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentInfo; import org.apache.lucene.index.StoredFieldVisitor; import org.apache.lucene.store.AlreadyClosedException; @@ -225,5 +226,5 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException {} + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {} } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java index 5306cee211e6..3fcfea27fd1d 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java @@ -44,6 +44,7 @@ import org.apache.lucene.index.Fields; import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentInfo; import org.apache.lucene.index.SlowImpactsEnum; @@ -589,5 +590,5 @@ public String toString() { } @Override - public void checkIntegrity() throws IOException {} + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {} } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/uniformsplit/UniformSplitTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/uniformsplit/UniformSplitTermsReader.java index 39a234b0eb48..1aa6187d9226 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/uniformsplit/UniformSplitTermsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/uniformsplit/UniformSplitTermsReader.java @@ -38,6 +38,7 @@ import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.IndexFileNames; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.Terms; import org.apache.lucene.store.ByteArrayDataInput; @@ -269,12 +270,12 @@ public void close() throws IOException { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { // term dictionary - CodecUtil.checksumEntireFile(blockInput); + CodecUtil.checksumEntireFile(blockInput, merge); // postings - postingsReader.checkIntegrity(); + postingsReader.checkIntegrity(merge); } @Override diff --git a/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/TestTermBytesComparator.java b/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/TestTermBytesComparator.java index e1bec2ea3f55..72497516f6e6 100644 --- a/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/TestTermBytesComparator.java +++ b/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/TestTermBytesComparator.java @@ -24,6 +24,7 @@ import org.apache.lucene.codecs.PostingsReaderBase; import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.ImpactsEnum; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.TermsEnum; @@ -181,7 +182,7 @@ public ImpactsEnum impacts(FieldInfo fieldInfo, BlockTermState state, int flags) } @Override - public void checkIntegrity() {} + public void checkIntegrity(MergePolicy.OneMerge merge) {} @Override public void close() {} diff --git a/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/sharedterms/TestSTBlockReader.java b/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/sharedterms/TestSTBlockReader.java index b2190c19ffeb..148d55485179 100644 --- a/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/sharedterms/TestSTBlockReader.java +++ b/lucene/codecs/src/test/org/apache/lucene/codecs/uniformsplit/sharedterms/TestSTBlockReader.java @@ -40,6 +40,7 @@ import org.apache.lucene.index.FieldInfos; import org.apache.lucene.index.ImpactsEnum; import org.apache.lucene.index.IndexOptions; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.VectorEncoding; @@ -292,7 +293,7 @@ public ImpactsEnum impacts(FieldInfo fieldInfo, BlockTermState state, int flags) } @Override - public void checkIntegrity() {} + public void checkIntegrity(MergePolicy.OneMerge merge) {} @Override public void close() {} diff --git a/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java b/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java index 91c1c045247d..c1c9500e29f0 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/CodecUtil.java @@ -22,6 +22,7 @@ import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexFormatTooNewException; import org.apache.lucene.index.IndexFormatTooOldException; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.store.BufferedChecksumIndexInput; import org.apache.lucene.store.ChecksumIndexInput; import org.apache.lucene.store.DataInput; @@ -597,6 +598,13 @@ private static void validateFooter(IndexInput in) throws IOException { } } + /** + * Number of bytes between consecutive merge abort checks during {@link + * #checksumEntireFile(IndexInput, MergePolicy.OneMerge)}. Files smaller than this are checksummed + * in one shot without checking for abort. + */ + private static final long ABORT_CHECK_INTERVAL = 1024 * 1024; + /** * Clones the provided input, reads all bytes from the file, and calls {@link #checkFooter} * @@ -604,19 +612,48 @@ private static void validateFooter(IndexInput in) throws IOException { * extract the checksum value, call {@link #retrieveChecksum}. */ public static long checksumEntireFile(IndexInput input) throws IOException { + return checksumEntireFile(input, null, Long.MAX_VALUE); + } + + /** + * Like {@link #checksumEntireFile(IndexInput)}, but periodically checks whether the provided + * merge has been aborted. This avoids spending a long time checksumming a large file when the + * merge has already been cancelled. + * + * @param input the index input to checksum + * @param merge the merge to check for abort, or {@code null} to behave like {@link + * #checksumEntireFile(IndexInput)} + * @throws MergePolicy.MergeAbortedException if the merge is aborted during checksumming + */ + public static long checksumEntireFile(IndexInput input, MergePolicy.OneMerge merge) + throws IOException { + return checksumEntireFile(input, merge, ABORT_CHECK_INTERVAL); + } + + static long checksumEntireFile( + IndexInput input, MergePolicy.OneMerge merge, long abortCheckInterval) throws IOException { IndexInput clone = input.clone(); clone.seek(0); ChecksumIndexInput in = new BufferedChecksumIndexInput(clone); assert in.getFilePointer() == 0; - if (in.length() < footerLength()) { + final long len = in.length(); + if (len < footerLength()) { throw new CorruptIndexException( "misplaced codec footer (file truncated?): length=" - + in.length() + + len + " but footerLength==" + footerLength(), input); } - in.seek(in.length() - footerLength()); + final long target = len - footerLength(); + if (merge == null || target <= abortCheckInterval) { + in.seek(target); + } else { + while (in.getFilePointer() < target) { + in.seek(Math.min(in.getFilePointer() + abortCheckInterval, target)); + merge.checkAborted(); + } + } return checkFooter(in); } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java b/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java index b75cce9b1a5b..fc2b13e29346 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java @@ -133,7 +133,7 @@ public void merge(MergeState mergeState) throws IOException { for (DocValuesProducer docValuesProducer : mergeState.docValuesProducers) { if (docValuesProducer != null) { mergeState.checkAborted(); - docValuesProducer.checkIntegrity(); + docValuesProducer.checkIntegrity(mergeState.oneMerge); } } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/DocValuesProducer.java b/lucene/core/src/java/org/apache/lucene/codecs/DocValuesProducer.java index b8b9f68b52dc..ea9cb78b0ed4 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/DocValuesProducer.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/DocValuesProducer.java @@ -23,6 +23,7 @@ import org.apache.lucene.index.DocValuesSkipper; import org.apache.lucene.index.DocValuesType; import org.apache.lucene.index.FieldInfo; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.NumericDocValues; import org.apache.lucene.index.SortedDocValues; import org.apache.lucene.index.SortedNumericDocValues; @@ -86,11 +87,12 @@ protected DocValuesProducer() {} * Checks consistency of this producer * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; /** * Returns an instance optimized for merging. This instance may only be consumed in the thread diff --git a/lucene/core/src/java/org/apache/lucene/codecs/FieldsConsumer.java b/lucene/core/src/java/org/apache/lucene/codecs/FieldsConsumer.java index 537410f85698..12878946e32f 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/FieldsConsumer.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/FieldsConsumer.java @@ -81,7 +81,7 @@ public void merge(MergeState mergeState, NormsProducer norms) throws IOException final int maxDoc = mergeState.maxDocs[readerIndex]; if (f != null) { mergeState.checkAborted(); - f.checkIntegrity(); + f.checkIntegrity(mergeState.oneMerge); slices.add(new ReaderSlice(docBase, maxDoc, readerIndex)); fields.add(f); } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/FieldsProducer.java b/lucene/core/src/java/org/apache/lucene/codecs/FieldsProducer.java index cd3e9e0f10d9..334a8a5dfff4 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/FieldsProducer.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/FieldsProducer.java @@ -19,6 +19,7 @@ import java.io.Closeable; import java.io.IOException; import org.apache.lucene.index.Fields; +import org.apache.lucene.index.MergePolicy; /** * Abstract API that produces terms, doc, freq, prox, offset and payloads postings. @@ -36,11 +37,12 @@ protected FieldsProducer() {} * Checks consistency of this reader. * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; /** * Returns an instance optimized for merging. This instance may only be consumed in the thread diff --git a/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsFormat.java index 636a869e7ba3..e29de34ef53c 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsFormat.java @@ -23,6 +23,7 @@ import org.apache.lucene.index.ByteVectorValues; import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.FloatVectorValues; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; import org.apache.lucene.search.AcceptDocs; @@ -126,7 +127,7 @@ public KnnVectorsWriter fieldsWriter(SegmentWriteState state) { public KnnVectorsReader fieldsReader(SegmentReadState state) { return new KnnVectorsReader() { @Override - public void checkIntegrity() {} + public void checkIntegrity(MergePolicy.OneMerge merge) {} @Override public FloatVectorValues getFloatVectorValues(String field) { diff --git a/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsReader.java index 3eab9264895d..774548749349 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsReader.java @@ -25,6 +25,7 @@ import org.apache.lucene.index.ByteVectorValues; import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.FloatVectorValues; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.search.AcceptDocs; import org.apache.lucene.search.KnnCollector; import org.apache.lucene.search.ScoreDoc; @@ -43,11 +44,12 @@ protected KnnVectorsReader() {} * Checks consistency of this reader. * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; /** * If this reader wraps another for {@code field}, return the underlying reader, else return diff --git a/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsWriter.java index d1e2b2ee1c40..5a4413685fff 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsWriter.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/KnnVectorsWriter.java @@ -114,7 +114,7 @@ public final void merge(MergeState mergeState) throws IOException { assert reader != null || mergeState.fieldInfos[i].hasVectorValues() == false; if (reader != null) { mergeState.checkAborted(); - reader.checkIntegrity(); + reader.checkIntegrity(mergeState.oneMerge); } } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java b/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java index fedd9584db31..17ad28782839 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.lucene.index.DocIDMerger; import org.apache.lucene.index.FieldInfo; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.MergeState; import org.apache.lucene.index.NumericDocValues; import org.apache.lucene.index.SegmentWriteState; @@ -67,7 +68,7 @@ public void merge(MergeState mergeState) throws IOException { for (NormsProducer normsProducer : mergeState.normsProducers) { if (normsProducer != null) { mergeState.checkAborted(); - normsProducer.checkIntegrity(); + normsProducer.checkIntegrity(mergeState.oneMerge); } } for (FieldInfo mergeFieldInfo : mergeState.mergeFieldInfos) { @@ -176,7 +177,7 @@ public long longValue() throws IOException { } @Override - public void checkIntegrity() {} + public void checkIntegrity(MergePolicy.OneMerge merge) {} @Override public void close() {} diff --git a/lucene/core/src/java/org/apache/lucene/codecs/NormsProducer.java b/lucene/core/src/java/org/apache/lucene/codecs/NormsProducer.java index 064e8418d595..700a4213548c 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/NormsProducer.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/NormsProducer.java @@ -19,6 +19,7 @@ import java.io.Closeable; import java.io.IOException; import org.apache.lucene.index.FieldInfo; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.NumericDocValues; /** @@ -42,11 +43,12 @@ protected NormsProducer() {} * Checks consistency of this producer * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; /** * Returns an instance optimized for merging. This instance may only be used from the thread that diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/PointsFormat.java index a6dc05daba32..5770df6883f9 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/PointsFormat.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/PointsFormat.java @@ -17,6 +17,7 @@ package org.apache.lucene.codecs; import java.io.IOException; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PointValues; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; @@ -58,7 +59,7 @@ public PointsReader fieldsReader(SegmentReadState state) { public void close() {} @Override - public void checkIntegrity() {} + public void checkIntegrity(MergePolicy.OneMerge merge) {} @Override public PointValues getValues(String field) { diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/PointsReader.java index 52c547f5ed3b..aa20f19af162 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/PointsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/PointsReader.java @@ -19,6 +19,7 @@ import java.io.Closeable; import java.io.IOException; import org.apache.lucene.index.FieldInfo; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PointValues; /** @@ -35,11 +36,12 @@ protected PointsReader() {} * Checks consistency of this reader. * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; /** * Return {@link PointValues} for the given {@code field}. The behavior is undefined if the given diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java index 4b4f2a017738..f8a2cffea19c 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java @@ -19,6 +19,7 @@ import java.io.Closeable; import java.io.IOException; import org.apache.lucene.index.FieldInfo; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.MergeState; import org.apache.lucene.index.PointValues; @@ -208,7 +209,7 @@ public int getDocCount() { } @Override - public void checkIntegrity() throws IOException { + public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException { throw new UnsupportedOperationException(); } }); @@ -223,7 +224,7 @@ public void merge(MergeState mergeState) throws IOException { for (PointsReader reader : mergeState.pointsReaders) { if (reader != null) { mergeState.checkAborted(); - reader.checkIntegrity(); + reader.checkIntegrity(mergeState.oneMerge); } } // merge field at a time diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PostingsReaderBase.java b/lucene/core/src/java/org/apache/lucene/codecs/PostingsReaderBase.java index c579ed9b0436..d49105578cae 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/PostingsReaderBase.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/PostingsReaderBase.java @@ -20,6 +20,7 @@ import java.io.IOException; import org.apache.lucene.index.FieldInfo; import org.apache.lucene.index.ImpactsEnum; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.store.DataInput; @@ -78,11 +79,12 @@ public abstract ImpactsEnum impacts(FieldInfo fieldInfo, BlockTermState state, i * Checks consistency of this reader. * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; @Override public abstract void close() throws IOException; diff --git a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java index 0e4d33c5abe2..1c0ebe357fe6 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsReader.java @@ -18,6 +18,7 @@ import java.io.Closeable; import java.io.IOException; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.StoredFieldVisitor; import org.apache.lucene.index.StoredFields; @@ -41,11 +42,12 @@ protected StoredFieldsReader() {} * Checks consistency of this reader. * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value - * against large data files. + * against large data files. A {@code OneMerge} can be provided so that expensive checksum + * computations can be periodically interrupted when the merge is aborted. * - * @lucene.internal + * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior */ - public abstract void checkIntegrity() throws IOException; + public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException; /** * Returns an instance optimized for merging. This instance may not be cloned. diff --git a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java index f5eb9e4c1137..8a5210930e4a 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java @@ -131,7 +131,7 @@ public int merge(MergeState mergeState) throws IOException { for (int i = 0; i < mergeState.storedFieldsReaders.length; i++) { StoredFieldsReader storedFieldsReader = mergeState.storedFieldsReaders[i]; mergeState.checkAborted(); - storedFieldsReader.checkIntegrity(); + storedFieldsReader.checkIntegrity(mergeState.oneMerge); subs.add( new StoredFieldsMergeSub( new MergeVisitor(mergeState, i), diff --git a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsReader.java index 0ad39dd1abe7..dc30da162998 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsReader.java @@ -18,6 +18,7 @@ import java.io.Closeable; import java.io.IOException; +import org.apache.lucene.index.MergePolicy; import org.apache.lucene.index.TermVectors; /** @@ -34,11 +35,12 @@ protected TermVectorsReader() {} * Checks consistency of this reader. * *
Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value
- * against large data files.
+ * against large data files. A {@code OneMerge} can be provided so that expensive checksum
+ * computations can be periodically interrupted when the merge is aborted.
*
- * @lucene.internal
+ * @param merge the merge to check for abort, or {@code null} for non-interruptible behavior
*/
- public abstract void checkIntegrity() throws IOException;
+ public abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException;
/** Create a clone that one caller at a time may use to read term vectors. */
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
index 8c9b11dd352d..daa935c9b49d 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
@@ -201,7 +201,7 @@ public int merge(MergeState mergeState) throws IOException {
TermVectorsReader reader = mergeState.termVectorsReaders[i];
if (reader != null) {
mergeState.checkAborted();
- reader.checkIntegrity();
+ reader.checkIntegrity(mergeState.oneMerge);
}
subs.add(new TermVectorsMergeSub(mergeState.docMaps[i], reader, mergeState.maxDocs[i]));
}
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene103/blocktree/Lucene103BlockTreeTermsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene103/blocktree/Lucene103BlockTreeTermsReader.java
index 4e99b9dba127..fc73ffc42080 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene103/blocktree/Lucene103BlockTreeTermsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene103/blocktree/Lucene103BlockTreeTermsReader.java
@@ -29,6 +29,7 @@
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.IndexOptions;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.Terms;
import org.apache.lucene.internal.hppc.IntCursor;
@@ -296,15 +297,15 @@ public int size() {
}
@Override
- public void checkIntegrity() throws IOException {
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
// terms index
- CodecUtil.checksumEntireFile(indexIn);
+ CodecUtil.checksumEntireFile(indexIn, merge);
// term dictionary
- CodecUtil.checksumEntireFile(termsIn);
+ CodecUtil.checksumEntireFile(termsIn, merge);
// postings
- postingsReader.checkIntegrity();
+ postingsReader.checkIntegrity(merge);
}
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104PostingsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104PostingsReader.java
index eafe644c9b23..aabe54ae11b8 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104PostingsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104PostingsReader.java
@@ -38,6 +38,7 @@
import org.apache.lucene.index.ImpactsEnum;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.IndexOptions;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.PostingsEnum;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.internal.vectorization.PostingDecodingUtil;
@@ -1469,15 +1470,15 @@ static FreqAndNormBuffer readImpacts(ByteArrayDataInput in, FreqAndNormBuffer re
}
@Override
- public void checkIntegrity() throws IOException {
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
if (docIn != null) {
- CodecUtil.checksumEntireFile(docIn);
+ CodecUtil.checksumEntireFile(docIn, merge);
}
if (posIn != null) {
- CodecUtil.checksumEntireFile(posIn);
+ CodecUtil.checksumEntireFile(posIn, merge);
}
if (payIn != null) {
- CodecUtil.checksumEntireFile(payIn);
+ CodecUtil.checksumEntireFile(payIn, merge);
}
}
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104ScalarQuantizedVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104ScalarQuantizedVectorsReader.java
index 041488a46ffe..946b1745fc6a 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104ScalarQuantizedVectorsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene104/Lucene104ScalarQuantizedVectorsReader.java
@@ -40,6 +40,7 @@
import org.apache.lucene.index.FloatVectorValues;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.KnnVectorValues;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.SegmentWriteState;
import org.apache.lucene.index.VectorEncoding;
@@ -221,9 +222,9 @@ public RandomVectorScorer getRandomVectorScorer(String field, byte[] target) thr
}
@Override
- public void checkIntegrity() throws IOException {
- rawVectorsReader.checkIntegrity();
- CodecUtil.checksumEntireFile(quantizedVectorData);
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ rawVectorsReader.checkIntegrity(merge);
+ CodecUtil.checksumEntireFile(quantizedVectorData, merge);
}
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesProducer.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesProducer.java
index 61f4f2942428..591f6c61d273 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesProducer.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesProducer.java
@@ -34,6 +34,7 @@
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.ImpactsEnum;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.PostingsEnum;
import org.apache.lucene.index.SegmentReadState;
@@ -2280,10 +2281,10 @@ public void intoBitSet(int upTo, FixedBitSet bitSet, int offset) throws IOExcept
}
@Override
- public void checkIntegrity() throws IOException {
- CodecUtil.checksumEntireFile(data);
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ CodecUtil.checksumEntireFile(data, merge);
if (skipIndexData != null) {
- CodecUtil.checksumEntireFile(skipIndexData);
+ CodecUtil.checksumEntireFile(skipIndexData, merge);
}
}
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90NormsProducer.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90NormsProducer.java
index efbea3e22c7d..915d19d2310e 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90NormsProducer.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90NormsProducer.java
@@ -27,6 +27,7 @@
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.internal.hppc.IntObjectHashMap;
@@ -500,8 +501,8 @@ public void close() throws IOException {
}
@Override
- public void checkIntegrity() throws IOException {
- CodecUtil.checksumEntireFile(data);
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ CodecUtil.checksumEntireFile(data, merge);
}
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsReader.java
index e896cf7e0af2..d793477e28e5 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsReader.java
@@ -22,6 +22,7 @@
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.PointValues;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.internal.hppc.IntObjectHashMap;
@@ -143,9 +144,9 @@ public PointValues getValues(String fieldName) {
}
@Override
- public void checkIntegrity() throws IOException {
- CodecUtil.checksumEntireFile(indexIn);
- CodecUtil.checksumEntireFile(dataIn);
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ CodecUtil.checksumEntireFile(indexIn, merge);
+ CodecUtil.checksumEntireFile(dataIn, merge);
}
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsWriter.java
index eaea9d45bf57..96e6c35a9e51 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90PointsWriter.java
@@ -205,7 +205,7 @@ public void merge(MergeState mergeState) throws IOException {
for (PointsReader reader : mergeState.pointsReaders) {
if (reader != null) {
mergeState.checkAborted();
- reader.checkIntegrity();
+ reader.checkIntegrity(mergeState.oneMerge);
}
}
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndex.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndex.java
index a0f59575b27b..95911e14f428 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndex.java
@@ -18,6 +18,7 @@
import java.io.Closeable;
import java.io.IOException;
+import org.apache.lucene.index.MergePolicy;
abstract class FieldsIndex implements Cloneable, Closeable {
@@ -35,8 +36,8 @@ final long getStartPointer(int docID) {
return getBlockStartPointer(getBlockID(docID));
}
- /** Check the integrity of the index. */
- abstract void checkIntegrity() throws IOException;
+ /** Check the integrity of the index, with periodic merge abort checks. */
+ abstract void checkIntegrity(MergePolicy.OneMerge merge) throws IOException;
@Override
public abstract FieldsIndex clone();
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndexReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndexReader.java
index d823626c9da8..608dd03fd4ac 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndexReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/FieldsIndexReader.java
@@ -24,6 +24,7 @@
import java.util.Objects;
import org.apache.lucene.codecs.CodecUtil;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FileTypeHint;
import org.apache.lucene.store.IOContext;
@@ -154,7 +155,7 @@ public long getMaxPointer() {
}
@Override
- void checkIntegrity() throws IOException {
- CodecUtil.checksumEntireFile(indexInput);
+ void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ CodecUtil.checksumEntireFile(indexInput, merge);
}
}
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsReader.java
index 9d142ba5ef28..868190a4b103 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsReader.java
@@ -50,6 +50,7 @@
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.index.StoredFieldDataInput;
import org.apache.lucene.index.StoredFieldVisitor;
@@ -755,9 +756,9 @@ int getNumDocs() {
}
@Override
- public void checkIntegrity() throws IOException {
- indexReader.checkIntegrity();
- CodecUtil.checksumEntireFile(fieldsStream);
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ indexReader.checkIntegrity(merge);
+ CodecUtil.checksumEntireFile(fieldsStream, merge);
}
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsWriter.java
index 4d2b2f25a14e..d3364f5ea53f 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsWriter.java
@@ -602,7 +602,7 @@ public int merge(MergeState mergeState) throws IOException {
for (int i = 0; i < mergeState.storedFieldsReaders.length; i++) {
final StoredFieldsReader reader = mergeState.storedFieldsReaders[i];
mergeState.checkAborted();
- reader.checkIntegrity();
+ reader.checkIntegrity(mergeState.oneMerge);
MergeStrategy mergeStrategy = getMergeStrategy(mergeState, matchingReaders, i);
if (mergeStrategy == MergeStrategy.VISITOR) {
visitors[i] = new MergeVisitor(mergeState, i);
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java
index 017ab9083e6f..05774f803b34 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java
@@ -46,6 +46,7 @@
import org.apache.lucene.index.Fields;
import org.apache.lucene.index.ImpactsEnum;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.PostingsEnum;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.index.SlowImpactsEnum;
@@ -1349,9 +1350,9 @@ private static int sum(int[] arr) {
}
@Override
- public void checkIntegrity() throws IOException {
- indexReader.checkIntegrity();
- CodecUtil.checksumEntireFile(vectorsStream);
+ public void checkIntegrity(MergePolicy.OneMerge merge) throws IOException {
+ indexReader.checkIntegrity(merge);
+ CodecUtil.checksumEntireFile(vectorsStream, merge);
}
@Override
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsWriter.java
index 3fe9f2a47ef8..c95164b0b868 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsWriter.java
@@ -899,7 +899,7 @@ public int merge(MergeState mergeState) throws IOException {
final TermVectorsReader reader = mergeState.termVectorsReaders[i];
if (reader != null) {
mergeState.checkAborted();
- reader.checkIntegrity();
+ reader.checkIntegrity(mergeState.oneMerge);
}
final boolean bulkMerge = canPerformBulkMerge(mergeState, matchingReaders, i);
subs.add(new CompressingTermVectorsSub(mergeState, bulkMerge, i));
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99FlatVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99FlatVectorsReader.java
index 68edb71c14df..f2c0b7fa47c2 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99FlatVectorsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene99/Lucene99FlatVectorsReader.java
@@ -36,6 +36,7 @@
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.FloatVectorValues;
import org.apache.lucene.index.IndexFileNames;
+import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.VectorEncoding;
import org.apache.lucene.index.VectorSimilarityFunction;
@@ -190,8 +191,8 @@ public Map