You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2015/01/21 17:18:39 UTC
svn commit: r1653577 - in /lucene/dev/branches/lucene_solr_4_10/lucene:
CHANGES.txt
core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipReader.java
core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipWriter.java
Author: mikemccand
Date: Wed Jan 21 16:18:38 2015
New Revision: 1653577
URL: http://svn.apache.org/r1653577
Log:
LUCENE-6192: don't overflow int when writing skip data for high freq terms in extremely large indices
Modified:
lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt
lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipReader.java
lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipWriter.java
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt?rev=1653577&r1=1653576&r2=1653577&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt Wed Jan 21 16:18:38 2015
@@ -14,6 +14,10 @@ Bug fixes
causing substantial performance cost for use cases that frequently
delete old documents (Mike McCandless)
+* LUCENE-6192: Fix int overflow corruption case in skip data for
+ high frequency terms in extremely large indices (Robert Muir, Mike
+ McCandless)
+
======================= Lucene 4.10.3 ======================
Bug fixes
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipReader.java?rev=1653577&r1=1653576&r2=1653577&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipReader.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipReader.java Wed Jan 21 16:18:38 2015
@@ -195,13 +195,13 @@ final class Lucene41SkipReader extends M
// if (DEBUG) {
// System.out.println(" delta=" + delta);
// }
- docPointer[level] += skipStream.readVInt();
+ docPointer[level] += skipStream.readVLong();
// if (DEBUG) {
// System.out.println(" docFP=" + docPointer[level]);
// }
if (posPointer != null) {
- posPointer[level] += skipStream.readVInt();
+ posPointer[level] += skipStream.readVLong();
// if (DEBUG) {
// System.out.println(" posFP=" + posPointer[level]);
// }
@@ -215,7 +215,7 @@ final class Lucene41SkipReader extends M
}
if (payPointer != null) {
- payPointer[level] += skipStream.readVInt();
+ payPointer[level] += skipStream.readVLong();
}
}
return delta;
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipWriter.java?rev=1653577&r1=1653576&r2=1653577&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipWriter.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41SkipWriter.java Wed Jan 21 16:18:38 2015
@@ -151,14 +151,14 @@ final class Lucene41SkipWriter extends M
skipBuffer.writeVInt(delta);
lastSkipDoc[level] = curDoc;
- skipBuffer.writeVInt((int) (curDocPointer - lastSkipDocPointer[level]));
+ skipBuffer.writeVLong(curDocPointer - lastSkipDocPointer[level]);
lastSkipDocPointer[level] = curDocPointer;
if (fieldHasPositions) {
// if (DEBUG) {
// System.out.println(" curPosPointer=" + curPosPointer + " curPosBufferUpto=" + curPosBufferUpto);
// }
- skipBuffer.writeVInt((int) (curPosPointer - lastSkipPosPointer[level]));
+ skipBuffer.writeVLong(curPosPointer - lastSkipPosPointer[level]);
lastSkipPosPointer[level] = curPosPointer;
skipBuffer.writeVInt(curPosBufferUpto);
@@ -167,7 +167,7 @@ final class Lucene41SkipWriter extends M
}
if (fieldHasOffsets || fieldHasPayloads) {
- skipBuffer.writeVInt((int) (curPayPointer - lastSkipPayPointer[level]));
+ skipBuffer.writeVLong(curPayPointer - lastSkipPayPointer[level]);
lastSkipPayPointer[level] = curPayPointer;
}
}