Skip to content

Commit a77e316

Browse files
committed
refactor: enable can_spill config setting when creating child reservations
1 parent 7f45ee8 commit a77e316

2 files changed

Lines changed: 16 additions & 9 deletions

File tree

datafusion/datasource-parquet/src/file_format.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,8 +1407,10 @@ fn spawn_column_parallel_row_group_writer(
14071407
mpsc::channel::<ArrowLeafColumn>(max_buffer_size);
14081408
col_array_channels.push(send_array);
14091409

1410-
let reservation = parent_reservation
1411-
.new_child_reservation(format!("ParquetSink(ArrowColumnWriter(col={i}))"));
1410+
let reservation = parent_reservation.new_child_reservation(
1411+
format!("ParquetSink(ArrowColumnWriter(col={i}))"),
1412+
false,
1413+
);
14121414
let task = SpawnedTask::spawn(column_serializer_task(
14131415
receive_array,
14141416
writer,
@@ -1497,11 +1499,11 @@ fn spawn_parquet_parallel_serialization_task(
14971499
parallel_options: ParallelParquetWriterOptions,
14981500
parent_reservation: &MemoryReservation,
14991501
) -> SpawnedTask<Result<(), DataFusionError>> {
1500-
let cols_reservation =
1501-
parent_reservation.new_child_reservation("ParquetSink(ParallelColumnWriters)");
1502+
let cols_reservation = parent_reservation
1503+
.new_child_reservation("ParquetSink(ParallelColumnWriters)", false);
15021504

1503-
let rg_reservation =
1504-
parent_reservation.new_child_reservation("ParquetSink(SerializedRowGroupWriter)");
1505+
let rg_reservation = parent_reservation
1506+
.new_child_reservation("ParquetSink(SerializedRowGroupWriter)", false);
15051507

15061508
SpawnedTask::spawn(async move {
15071509
let max_buffer_rb = parallel_options.max_buffered_record_batches_per_stream;
@@ -1602,8 +1604,8 @@ async fn concatenate_parallel_row_groups(
16021604
mut object_store_writer: Box<dyn AsyncWrite + Send + Unpin>,
16031605
parent_reservation: &MemoryReservation,
16041606
) -> Result<FileMetaData> {
1605-
let mut file_reservation =
1606-
parent_reservation.new_child_reservation("ParquetSink(SerializedFileWriter)");
1607+
let mut file_reservation = parent_reservation
1608+
.new_child_reservation("ParquetSink(SerializedFileWriter)", false);
16071609

16081610
while let Some(task) = serialize_rx.recv().await {
16091611
let result = task.join_unwind().await;

datafusion/execution/src/memory_pool/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,8 +486,13 @@ impl MemoryReservation {
486486
/// is a child of this reservation's consumer.
487487
///
488488
/// This is useful for creating memory consumers with lineage tracking.
489-
pub fn new_child_reservation(&self, name: impl Into<String>) -> MemoryReservation {
489+
pub fn new_child_reservation(
490+
&self,
491+
name: impl Into<String>,
492+
can_spill: bool,
493+
) -> MemoryReservation {
490494
MemoryConsumer::new_with_parent(name, self.consumer().id())
495+
.with_can_spill(can_spill)
491496
.register(&self.registration.pool)
492497
}
493498

0 commit comments

Comments
 (0)