clear black servers when reload backup tasks
This commit is contained in:
@ -311,7 +311,7 @@ int ObBackupDataLSTaskMgr::handle_execute_over(
|
|||||||
} else if (OB_FALSE_IT(new_ls_attr.end_ts_ = ObTimeUtility::current_time())) {
|
} else if (OB_FALSE_IT(new_ls_attr.end_ts_ = ObTimeUtility::current_time())) {
|
||||||
} else if (OB_FAIL(ObBackupUtils::get_full_replica_num(ls_attr.tenant_id_, full_replica_num))) {
|
} else if (OB_FAIL(ObBackupUtils::get_full_replica_num(ls_attr.tenant_id_, full_replica_num))) {
|
||||||
LOG_WARN("failed to get full replica num", K(ret));
|
LOG_WARN("failed to get full replica num", K(ret));
|
||||||
} else if (new_ls_attr.black_servers_.count() + 1 == full_replica_num && OB_FALSE_IT(new_ls_attr.black_servers_.reset())) {
|
} else if (new_ls_attr.black_servers_.count() + 1 >= full_replica_num && OB_FALSE_IT(new_ls_attr.black_servers_.reset())) {
|
||||||
} else if (OB_SUCCESS != result_info.result_ && OB_FAIL(new_ls_attr.black_servers_.push_back(result_info.addr_))) {
|
} else if (OB_SUCCESS != result_info.result_ && OB_FAIL(new_ls_attr.black_servers_.push_back(result_info.addr_))) {
|
||||||
LOG_WARN("failed to push back black server", K(ret), K(result_info));
|
LOG_WARN("failed to push back black server", K(ret), K(result_info));
|
||||||
} else if (OB_FALSE_IT(new_ls_attr.result_ = result_info.result_)) {
|
} else if (OB_FALSE_IT(new_ls_attr.result_ = result_info.result_)) {
|
||||||
|
|||||||
@ -127,17 +127,18 @@ int ObBackupDataScheduler::get_need_reload_task(
|
|||||||
int ObBackupDataScheduler::do_get_need_reload_task_(
|
int ObBackupDataScheduler::do_get_need_reload_task_(
|
||||||
const ObBackupJobAttr &job,
|
const ObBackupJobAttr &job,
|
||||||
const ObBackupSetTaskAttr &set_task_attr,
|
const ObBackupSetTaskAttr &set_task_attr,
|
||||||
const ObIArray<ObBackupLSTaskAttr> &ls_tasks,
|
ObIArray<ObBackupLSTaskAttr> &ls_tasks,
|
||||||
common::ObIAllocator &allocator,
|
common::ObIAllocator &allocator,
|
||||||
ObIArray<ObBackupScheduleTask *> &tasks)
|
ObIArray<ObBackupScheduleTask *> &tasks)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
|
int64_t full_replica_num = 0;
|
||||||
if (!job.is_valid() || ls_tasks.empty()) {
|
if (!job.is_valid() || ls_tasks.empty()) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("[DATA_BACKUP]invalid argument", K(ret), K(job), K(ls_tasks));
|
LOG_WARN("[DATA_BACKUP]invalid argument", K(ret), K(job), K(ls_tasks));
|
||||||
} else {
|
} else {
|
||||||
for (int64_t i = 0; OB_SUCC(ret) && i < ls_tasks.count(); ++i) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < ls_tasks.count(); ++i) {
|
||||||
const ObBackupLSTaskAttr &ls_task = ls_tasks.at(i);
|
ObBackupLSTaskAttr &ls_task = ls_tasks.at(i);
|
||||||
ObBackupScheduleTask *task = nullptr;
|
ObBackupScheduleTask *task = nullptr;
|
||||||
bool is_dropped = false;
|
bool is_dropped = false;
|
||||||
if (OB_FAIL(ObBackupDataLSTaskMgr::check_ls_is_dropped(ls_task, *sql_proxy_, is_dropped))) {
|
if (OB_FAIL(ObBackupDataLSTaskMgr::check_ls_is_dropped(ls_task, *sql_proxy_, is_dropped))) {
|
||||||
@ -152,6 +153,9 @@ int ObBackupDataScheduler::do_get_need_reload_task_(
|
|||||||
*backup_service_, *sql_proxy_, ls_task, result_info))) {
|
*backup_service_, *sql_proxy_, ls_task, result_info))) {
|
||||||
LOG_WARN("failed to handle execute over", K(ret), K(ls_task));
|
LOG_WARN("failed to handle execute over", K(ret), K(ls_task));
|
||||||
}
|
}
|
||||||
|
} else if (OB_FAIL(ObBackupUtils::get_full_replica_num(ls_task.tenant_id_, full_replica_num))) {
|
||||||
|
LOG_WARN("failed to get full replica num", K(ret));
|
||||||
|
} else if (ls_task.black_servers_.count() >= full_replica_num && OB_FALSE_IT(ls_task.black_servers_.reset())) {
|
||||||
} else if (OB_FAIL(build_task_(job, set_task_attr, ls_task, allocator, task))) {
|
} else if (OB_FAIL(build_task_(job, set_task_attr, ls_task, allocator, task))) {
|
||||||
LOG_WARN("[DATA_BACKUP]failed to build task", K(ret), K(job), K(ls_task));
|
LOG_WARN("[DATA_BACKUP]failed to build task", K(ret), K(job), K(ls_task));
|
||||||
} else if (OB_ISNULL(task)) {
|
} else if (OB_ISNULL(task)) {
|
||||||
|
|||||||
@ -82,7 +82,7 @@ private:
|
|||||||
int get_need_cancel_tenants_(const uint64_t tenant_id, const common::ObIArray<uint64_t> &backup_tenant_ids,
|
int get_need_cancel_tenants_(const uint64_t tenant_id, const common::ObIArray<uint64_t> &backup_tenant_ids,
|
||||||
common::ObIArray<uint64_t> &need_cancel_backup_tenants);
|
common::ObIArray<uint64_t> &need_cancel_backup_tenants);
|
||||||
int do_get_need_reload_task_(const share::ObBackupJobAttr &job, const share::ObBackupSetTaskAttr &set_task_attr,
|
int do_get_need_reload_task_(const share::ObBackupJobAttr &job, const share::ObBackupSetTaskAttr &set_task_attr,
|
||||||
const ObIArray<share::ObBackupLSTaskAttr> &ls_tasks,
|
ObIArray<share::ObBackupLSTaskAttr> &ls_tasks,
|
||||||
common::ObIAllocator &allocator, ObIArray<ObBackupScheduleTask *> &tasks);
|
common::ObIAllocator &allocator, ObIArray<ObBackupScheduleTask *> &tasks);
|
||||||
int build_task_(const share::ObBackupJobAttr &job, const share::ObBackupSetTaskAttr &set_task_attr,
|
int build_task_(const share::ObBackupJobAttr &job, const share::ObBackupSetTaskAttr &set_task_attr,
|
||||||
const share::ObBackupLSTaskAttr &ls_task,
|
const share::ObBackupLSTaskAttr &ls_task,
|
||||||
|
|||||||
Reference in New Issue
Block a user