Skip to content
Merged
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
b8938b5
add thread local
binmahone Sep 23, 2025
79a0ef3
temp
binmahone Sep 23, 2025
b44abce
fix compile
binmahone Sep 23, 2025
b585d53
fix compression
binmahone Sep 23, 2025
e8abcdd
compile pass
binmahone Sep 23, 2025
5c96d7d
ready to test
binmahone Sep 23, 2025
1ce3011
fix bug
binmahone Sep 23, 2025
1b45069
algin size estimation
binmahone Sep 23, 2025
8aec476
avoid NPE
binmahone Sep 24, 2025
e827c6b
serializerInstance will close serializerInstance
binmahone Sep 25, 2025
9a72121
fix typo
binmahone Sep 25, 2025
8ae0564
remove thread local
binmahone Sep 28, 2025
c0fabcb
fix release limiter too early
binmahone Sep 28, 2025
a2e1046
fix compile
binmahone Sep 28, 2025
f63abff
introduce column vector with state, and chagned the place to call has…
binmahone Sep 28, 2025
38effe1
fix
binmahone Sep 28, 2025
9c295ee
fix bug
binmahone Sep 28, 2025
b322eb8
release semaphore earlier
binmahone Sep 30, 2025
f898e39
fix
binmahone Sep 30, 2025
8247995
update license
binmahone Sep 30, 2025
5c6e21d
fix 1 qeury fail
binmahone Sep 30, 2025
a274008
debuggin
binmahone Sep 30, 2025
9180f51
fix
binmahone Sep 30, 2025
e96db1c
fix bugs
binmahone Sep 30, 2025
cb3441f
add debugging
binmahone Sep 30, 2025
f718d84
fix
binmahone Sep 30, 2025
719db76
Merge remote-tracking branch 'origin/branch-25.10' into 250923_optimi…
binmahone Oct 14, 2025
ff73518
Merge remote-tracking branch 'origin/branch-25.12' into 250923_optimi…
binmahone Oct 14, 2025
1a5514f
addressing comments, part 1
binmahone Oct 14, 2025
049f27b
address comments ,part 2
binmahone Oct 14, 2025
fcef7ae
fix compile
binmahone Oct 14, 2025
7ecfc9d
fix >100 chars a line
binmahone Oct 14, 2025
9ebb8ec
fix slot num problem
binmahone Oct 15, 2025
08dcc92
refine has next
binmahone Oct 15, 2025
d13f2d5
Merge branch '250923_optimize_nds_sep_fix_slot' into 250923_optimize_nds
binmahone Oct 15, 2025
2e3002c
Merge remote-tracking branch 'origin/branch-25.12' into 250923_optimi…
binmahone Oct 15, 2025
4f02ffb
fix bug caught by small batches scenario
binmahone Oct 16, 2025
d1d4ec3
fix write bytes stats
binmahone Oct 16, 2025
f4dc778
cover >200 partition case, basic version
binmahone Oct 30, 2025
cacabe8
fix bug , and enable >200
binmahone Oct 31, 2025
430bf83
fix metrics
binmahone Oct 31, 2025
3c2ccf2
fix bug
binmahone Oct 31, 2025
d8bc949
fix bug 2
binmahone Oct 31, 2025
505bd71
use memory for partial files as much as possible
binmahone Nov 4, 2025
fa823d1
temp (revert pomx.xml)
binmahone Nov 5, 2025
213f4f6
minor fixes
binmahone Nov 5, 2025
36c2fc1
fix RapidsShuffleThreadedWriterSuite
binmahone Nov 6, 2025
dec3087
Merge branch 'main' into 250923_optimize_nds_more
binmahone Nov 6, 2025
ee84bf1
uncomment delta lake
binmahone Nov 6, 2025
ac94597
log4j2 compatibility
binmahone Nov 7, 2025
7fb1fcb
fix
binmahone Nov 7, 2025
370b160
fix metrics name
binmahone Nov 7, 2025
b5cd6a0
fix EOF
binmahone Nov 7, 2025
ae6dc4a
fix track no spill
binmahone Nov 7, 2025
777746a
fix writerExecutor leak
binmahone Nov 7, 2025
42ed602
avoid uncesssary fsync
binmahone Nov 10, 2025
d62c3f1
add metrics for saving disk io bytes
binmahone Nov 12, 2025
750105b
revert spill framework unnecessary changes
binmahone Nov 12, 2025
49a144c
rename writer to merger
binmahone Nov 13, 2025
12dc848
fix spill store leak
binmahone Dec 11, 2025
5c21dde
fix another leak
binmahone Dec 11, 2025
fff9edf
Merge remote-tracking branch 'origin/main' into 250923_optimize_nds_more
binmahone Dec 22, 2025
bae6683
fix review comments
binmahone Dec 22, 2025
2d54f91
minor fix
binmahone Dec 22, 2025
7c83565
fix import
binmahone Dec 22, 2025
d721c3f
fix ut
binmahone Dec 23, 2025
bd7072a
Revert unrelated priority changes per review feedback
binmahone Jan 8, 2026
58593d2
Update copyright year to 2026 for all modified files
binmahone Jan 8, 2026
d4bded4
Document that read() method is not thread-safe
binmahone Jan 8, 2026
d475dd6
add more comments for rapids conf
binmahone Jan 8, 2026
6ccca45
Throw IllegalStateException for unexpected column types in incRefCoun…
binmahone Jan 8, 2026
95a20ce
Fix SpillableHostBuffer.apply calls to include priority parameter
binmahone Jan 8, 2026
f4647c1
reduce default partialFileBufferInitialSize
binmahone Jan 9, 2026
1ea67d8
Optimize BytesInFlightLimiter: release excess quota immediately after…
binmahone Jan 9, 2026
440d9e7
Fix multi-batch detection and memory leak in shuffle writer
binmahone Jan 12, 2026
873be38
Fix integer overflow vulnerability in SpillablePartialFileHandle
binmahone Jan 12, 2026
2a4ce4b
Fix memory tracking inconsistency in SpillablePartialFileHandle
binmahone Jan 12, 2026
28b631c
Merge remote-tracking branch 'binmahone/250923_optimize_nds_more' int…
binmahone Jan 12, 2026
ed6753f
Merge remote-tracking branch 'binmahone/250923_optimize_nds_more_temp…
binmahone Jan 12, 2026
c01e26f
Revert "Fix memory tracking inconsistency in SpillablePartialFileHandle"
binmahone Jan 12, 2026
9a34a53
fix spillable def
binmahone Jan 12, 2026
5084dff
Improve error messages and logging for SpillablePartialFileHandle
binmahone Jan 13, 2026
50131e6
Use non-pinned host memory in SpillablePartialFileHandle
binmahone Dec 25, 2025
d90050e
Refactor SpillablePartialFileHandle to use Arm utilities
binmahone Jan 13, 2026
55af52b
fix ci
binmahone Jan 13, 2026
8a651c8
Merge remote-tracking branch 'origin/main' into 250923_optimize_nds_more
binmahone Jan 13, 2026
9add7a8
Address review comments from abellina on PR #13724
binmahone Jan 14, 2026
acfc2d5
Fix multi-batch detection: use < instead of <= for partition ID compa…
binmahone Jan 15, 2026
bfa042b
Change wait timeout from 1ms to 100ms in merger thread
binmahone Jan 15, 2026
72fa08a
Use classic condition flag pattern instead of polling for merger thre…
binmahone Jan 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion integration_tests/run_pyspark_from_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
# ============================================================================

