@@ -434,10 +434,12 @@ impl MultiPartitionShuffleRepartitioner {
434434 Ok ( ( ) )
435435 }
436436
437+ #[ allow( clippy:: too_many_arguments) ]
437438 fn shuffle_write_partition (
438439 partition_iter : & mut PartitionedBatchIterator ,
439440 shuffle_block_writer : & mut ShuffleBlockWriter ,
440441 output_data : & mut BufWriter < File > ,
442+ interleave_time : & Time ,
441443 encode_time : & Time ,
442444 write_time : & Time ,
443445 write_buffer_size : usize ,
@@ -449,7 +451,7 @@ impl MultiPartitionShuffleRepartitioner {
449451 write_buffer_size,
450452 batch_size,
451453 ) ;
452- for batch in partition_iter {
454+ while let Some ( batch) = partition_iter. next ( interleave_time ) {
453455 let batch = batch?;
454456 buf_batch_writer. write ( & batch, encode_time, write_time) ?;
455457 }
@@ -573,7 +575,7 @@ impl ShufflePartitioner for MultiPartitionShuffleRepartitioner {
573575 . open ( data_file)
574576 . map_err ( |e| DataFusionError :: Execution ( format ! ( "shuffle write error: {e:?}" ) ) ) ?;
575577
576- let mut output_data = BufWriter :: new ( output_data) ;
578+ let mut output_data = BufWriter :: with_capacity ( self . write_buffer_size , output_data) ;
577579
578580 #[ allow( clippy:: needless_range_loop) ]
579581 for i in 0 ..num_output_partitions {
@@ -596,6 +598,7 @@ impl ShufflePartitioner for MultiPartitionShuffleRepartitioner {
596598 & mut partition_iter,
597599 & mut self . shuffle_block_writer ,
598600 & mut output_data,
601+ & self . metrics . interleave_time ,
599602 & self . metrics . encode_time ,
600603 & self . metrics . write_time ,
601604 self . write_buffer_size ,
0 commit comments