diff --git a/src/rootserver/ob_disaster_recovery_task_mgr.cpp b/src/rootserver/ob_disaster_recovery_task_mgr.cpp index 3d43307e30..8fb21d06b7 100644 --- a/src/rootserver/ob_disaster_recovery_task_mgr.cpp +++ b/src/rootserver/ob_disaster_recovery_task_mgr.cpp @@ -251,6 +251,15 @@ int ObDRTaskQueue::push_task_in_schedule_list( FLOG_INFO("[DRTASK_NOTICE] finish add task into schedule list", KPC(new_task)); } } + + if (OB_FAIL(ret)) { + if (OB_NOT_NULL(new_task)) { + remove_task_from_map_and_free_it_(new_task); + } else if (OB_NOT_NULL(raw_ptr)) { + task_alloc_.free(raw_ptr); + raw_ptr = nullptr; + } + } return ret; }