Skip to content

Commit fdcac08

Browse files
committed
Guard against overflow when expanding sort buffer.
1 parent 85da63f commit fdcac08

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

core/src/main/java/org/apache/spark/shuffle/unsafe/UnsafeShuffleInMemorySorter.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ public UnsafeShuffleInMemorySorter(int initialSize) {
4747

4848
public void expandSortBuffer() {
4949
final long[] oldBuffer = sortBuffer;
50-
sortBuffer = new long[oldBuffer.length * 2];
50+
// Guard against overflow:
51+
final int newLength = oldBuffer.length * 2 > 0 ? (oldBuffer.length * 2) : Integer.MAX_VALUE;
52+
sortBuffer = new long[newLength];
5153
System.arraycopy(oldBuffer, 0, sortBuffer, 0, oldBuffer.length);
5254
}
5355

@@ -71,7 +73,11 @@ public long getMemoryUsage() {
7173
*/
7274
public void insertRecord(long recordPointer, int partitionId) {
7375
if (!hasSpaceForAnotherRecord()) {
74-
expandSortBuffer();
76+
if (sortBuffer.length == Integer.MAX_VALUE) {
77+
throw new IllegalStateException("Sort buffer has reached maximum size");
78+
} else {
79+
expandSortBuffer();
80+
}
7581
}
7682
sortBuffer[sortBufferInsertPosition] =
7783
PackedRecordPointer.packPointer(recordPointer, partitionId);

0 commit comments

Comments
 (0)