Skip to content

Commit 3097f83

Browse files
committed
enable error-prone "narrow calculation" check (#11923)
This check finds bugs such as #11905. See https://errorprone.info/bugpattern/NarrowCalculation
1 parent f4bc112 commit 3097f83

File tree

48 files changed

+130
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+130
-112
lines changed

gradle/validation/error-prone.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ allprojects { prj ->
6868

6969
options.errorprone.disableWarningsInGeneratedCode = true
7070
options.errorprone.errorproneArgs = [
71+
'-XepAllErrorsAsWarnings', // warnings still fail build by default, but allows usage of -Pjavac.failOnWarnings=false
7172
'-Xep:InlineMeSuggester:OFF', // We don't use this annotation
7273

7374
// test

lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene50/compressing/Lucene50CompressingStoredFieldsReader.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ private void doReset(int docID) throws IOException {
535535
if (bitsPerLength == 0) {
536536
final int length = fieldsStream.readVInt();
537537
for (int i = 0; i < chunkDocs; ++i) {
538-
offsets[1 + i] = (1 + i) * length;
538+
offsets[1 + i] = (1 + i) * (long) length;
539539
}
540540
} else if (bitsPerStoredFields > 31) {
541541
throw new CorruptIndexException("bitsPerLength=" + bitsPerLength, fieldsStream);

lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene80/IndexedDISI.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,9 @@ private void advanceBlock(int targetBlock) throws IOException {
469469
// NO_MORE_DOCS
470470
final int inRangeBlockIndex =
471471
blockIndex < jumpTableEntryCount ? blockIndex : jumpTableEntryCount - 1;
472-
final int index = jumpTable.readInt(inRangeBlockIndex * Integer.BYTES * 2);
473-
final int offset = jumpTable.readInt(inRangeBlockIndex * Integer.BYTES * 2 + Integer.BYTES);
472+
final int index = jumpTable.readInt(inRangeBlockIndex * (long) Integer.BYTES * 2);
473+
final int offset =
474+
jumpTable.readInt(inRangeBlockIndex * (long) Integer.BYTES * 2 + Integer.BYTES);
474475
this.nextBlockIndex = index - 1; // -1 to compensate for the always-added 1 in readBlockHeader
475476
slice.seek(offset);
476477
readBlockHeader();
@@ -697,7 +698,7 @@ private static void rankSkip(IndexedDISI disi, int targetInBlock) throws IOExcep
697698

698699
// Position the counting logic just after the rank point
699700
final int rankAlignedWordIndex = rankIndex << disi.denseRankPower >> 6;
700-
disi.slice.seek(disi.denseBitmapOffset + rankAlignedWordIndex * Long.BYTES);
701+
disi.slice.seek(disi.denseBitmapOffset + rankAlignedWordIndex * (long) Long.BYTES);
701702
long rankWord = disi.slice.readLong();
702703
int denseNOO = rank + Long.bitCount(rankWord);
703704

lucene/backward-codecs/src/test/org/apache/lucene/backward_codecs/lucene60/TestLucene60PointsFormat.java

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ protected Codec getCodec() {
5151
return codec;
5252
}
5353

54+
@SuppressWarnings("NarrowCalculation")
5455
public void testEstimatePointCount() throws IOException {
5556
Directory dir = newDirectory();
5657
IndexWriterConfig iwc = newIndexWriterConfig();
@@ -176,6 +177,7 @@ public Relation compare(byte[] minPackedValue, byte[] maxPackedValue) {
176177

177178
// The tree is always balanced in the N dims case, and leaves are
178179
// not all full so things are a bit different
180+
@SuppressWarnings("NarrowCalculation")
179181
public void testEstimatePointCount2Dims() throws IOException {
180182
Directory dir = newDirectory();
181183
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());

lucene/backward-codecs/src/test/org/apache/lucene/backward_codecs/lucene86/TestLucene86PointsFormat.java

+2
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public void testMergeStability() throws Exception {
9999
super.testMergeStability();
100100
}
101101

102+
@SuppressWarnings("NarrowCalculation")
102103
public void testEstimatePointCount() throws IOException {
103104
Directory dir = newDirectory();
104105
IndexWriterConfig iwc = newIndexWriterConfig();
@@ -224,6 +225,7 @@ public Relation compare(byte[] minPackedValue, byte[] maxPackedValue) {
224225

225226
// The tree is always balanced in the N dims case, and leaves are
226227
// not all full so things are a bit different
228+
@SuppressWarnings("NarrowCalculation")
227229
public void testEstimatePointCount2Dims() throws IOException {
228230
Directory dir = newDirectory();
229231
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());

lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1244,7 +1244,7 @@ private InputOutput getByOutput(long targetOrd) throws IOException {
12441244
while (low <= high) {
12451245
mid = (low + high) >>> 1;
12461246
fstReader.setPosition(arc.posArcsStart());
1247-
fstReader.skipBytes(arc.bytesPerArc() * mid);
1247+
fstReader.skipBytes(arc.bytesPerArc() * (long) mid);
12481248
final byte flags = fstReader.readByte();
12491249
fr.index.readLabel(fstReader);
12501250
final Output minArcOutput;

lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDWriter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ public long finish(IndexOutput out) throws IOException {
668668

669669
// Indexed by nodeID, but first (root) nodeID is 1. We do 1+ because the lead byte at each
670670
// recursion says which dim we split on.
671-
byte[] splitPackedValues = new byte[Math.toIntExact(numLeaves * (1 + config.bytesPerDim))];
671+
byte[] splitPackedValues = new byte[Math.multiplyExact(numLeaves, 1 + config.bytesPerDim)];
672672

673673
// +1 because leaf count is power of 2 (e.g. 8), and innerNodeCount is power of 2 minus 1 (e.g.
674674
// 7)

lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java

+20-16
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ assert startsWith(MINVALUE)
108108
assert startsWith(PATTERN);
109109
field.pattern = stripPrefix(PATTERN);
110110
field.dataStartFilePointer = data.getFilePointer();
111-
data.seek(data.getFilePointer() + (1 + field.pattern.length() + 2) * maxDoc);
111+
data.seek(data.getFilePointer() + (1 + field.pattern.length() + 2) * (long) maxDoc);
112112
} else if (dvType == DocValuesType.BINARY) {
113113
readLine();
114114
assert startsWith(MAXLENGTH);
@@ -118,7 +118,8 @@ assert startsWith(MINVALUE)
118118
field.pattern = stripPrefix(PATTERN);
119119
field.dataStartFilePointer = data.getFilePointer();
120120
data.seek(
121-
data.getFilePointer() + (9 + field.pattern.length() + field.maxLength + 2) * maxDoc);
121+
data.getFilePointer()
122+
+ (9 + field.pattern.length() + field.maxLength + 2) * (long) maxDoc);
122123
} else if (dvType == DocValuesType.SORTED || dvType == DocValuesType.SORTED_SET) {
123124
readLine();
124125
assert startsWith(NUMVALUES);
@@ -136,7 +137,7 @@ assert startsWith(MINVALUE)
136137
data.seek(
137138
data.getFilePointer()
138139
+ (9 + field.pattern.length() + field.maxLength) * field.numValues
139-
+ (1 + field.ordPattern.length()) * maxDoc);
140+
+ (1 + field.ordPattern.length()) * (long) maxDoc);
140141
} else {
141142
throw new AssertionError();
142143
}
@@ -214,7 +215,7 @@ public Long apply(int docID) {
214215
throw new IndexOutOfBoundsException(
215216
"docID must be 0 .. " + (maxDoc - 1) + "; got " + docID);
216217
}
217-
in.seek(field.dataStartFilePointer + (1 + field.pattern.length() + 2) * docID);
218+
in.seek(field.dataStartFilePointer + (1 + field.pattern.length() + 2) * (long) docID);
218219
SimpleTextUtil.readLine(in, scratch);
219220
// System.out.println("parsing delta: " + scratch.utf8ToString());
220221
BigDecimal bd;
@@ -262,7 +263,7 @@ public long cost() {
262263
@Override
263264
public int advance(int target) throws IOException {
264265
for (int i = target; i < maxDoc; ++i) {
265-
in.seek(field.dataStartFilePointer + (1 + field.pattern.length() + 2) * i);
266+
in.seek(field.dataStartFilePointer + (1 + field.pattern.length() + 2) * (long) i);
266267
SimpleTextUtil.readLine(in, scratch); // data
267268
SimpleTextUtil.readLine(in, scratch); // 'T' or 'F'
268269
if (scratch.byteAt(0) == (byte) 'T') {
@@ -275,7 +276,7 @@ public int advance(int target) throws IOException {
275276
@Override
276277
boolean advanceExact(int target) throws IOException {
277278
this.doc = target;
278-
in.seek(field.dataStartFilePointer + (1 + field.pattern.length() + 2) * target);
279+
in.seek(field.dataStartFilePointer + (1 + field.pattern.length() + 2) * (long) target);
279280
SimpleTextUtil.readLine(in, scratch); // data
280281
SimpleTextUtil.readLine(in, scratch); // 'T' or 'F'
281282
return scratch.byteAt(0) == (byte) 'T';
@@ -311,7 +312,7 @@ public BytesRef apply(int docID) {
311312
}
312313
in.seek(
313314
field.dataStartFilePointer
314-
+ (9 + field.pattern.length() + field.maxLength + 2) * docID);
315+
+ (9 + field.pattern.length() + field.maxLength + 2) * (long) docID);
315316
SimpleTextUtil.readLine(in, scratch);
316317
assert StringHelper.startsWith(scratch.get(), LENGTH);
317318
int len;
@@ -401,7 +402,8 @@ public long cost() {
401402
public int advance(int target) throws IOException {
402403
for (int i = target; i < maxDoc; ++i) {
403404
in.seek(
404-
field.dataStartFilePointer + (9 + field.pattern.length() + field.maxLength + 2) * i);
405+
field.dataStartFilePointer
406+
+ (9 + field.pattern.length() + field.maxLength + 2) * (long) i);
405407
SimpleTextUtil.readLine(in, scratch);
406408
assert StringHelper.startsWith(scratch.get(), LENGTH);
407409
int len;
@@ -435,7 +437,7 @@ boolean advanceExact(int target) throws IOException {
435437
this.doc = target;
436438
in.seek(
437439
field.dataStartFilePointer
438-
+ (9 + field.pattern.length() + field.maxLength + 2) * target);
440+
+ (9 + field.pattern.length() + field.maxLength + 2) * (long) target);
439441
SimpleTextUtil.readLine(in, scratch);
440442
assert StringHelper.startsWith(scratch.get(), LENGTH);
441443
int len;
@@ -504,7 +506,7 @@ public int advance(int target) throws IOException {
504506
in.seek(
505507
field.dataStartFilePointer
506508
+ field.numValues * (9 + field.pattern.length() + field.maxLength)
507-
+ i * (1 + field.ordPattern.length()));
509+
+ i * (long) (1 + field.ordPattern.length()));
508510
SimpleTextUtil.readLine(in, scratch);
509511
try {
510512
ord = (int) ordDecoder.parse(scratch.get().utf8ToString()).longValue() - 1;
@@ -524,7 +526,7 @@ public boolean advanceExact(int target) throws IOException {
524526
in.seek(
525527
field.dataStartFilePointer
526528
+ field.numValues * (9 + field.pattern.length() + field.maxLength)
527-
+ target * (1 + field.ordPattern.length()));
529+
+ target * (long) (1 + field.ordPattern.length()));
528530
SimpleTextUtil.readLine(in, scratch);
529531
try {
530532
ord = (int) ordDecoder.parse(scratch.get().utf8ToString()).longValue() - 1;
@@ -547,7 +549,9 @@ public BytesRef lookupOrd(int ord) throws IOException {
547549
throw new IndexOutOfBoundsException(
548550
"ord must be 0 .. " + (field.numValues - 1) + "; got " + ord);
549551
}
550-
in.seek(field.dataStartFilePointer + ord * (9 + field.pattern.length() + field.maxLength));
552+
in.seek(
553+
field.dataStartFilePointer
554+
+ ord * (long) (9 + field.pattern.length() + field.maxLength));
551555
SimpleTextUtil.readLine(in, scratch);
552556
assert StringHelper.startsWith(scratch.get(), LENGTH)
553557
: "got " + scratch.get().utf8ToString() + " in=" + in;
@@ -688,8 +692,8 @@ public int advance(int target) throws IOException {
688692
for (int i = target; i < maxDoc; ++i) {
689693
in.seek(
690694
field.dataStartFilePointer
691-
+ field.numValues * (9 + field.pattern.length() + field.maxLength)
692-
+ i * (1 + field.ordPattern.length()));
695+
+ field.numValues * (long) (9 + field.pattern.length() + field.maxLength)
696+
+ i * (long) (1 + field.ordPattern.length()));
693697
SimpleTextUtil.readLine(in, scratch);
694698
String ordList = scratch.get().utf8ToString().trim();
695699
if (ordList.isEmpty() == false) {
@@ -705,8 +709,8 @@ public int advance(int target) throws IOException {
705709
public boolean advanceExact(int target) throws IOException {
706710
in.seek(
707711
field.dataStartFilePointer
708-
+ field.numValues * (9 + field.pattern.length() + field.maxLength)
709-
+ target * (1 + field.ordPattern.length()));
712+
+ field.numValues * (long) (9 + field.pattern.length() + field.maxLength)
713+
+ target * (long) (1 + field.ordPattern.length()));
710714
SimpleTextUtil.readLine(in, scratch);
711715
String ordList = scratch.get().utf8ToString().trim();
712716
doc = target;

lucene/core/src/java/org/apache/lucene/codecs/lucene90/IndexedDISI.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -470,8 +470,9 @@ private void advanceBlock(int targetBlock) throws IOException {
470470
// NO_MORE_DOCS
471471
final int inRangeBlockIndex =
472472
blockIndex < jumpTableEntryCount ? blockIndex : jumpTableEntryCount - 1;
473-
final int index = jumpTable.readInt(inRangeBlockIndex * Integer.BYTES * 2);
474-
final int offset = jumpTable.readInt(inRangeBlockIndex * Integer.BYTES * 2 + Integer.BYTES);
473+
final int index = jumpTable.readInt(inRangeBlockIndex * (long) Integer.BYTES * 2);
474+
final int offset =
475+
jumpTable.readInt(inRangeBlockIndex * (long) Integer.BYTES * 2 + Integer.BYTES);
475476
this.nextBlockIndex = index - 1; // -1 to compensate for the always-added 1 in readBlockHeader
476477
slice.seek(offset);
477478
readBlockHeader();
@@ -698,7 +699,7 @@ private static void rankSkip(IndexedDISI disi, int targetInBlock) throws IOExcep
698699

699700
// Position the counting logic just after the rank point
700701
final int rankAlignedWordIndex = rankIndex << disi.denseRankPower >> 6;
701-
disi.slice.seek(disi.denseBitmapOffset + rankAlignedWordIndex * Long.BYTES);
702+
disi.slice.seek(disi.denseBitmapOffset + rankAlignedWordIndex * (long) Long.BYTES);
702703
long rankWord = disi.slice.readLong();
703704
int denseNOO = rank + Long.bitCount(rankWord);
704705

lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingStoredFieldsWriter.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ private void flush(boolean force) throws IOException {
243243
lengths[i] = endOffsets[i] - endOffsets[i - 1];
244244
assert lengths[i] >= 0;
245245
}
246-
final boolean sliced = bufferedDocs.size() >= 2 * chunkSize;
246+
final boolean sliced = bufferedDocs.size() >= 2L * chunkSize;
247247
final boolean dirtyChunk = force;
248248
writeHeader(docBase, numBufferedDocs, numStoredFields, lengths, sliced, dirtyChunk);
249249
ByteBuffersDataInput bytebuffers = bufferedDocs.toDataInput();
@@ -729,7 +729,7 @@ public int nextDoc() {
729729
@Override
730730
public long ramBytesUsed() {
731731
return bufferedDocs.ramBytesUsed()
732-
+ numStoredFields.length * Integer.BYTES
733-
+ endOffsets.length * Integer.BYTES;
732+
+ numStoredFields.length * (long) Integer.BYTES
733+
+ endOffsets.length * (long) Integer.BYTES;
734734
}
735735
}

lucene/core/src/java/org/apache/lucene/index/BinaryDocValuesFieldUpdates.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public long ramBytesUsed() {
138138
+ lengths.ramBytesUsed()
139139
+ RamUsageEstimator.NUM_BYTES_OBJECT_HEADER
140140
+ 2 * Integer.BYTES
141-
+ 3 * RamUsageEstimator.NUM_BYTES_OBJECT_REF
141+
+ 3 * (long) RamUsageEstimator.NUM_BYTES_OBJECT_REF
142142
+ values.bytes().length;
143143
}
144144
}

lucene/core/src/java/org/apache/lucene/index/BufferingKnnVectorsWriter.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,10 @@ public long ramBytesUsed() {
196196
if (vectors.size() == 0) return 0;
197197
return docsWithField.ramBytesUsed()
198198
+ vectors.size()
199-
* (RamUsageEstimator.NUM_BYTES_OBJECT_REF + RamUsageEstimator.NUM_BYTES_ARRAY_HEADER)
200-
+ vectors.size() * dim * Float.BYTES;
199+
* (long)
200+
(RamUsageEstimator.NUM_BYTES_OBJECT_REF
201+
+ RamUsageEstimator.NUM_BYTES_ARRAY_HEADER)
202+
+ vectors.size() * (long) dim * Float.BYTES;
201203
}
202204
}
203205

lucene/core/src/java/org/apache/lucene/index/DocValuesUpdate.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ protected DocValuesUpdate(
6969

7070
final long sizeInBytes() {
7171
long sizeInBytes = RAW_SIZE_IN_BYTES;
72-
sizeInBytes += term.field.length() * Character.BYTES;
72+
sizeInBytes += term.field.length() * (long) Character.BYTES;
7373
sizeInBytes += term.bytes.bytes.length;
74-
sizeInBytes += field.length() * Character.BYTES;
74+
sizeInBytes += field.length() * (long) Character.BYTES;
7575
sizeInBytes += valueSizeInBytes();
7676
sizeInBytes += 1; // hasValue
7777
return sizeInBytes;

lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ final class DocumentsWriterFlushControl implements Accountable, Closeable {
8484
this.perThreadPool = documentsWriter.perThreadPool;
8585
this.flushPolicy = config.getFlushPolicy();
8686
this.config = config;
87-
this.hardMaxBytesPerDWPT = config.getRAMPerThreadHardLimitMB() * 1024 * 1024;
87+
this.hardMaxBytesPerDWPT = config.getRAMPerThreadHardLimitMB() * 1024L * 1024L;
8888
this.documentsWriter = documentsWriter;
8989
}
9090

lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ SegmentInfo getSegmentInfo() {
616616
@Override
617617
public long ramBytesUsed() {
618618
assert lock.isHeldByCurrentThread();
619-
return (deleteDocIDs.length * Integer.BYTES)
619+
return (deleteDocIDs.length * (long) Integer.BYTES)
620620
+ pendingUpdates.ramBytesUsed()
621621
+ indexingChain.ramBytesUsed();
622622
}

lucene/core/src/java/org/apache/lucene/index/FieldUpdatesBuffer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private FieldUpdatesBuffer(
8282
}
8383

8484
private static long sizeOfString(String string) {
85-
return STRING_SHALLOW_SIZE + (string.length() * Character.BYTES);
85+
return STRING_SHALLOW_SIZE + (string.length() * (long) Character.BYTES);
8686
}
8787

8888
FieldUpdatesBuffer(
@@ -130,7 +130,7 @@ void add(String field, int docUpTo, int ord, boolean hasValue) {
130130
Arrays.fill(array, 1, ord, fields[0]);
131131
}
132132
bytesUsed.addAndGet(
133-
(array.length - fields.length) * RamUsageEstimator.NUM_BYTES_OBJECT_REF);
133+
(array.length - fields.length) * (long) RamUsageEstimator.NUM_BYTES_OBJECT_REF);
134134
fields = array;
135135
}
136136
if (field != fields[0]) { // that's an easy win of not accounting if there is an outlier
@@ -145,7 +145,7 @@ void add(String field, int docUpTo, int ord, boolean hasValue) {
145145
if (docsUpTo.length == 1) {
146146
Arrays.fill(array, 1, ord, docsUpTo[0]);
147147
}
148-
bytesUsed.addAndGet((array.length - docsUpTo.length) * Integer.BYTES);
148+
bytesUsed.addAndGet((array.length - docsUpTo.length) * (long) Integer.BYTES);
149149
docsUpTo = array;
150150
}
151151
docsUpTo[ord] = docUpTo;
@@ -181,7 +181,7 @@ void addUpdate(Term term, long value, int docUpTo) {
181181
if (numericValues.length == 1) {
182182
Arrays.fill(array, 1, ord, numericValues[0]);
183183
}
184-
bytesUsed.addAndGet((array.length - numericValues.length) * Long.BYTES);
184+
bytesUsed.addAndGet((array.length - numericValues.length) * (long) Long.BYTES);
185185
numericValues = array;
186186
}
187187
numericValues[ord] = value;

lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public FrozenBufferedUpdates(
111111

112112
bytesUsed =
113113
(int)
114-
((deleteTerms.ramBytesUsed() + deleteQueries.length * BYTES_PER_DEL_QUERY)
114+
((deleteTerms.ramBytesUsed() + deleteQueries.length * (long) BYTES_PER_DEL_QUERY)
115115
+ updates.fieldUpdatesBytesUsed.get());
116116

117117
numTermDeletes = updates.numTermDeletes.get();

lucene/core/src/java/org/apache/lucene/index/IndexWriter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5297,7 +5297,7 @@ public int length() {
52975297
Locale.ROOT,
52985298
"merged segment size=%.3f MB vs estimate=%.3f MB",
52995299
merge.info.sizeInBytes() / 1024. / 1024.,
5300-
merge.estimatedMergeBytes / 1024 / 1024.));
5300+
merge.estimatedMergeBytes / 1024. / 1024.));
53015301
}
53025302

53035303
final IndexReaderWarmer mergedSegmentWarmer = config.getMergedSegmentWarmer();

lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public MergeSpecification findMerges(
509509
+ " level="
510510
+ infoLevel.level
511511
+ " size="
512-
+ String.format(Locale.ROOT, "%.3f MB", segBytes / 1024 / 1024.)
512+
+ String.format(Locale.ROOT, "%.3f MB", segBytes / 1024. / 1024.)
513513
+ extra,
514514
mergeContext);
515515
}

lucene/core/src/java/org/apache/lucene/index/MergePolicy.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ public void setNoCFSRatio(double noCFSRatio) {
803803

804804
/** Returns the largest size allowed for a compound file segment */
805805
public double getMaxCFSSegmentSizeMB() {
806-
return maxCFSSegmentSize / 1024 / 1024.;
806+
return maxCFSSegmentSize / 1024. / 1024.;
807807
}
808808

809809
/**

lucene/core/src/java/org/apache/lucene/index/PointValuesWriter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void addPackedValue(int docID, BytesRef value) throws IOException {
6666

6767
if (docIDs.length == numPoints) {
6868
docIDs = ArrayUtil.grow(docIDs, numPoints + 1);
69-
iwBytesUsed.addAndGet((docIDs.length - numPoints) * Integer.BYTES);
69+
iwBytesUsed.addAndGet((docIDs.length - numPoints) * (long) Integer.BYTES);
7070
}
7171
final long bytesRamBytesUsedBefore = bytes.ramBytesUsed();
7272
bytesOut.writeBytes(value.bytes, value.offset, value.length);

0 commit comments

Comments
 (0)