Fix rebuild make ObMigrationOpArg invalid bug.
This commit is contained in:
@ -1043,11 +1043,8 @@ int ObLSRebuildMgr::generate_rebuild_task_()
|
||||
int ret = OB_SUCCESS;
|
||||
const int64_t timestamp = 0;
|
||||
common::ObMemberList member_list;
|
||||
int64_t paxos_replica_num = 0;
|
||||
ObLSInfo ls_info;
|
||||
int64_t cluster_id = GCONF.cluster_id;
|
||||
uint64_t tenant_id = MTL_ID();
|
||||
ObAddr leader_addr;
|
||||
ObLS *ls = nullptr;
|
||||
|
||||
if (!is_inited_) {
|
||||
@ -1057,27 +1054,6 @@ int ObLSRebuildMgr::generate_rebuild_task_()
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("ls should not be NULL", K(ret), KP(ls), K(rebuild_ctx_));
|
||||
} else {
|
||||
if (OB_FAIL(get_ls_info_(cluster_id, tenant_id, ls->get_ls_id(), ls_info))) {
|
||||
LOG_WARN("failed to get ls info", K(ret), K(cluster_id), K(tenant_id), KPC(ls));
|
||||
//overwrite ret
|
||||
if (OB_FAIL(ls->get_log_handler()->get_election_leader(leader_addr))) {
|
||||
LOG_WARN("failed to get election leader", K(ret), KPC(ls), K(tenant_id));
|
||||
} else {
|
||||
paxos_replica_num = 1;
|
||||
}
|
||||
} else {
|
||||
//TODO(muwei.ym) do not use leader as src in 4.3
|
||||
const ObLSInfo::ReplicaArray &replica_array = ls_info.get_replicas();
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < replica_array.count(); ++i) {
|
||||
const ObLSReplica &replica = replica_array.at(i);
|
||||
if (replica.is_strong_leader()) {
|
||||
leader_addr = replica.get_server();
|
||||
paxos_replica_num = replica.get_paxos_replica_number();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ERRSIM
|
||||
if (OB_SUCC(ret)) {
|
||||
ret = OB_E(EventTable::EN_GENERATE_REBUILD_TASK_FAILED) OB_SUCCESS;
|
||||
@ -1086,20 +1062,18 @@ int ObLSRebuildMgr::generate_rebuild_task_()
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
} else {
|
||||
ObTaskId task_id;
|
||||
task_id.init(GCONF.self_addr_);
|
||||
ObReplicaMember dst_replica_member(GCONF.self_addr_, timestamp);
|
||||
ObReplicaMember src_replica_member(leader_addr, timestamp);
|
||||
ObReplicaMember src_replica_member(GCONF.self_addr_, timestamp);
|
||||
ObMigrationOpArg arg;
|
||||
arg.cluster_id_ = GCONF.cluster_id;
|
||||
arg.data_src_ = src_replica_member;
|
||||
arg.dst_ = dst_replica_member;
|
||||
arg.ls_id_ = ls->get_ls_id();
|
||||
arg.priority_ = ObMigrationOpPriority::PRIO_MID;
|
||||
arg.paxos_replica_number_ = paxos_replica_num;
|
||||
arg.src_ = src_replica_member;
|
||||
arg.type_ = ObMigrationOpType::REBUILD_LS_OP;
|
||||
|
||||
@ -1111,27 +1085,3 @@ int ObLSRebuildMgr::generate_rebuild_task_()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObLSRebuildMgr::get_ls_info_(
|
||||
const int64_t cluster_id,
|
||||
const uint64_t tenant_id,
|
||||
const share::ObLSID &ls_id,
|
||||
share::ObLSInfo &ls_info)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ls_info.reset();
|
||||
share::ObLSTableOperator *lst_operator = GCTX.lst_operator_;
|
||||
if (!is_inited_) {
|
||||
ret = OB_NOT_INIT;
|
||||
LOG_WARN("ls rebuild mgr do not init", K(ret));
|
||||
} else if (cluster_id < 0 || OB_INVALID_ID == tenant_id || !ls_id.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("get ls info get invalid argument", K(ret), K(cluster_id), K(tenant_id), K(ls_id));
|
||||
} else if (nullptr == lst_operator) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("lst_operator ptr is null", K(ret));
|
||||
} else if (OB_FAIL(lst_operator->get(cluster_id, tenant_id,
|
||||
ls_id, share::ObLSTable::DEFAULT_MODE, ls_info))) {
|
||||
LOG_WARN("failed to get log stream info", K(ret), K(cluster_id), K(tenant_id), K(ls_id));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -131,11 +131,6 @@ private:
|
||||
const ObLSRebuildInfo &curr_rebuild_info,
|
||||
const int32_t result);
|
||||
int generate_rebuild_task_();
|
||||
int get_ls_info_(
|
||||
const int64_t cluster_id,
|
||||
const uint64_t tenant_id,
|
||||
const share::ObLSID &ls_id,
|
||||
share::ObLSInfo &ls_info);
|
||||
|
||||
private:
|
||||
bool is_inited_;
|
||||
|
||||
@ -857,7 +857,7 @@ bool ObMigrationOpArg::is_valid() const
|
||||
&& src_.is_valid()
|
||||
&& dst_.is_valid()
|
||||
&& data_src_.is_valid()
|
||||
&& paxos_replica_number_ > 0;
|
||||
&& (paxos_replica_number_ > 0 || ObMigrationOpType::REBUILD_LS_OP == type_);
|
||||
}
|
||||
|
||||
void ObMigrationOpArg::reset()
|
||||
|
||||
Reference in New Issue
Block a user