set -ex
PS4='+${LINENO}: '
Comment thread
binmahone marked this conversation as resolved.
Outdated

SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
cd "$SCRIPTPATH"
Expand Down Expand Up @@ -271,7 +272,7 @@ else

REPORT_CHARS=${REPORT_CHARS:="fE"} # default as (f)ailed, (E)rror
STD_INPUT_PATH="$INPUT_PATH"/src/test/resources
TEST_COMMON_OPTS=(-v
TEST_COMMON_OPTS=(-v -x
Comment thread
binmahone marked this conversation as resolved.
Outdated
-r"$REPORT_CHARS"
"$TEST_TAGS"
--std_input_path="$STD_INPUT_PATH"
Expand Down Expand Up @@ -627,6 +628,11 @@ PY
unset PYSP_TEST_spark_jars_repositories
unset PYSP_TEST_spark_rapids_memory_gpu_allocSize


# Comment this out if you want to run remote debug this local mode spark process
# Don't forget to set TEST_PARALLEL=1 to ensure local mode spark
# export SPARK_SUBMIT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"

Comment thread
binmahone marked this conversation as resolved.
exec "$SPARK_HOME"/bin/spark-submit "${jarOpts[@]}" \
--driver-java-options "$driverJavaOpts" \
$SPARK_SUBMIT_FLAGS \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ private HostMemoryBuffer[] getHostBuffersWithRetry(
try {
hBuf = HostAlloc$.MODULE$.alloc((dataBytes + offsetBytes),true);
SpillableHostBuffer sBuf = SpillableHostBuffer$.MODULE$.apply(hBuf, hBuf.getLength(),
SpillPriorities$.MODULE$.ACTIVE_ON_DECK_PRIORITY());
Comment thread
binmahone marked this conversation as resolved.
Option.empty());
Comment thread
binmahone marked this conversation as resolved.
Outdated
hBuf = null; // taken over by spillable host buffer
return Tuple2.apply(sBuf, numRowsWrapper);
} finally {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@


Comment thread
binmahone marked this conversation as resolved.
Outdated
/*
* Copyright (c) 2020-2021, NVIDIA CORPORATION.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2025, NVIDIA CORPORATION.
* Copyright (c) 2019-2021, NVIDIA CORPORATION.
Comment thread
binmahone marked this conversation as resolved.
Outdated
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ trait GpuExec extends SparkPlan with Logging {

// For GpuShuffleExchangeExecBase and GpuCustomShuffleReaderExec,
// we want the op time metrics to be called:
// - "op time (shuffle write partition & serial)" for shuffle write, and
// - "op time (shuffle write partition)" for shuffle write, and
// - "op time (shuffle read)" for shuffle read.
// That's why we have this separate method to get the metric.
def getOpTimeNewMetric: Option[GpuMetric] = allMetrics.get(OP_TIME_NEW)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ object GpuMetric extends Logging {
val DESCRIPTION_NUM_PARTITIONS = "partitions"
val DESCRIPTION_OP_TIME_LEGACY = "op time (legacy)"
val DESCRIPTION_OP_TIME_NEW = "op time"
val DESCRIPTION_OP_TIME_NEW_SHUFFLE_WRITE = "op time (shuffle write partition & serial)"
val DESCRIPTION_OP_TIME_NEW_SHUFFLE_WRITE = "op time (shuffle write partitioning)"
val DESCRIPTION_OP_TIME_NEW_SHUFFLE_READ = "op time (shuffle read)"
val DESCRIPTION_COLLECT_TIME = "collect batch time"
val DESCRIPTION_CONCAT_TIME = "concat batch time"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1406,8 +1406,7 @@ abstract class MultiFileCoalescingPartitionReaderBase(
logDebug(s"$getFileFormatShortName Coalescing reading estimates the initTotalSize:" +
s" $initTotalSize, and the true size: $finalBufferSize")
SpillableHostBuffer(finalBuffer,
finalBufferSize,
SpillPriorities.ACTIVE_BATCHING_PRIORITY)
Comment thread
binmahone marked this conversation as resolved.
finalBufferSize)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1096,7 +1096,7 @@ trait OrcPartitionReaderBase extends OrcCommonFunctions with Logging
closeOnExcept(hostBuffer) { hmb =>
withResource(new HostMemoryOutputStream(hmb)) { out =>
writeOrcOutputFile(ctx, out, stripes)
(SpillableHostBuffer(hmb, out.getPos, SpillPriorities.ACTIVE_BATCHING_PRIORITY),
(SpillableHostBuffer(hmb, out.getPos),
out.getPos)
}
}
Expand Down Expand Up @@ -2393,8 +2393,7 @@ class MultiFileCloudOrcPartitionReader(

// e: Create the new meta for the combined buffer
val numRows = combinedMeta.allPartValues.map(_._1).sum
val finalBuf = SpillableHostBuffer(maybeNewBuf, maybeNewBuf.getLength,
SpillPriorities.ACTIVE_BATCHING_PRIORITY)
val finalBuf = SpillableHostBuffer(maybeNewBuf, maybeNewBuf.getLength)
val combinedRet = SingleHMBAndMeta(Array(finalBuf), outStream.getPos, numRows,
blockMetas)
val newHmbWithMeta = metaToUse.copy(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,7 @@ sealed trait SpillableHostConcatResult extends AutoCloseable {
def getDataLen: Long

protected var spillableBuffer = {
SpillableHostBuffer(hmb, hmb.getLength, SpillPriorities.ACTIVE_BATCHING_PRIORITY)
Comment thread
binmahone marked this conversation as resolved.
SpillableHostBuffer(hmb, hmb.getLength)
}

override def close(): Unit = if (spillableBuffer != null) {
Expand Down
32 changes: 32 additions & 0 deletions sql-plugin/src/main/scala/com/nvidia/spark/rapids/HostAlloc.scala
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ private class HostAlloc(nonPinnedLimit: Long) extends HostMemoryAllocator with L
private val isUnlimited = nonPinnedLimit < 0
private val isPinnedOnly = nonPinnedLimit == 0

// Expose for usage ratio calculation
def getCurrentAllocated: Long = synchronized {
currentNonPinnedAllocated + currentPinnedAllocated
}

def getTotalLimit: Long = {
if (isUnlimited) Long.MaxValue
else pinnedLimit + nonPinnedLimit
}

/**
* A callback class so we know when a non-pinned host buffer was released
*/
Expand Down Expand Up @@ -295,6 +305,28 @@ object HostAlloc extends Logging {
getSingleton.alloc(amount, preferPinned)
}

/**
* Get current host memory usage ratio (0.0 to 1.0).
* Returns current allocated / limit.
*/
def getUsageRatio(): Double = {
val alloc = getSingleton
val currentAllocated = alloc.getCurrentAllocated
val totalLimit = alloc.getTotalLimit
if (totalLimit == Long.MaxValue) {
0.0 // Unlimited, consider as 0% used
} else {
currentAllocated.toDouble / totalLimit.toDouble
}
}

/**
* Check if host memory usage is below the given threshold (0.0 to 1.0).
*/
def isUsageBelowThreshold(threshold: Double): Boolean = {
getUsageRatio() < threshold
}

def addEventHandler(buff: HostMemoryBuffer,
handler: MemoryBuffer.EventHandler): HostMemoryBuffer = {
buff.synchronized {
Expand Down
41 changes: 41 additions & 0 deletions sql-plugin/src/main/scala/com/nvidia/spark/rapids/RapidsConf.scala
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,41 @@ val GPU_COREDUMP_PIPE_PATTERN = conf("spark.rapids.gpu.coreDump.pipePattern")
.bytesConf(ByteUnit.BYTE)
.createWithDefault(-1)

val PARTIAL_FILE_BUFFER_INITIAL_SIZE =
conf("spark.rapids.memory.host.partialFileBufferInitialSize")
.doc("The initial size in bytes for a host memory buffer used by " +
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to understand where you got the default values, and it would be nice to call out how this and the other configs interact with each other. It is also not clear how these relate to shuffle. I get that these are internal configs, but just from the description I don't know anything about what they do. I don't knwo what a SpillablePartialFileHandle is.

Copy link
Copy Markdown
Collaborator Author

@binmahone binmahone Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added more comments, please check

"SpillablePartialFileHandle. The buffer can expand dynamically up to " +
"partialFileBufferMaxSize. A smaller initial size reduces upfront memory " +
"allocation but may require more expansions.")
.startupOnly()
.internal()
.bytesConf(ByteUnit.BYTE)
.createWithDefault(1024L * 1024 * 1024) // 1GB default
Comment thread
binmahone marked this conversation as resolved.
Outdated

val PARTIAL_FILE_BUFFER_MAX_SIZE =
conf("spark.rapids.memory.host.partialFileBufferMaxSize")
.doc("The maximum size in bytes for a single host memory buffer used by " +
"SpillablePartialFileHandle. When a buffer needs to expand beyond this limit, " +
"it will be spilled to disk instead. This prevents excessive memory usage " +
"for large shuffle partitions.")
.startupOnly()
.internal()
.bytesConf(ByteUnit.BYTE)
.createWithDefault(8L * 1024 * 1024 * 1024) // 8GB

val PARTIAL_FILE_BUFFER_MEMORY_THRESHOLD =
conf("spark.rapids.memory.host.partialFileBufferMemoryThreshold")
.doc("The host memory usage threshold (as a fraction from 0.0 to 1.0) for deciding " +
"whether to use memory-based buffering for partial files. When host memory usage " +
"exceeds this threshold, file-based storage will be used directly. This threshold " +
"also applies when expanding buffers dynamically.")
.startupOnly()
.internal()
.doubleConf
.checkValue(v => v > 0.0 && v <= 1.0,
"The memory threshold must be in the range (0.0, 1.0]")
.createWithDefault(0.5)

val UNSPILL = conf("spark.rapids.memory.gpu.unspill.enabled")
.doc("When a spilled GPU buffer is needed again, should it be unspilled, or only copied " +
"back into GPU memory temporarily. Unspilling may be useful for GPU buffers that are " +
Expand Down Expand Up @@ -3281,6 +3316,12 @@ class RapidsConf(conf: Map[String, String]) extends Logging {

lazy val hostSpillStorageSize: Long = get(HOST_SPILL_STORAGE_SIZE)

lazy val partialFileBufferInitialSize: Long = get(PARTIAL_FILE_BUFFER_INITIAL_SIZE)

lazy val partialFileBufferMaxSize: Long = get(PARTIAL_FILE_BUFFER_MAX_SIZE)

lazy val partialFileBufferMemoryThreshold: Double = get(PARTIAL_FILE_BUFFER_MEMORY_THRESHOLD)

lazy val isUnspillEnabled: Boolean = get(UNSPILL)

lazy val needDecimalGuarantees: Boolean = get(NEED_DECIMAL_OVERFLOW_GUARANTEES)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -526,17 +526,19 @@ object SpillableHostBuffer {
* must be <= than buffer.getLength, otherwise this function throws
* and closes `buffer`
* @param buffer the buffer to make spillable
* @param priority the initial spill priority of this buffer
* @param overrideTaskPriority optional task priority to override the default task priority
*/
def apply(buffer: HostMemoryBuffer,
length: Long,
priority: Long): SpillableHostBuffer = {
overrideTaskPriority: Option[Long] = None): SpillableHostBuffer = {
closeOnExcept(buffer) { _ =>
require(length <= buffer.getLength,
s"Attempted to add a host spillable with a length ${length} B which is " +
s"greater than the backing host buffer length ${buffer.getLength} B")
}
new SpillableHostBuffer(SpillableHostBufferHandle(buffer), length)
val handle = SpillableHostBufferHandle(buffer)
overrideTaskPriority.foreach(priority => handle.taskPriority = priority)
Comment thread
binmahone marked this conversation as resolved.
Outdated
new SpillableHostBuffer(handle, length)
}
Comment on lines 531 to 540
Copy link

Copilot AI Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method signature change removes the priority parameter but the behavior changes. The new signature now accepts overrideTaskPriority: Option[Long] which is applied to the handle after creation. However, all existing call sites pass no arguments, relying on the default. This means the priority will default to whatever SpillableHostBufferHandle sets internally. Ensure this change doesn't affect spill ordering for existing use cases. The old behavior explicitly set priorities, but now most calls will use the default task priority.

Copilot uses AI. Check for mistakes.

def sliceWithRetry(shb: SpillableHostBuffer, start: Long, len: Long): HostMemoryBuffer = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ object SpillableKudoTable {
buffer.getLength,
SpillableHostBuffer.apply(
buffer,
buffer.getLength,
SpillPriorities.ACTIVE_BATCHING_PRIORITY)
buffer.getLength)
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package com.nvidia.spark.rapids.jni.kudo

import ai.rapids.cudf.Schema
import com.nvidia.spark.rapids.{CoalescedHostResult, GpuColumnVector, RmmRapidsRetryIterator, SpillableHostBuffer, SpillPriorities}
import com.nvidia.spark.rapids.{CoalescedHostResult, GpuColumnVector, RmmRapidsRetryIterator, SpillableHostBuffer}
import com.nvidia.spark.rapids.Arm.withResource

import org.apache.spark.sql.types.DataType
Expand Down Expand Up @@ -57,7 +57,7 @@ object KudoHostMergeResultWrapper {
def apply(inner: KudoHostMergeResult): KudoHostMergeResultWrapper = {
KudoHostMergeResultWrapper(inner.getSchema, inner.getColumnInfoList,
SpillableHostBuffer(inner.getHostBuf,
inner.getHostBuf.getLength, SpillPriorities.ACTIVE_BATCHING_PRIORITY
Comment thread
binmahone marked this conversation as resolved.
inner.getHostBuf.getLength
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2022,7 +2022,7 @@ trait ParquetPartitionReaderBase extends Logging with ScanWithMetrics
throw new QueryExecutionException(s"Calculated buffer size $estTotalSize is too " +
s"small, actual written: ${out.getPos}")
}
(SpillableHostBuffer(hmb, out.getPos, SpillPriorities.ACTIVE_BATCHING_PRIORITY),
Comment thread
binmahone marked this conversation as resolved.
(SpillableHostBuffer(hmb, out.getPos),
outputBlocks)
}
}
Expand Down Expand Up @@ -2552,7 +2552,7 @@ class MultiFileCloudParquetPartitionReader(
offset += footerOut.getPos
}
val spHostBufs = buffers.map(b =>
SpillableHostBuffer(b, b.getLength, SpillPriorities.ACTIVE_BATCHING_PRIORITY))
SpillableHostBuffer(b, b.getLength))
val newHmbBufferInfo = SingleHMBAndMeta(spHostBufs.toArray, offset,
combinedMeta.allPartValues.map(_._1).sum, Seq.empty)
val newHmbMeta = HostMemoryBuffersWithMetaData(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,7 @@ trait HostSpillableHandle[T <: AutoCloseable] extends SpillableHandle {
}
}


object SpillableHostBufferHandle extends Logging {
def apply(hmb: HostMemoryBuffer): SpillableHostBufferHandle = {
Comment thread
binmahone marked this conversation as resolved.
val handle = new SpillableHostBufferHandle(hmb.getLength, host = Some(hmb))
Expand Down Expand Up @@ -388,6 +389,7 @@ object SpillableHostBufferHandle extends Logging {
}
}


class SpillableHostBufferHandle private (
val sizeInBytes: Long,
private[spill] override var host: Option[HostMemoryBuffer] = None,
Expand Down Expand Up @@ -1867,7 +1869,7 @@ object SpillFramework extends Logging {
// public for tests. Some tests not in the `spill` package require setting this
// because they need fine control over allocations.
var storesInternal: SpillableStores = _

Comment thread
binmahone marked this conversation as resolved.
def stores: SpillableStores = {
if (storesInternal == null) {
throw new IllegalStateException(
Expand Down
Loading
Loading