From 6461e22e0d573b2a58f6eb4f055f1f43f02a3c33 Mon Sep 17 00:00:00 2001 From: eyes_on_me Date: Fri, 10 Oct 2025 10:11:18 +0800 Subject: [PATCH] [BugFix] fix partitioned spill crash when removing partition (#63825) Signed-off-by: silverbullet233 <3675229+silverbullet233@users.noreply.github.com> --- be/src/exec/spill/spill_components.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/be/src/exec/spill/spill_components.cpp b/be/src/exec/spill/spill_components.cpp index ffd99f95853..4a067a18d30 100644 --- a/be/src/exec/spill/spill_components.cpp +++ b/be/src/exec/spill/spill_components.cpp @@ -325,8 +325,6 @@ void PartitionedSpillerWriter::_add_partition(SpilledPartitionPtr&& partition_pt } void PartitionedSpillerWriter::_remove_partition(const SpilledPartition* partition) { - auto affinity_group = partition->block_group->get_affinity_group(); - DCHECK(affinity_group != kDefaultBlockAffinityGroup); _id_to_partitions.erase(partition->partition_id); size_t level = partition->level; auto& partitions = _level_to_partitions[level]; @@ -341,8 +339,12 @@ void PartitionedSpillerWriter::_remove_partition(const SpilledPartition* partiti _min_level = level + 1; } } - WARN_IF_ERROR(_spiller->block_manager()->release_affinity_group(affinity_group), - fmt::format("release affinity group {} error", affinity_group)); + if (partition->block_group != nullptr) { + auto affinity_group = partition->block_group->get_affinity_group(); + DCHECK(affinity_group != kDefaultBlockAffinityGroup); + WARN_IF_ERROR(_spiller->block_manager()->release_affinity_group(affinity_group), + fmt::format("release affinity group {} error", affinity_group)); + } } Status PartitionedSpillerWriter::_choose_partitions_to_flush(bool is_final_flush,