From a905728a198064846d03c2481f8aee4dec85f83a Mon Sep 17 00:00:00 2001 From: Siyang Tang Date: Wed, 30 Jul 2025 09:55:27 +0800 Subject: [PATCH] [fix](schema-change) Fix null new tablet when cleaning up sc job on failure (#53952) ### What problem does this PR solve? Problem Summary: 1. New tablet cloud be nullptr when get tablet action failed, take it into account. 2. Fix grammer error of the method signature. --- be/src/agent/task_worker_pool.cpp | 2 +- be/src/cloud/cloud_schema_change_job.cpp | 5 ++++- be/src/cloud/cloud_schema_change_job.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/be/src/agent/task_worker_pool.cpp b/be/src/agent/task_worker_pool.cpp index 7410041663e05c..350d0fcf8fbf23 100644 --- a/be/src/agent/task_worker_pool.cpp +++ b/be/src/agent/task_worker_pool.cpp @@ -293,7 +293,7 @@ void alter_cloud_tablet(CloudStorageEngine& engine, const TAgentTaskRequest& age job.process_alter_tablet(agent_task_req.alter_tablet_req_v2), [&](const doris::Exception& ex) { DorisMetrics::instance()->create_rollup_requests_failed->increment(1); - job.clean_up_on_failed(); + job.clean_up_on_failure(); }); return Status::OK(); }(); diff --git a/be/src/cloud/cloud_schema_change_job.cpp b/be/src/cloud/cloud_schema_change_job.cpp index 405dcbe1a0d3cc..9e8d3f85a0809e 100644 --- a/be/src/cloud/cloud_schema_change_job.cpp +++ b/be/src/cloud/cloud_schema_change_job.cpp @@ -532,7 +532,10 @@ Status CloudSchemaChangeJob::_process_delete_bitmap(int64_t alter_version, return Status::OK(); } -void CloudSchemaChangeJob::clean_up_on_failed() { +void CloudSchemaChangeJob::clean_up_on_failure() { + if (_new_tablet == nullptr) { + return; + } if (_new_tablet->keys_type() == KeysType::UNIQUE_KEYS && _new_tablet->enable_unique_key_merge_on_write()) { _cloud_storage_engine.meta_mgr().remove_delete_bitmap_update_lock( diff --git a/be/src/cloud/cloud_schema_change_job.h b/be/src/cloud/cloud_schema_change_job.h index 2a33443137ebb0..2f49f3eab6dac7 100644 --- a/be/src/cloud/cloud_schema_change_job.h +++ b/be/src/cloud/cloud_schema_change_job.h @@ -36,7 +36,7 @@ class CloudSchemaChangeJob { // This method is idempotent for a same request. Status process_alter_tablet(const TAlterTabletReqV2& request); - void clean_up_on_failed(); + void clean_up_on_failure(); private: Status _convert_historical_rowsets(const SchemaChangeParams& sc_params,