[FEAT MERGE] 4.x Dup Table
Co-authored-by: Minionyh <minions.yh@gmail.com> Co-authored-by: BinChenn <binchenn.bc@gmail.com> Co-authored-by: ChangerR <dingjinchengyx@163.com>
This commit is contained in:
@ -85,7 +85,6 @@ ObLS::~ObLS()
|
||||
|
||||
int ObLS::init(const share::ObLSID &ls_id,
|
||||
const uint64_t tenant_id,
|
||||
const ObReplicaType replica_type,
|
||||
const ObMigrationStatus &migration_status,
|
||||
const ObLSRestoreStatus &restore_status,
|
||||
const SCN &create_scn,
|
||||
@ -99,11 +98,10 @@ int ObLS::init(const share::ObLSID &ls_id,
|
||||
|
||||
if (!ls_id.is_valid() ||
|
||||
!is_valid_tenant_id(tenant_id) ||
|
||||
!common::ObReplicaTypeCheck::is_replica_type_valid(replica_type) ||
|
||||
!ObMigrationStatusHelper::is_valid(migration_status) ||
|
||||
OB_ISNULL(reporter)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", K(ret), K(ls_id), K(tenant_id), K(replica_type), K(migration_status),
|
||||
LOG_WARN("invalid argument", K(ret), K(ls_id), K(tenant_id), K(migration_status),
|
||||
KP(reporter));
|
||||
} else if (IS_INIT) {
|
||||
ret = OB_INIT_TWICE;
|
||||
@ -114,15 +112,14 @@ int ObLS::init(const share::ObLSID &ls_id,
|
||||
} else if (FALSE_IT(tenant_id_ = tenant_id)) {
|
||||
} else if (OB_FAIL(ls_meta_.init(tenant_id,
|
||||
ls_id,
|
||||
replica_type,
|
||||
migration_status,
|
||||
restore_status,
|
||||
create_scn))) {
|
||||
LOG_WARN("failed to init ls meta", K(ret), K(tenant_id), K(ls_id), K(replica_type));
|
||||
LOG_WARN("failed to init ls meta", K(ret), K(tenant_id), K(ls_id));
|
||||
} else {
|
||||
rs_reporter_ = reporter;
|
||||
ls_freezer_.init(this);
|
||||
transaction::ObTxPalfParam tx_palf_param(get_log_handler());
|
||||
transaction::ObTxPalfParam tx_palf_param(get_log_handler(), &dup_table_ls_handler_);
|
||||
|
||||
// tx_table_.init() should after ls_table_svr.init()
|
||||
if (OB_FAIL(txs_svr->create_ls(ls_id, *this, &tx_palf_param, nullptr))) {
|
||||
@ -216,6 +213,10 @@ int ObLS::init(const share::ObLSID &ls_id,
|
||||
REGISTER_TO_RESTORESERVICE(logservice::NET_STANDBY_TNT_SERVICE_LOG_BASE_TYPE, MTL(rootserver::ObCreateStandbyFromNetActor *));
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret) && OB_FAIL(ls_init_for_dup_table_())) {
|
||||
LOG_WARN("pre init for dup_table_ls_handler_ failed", K(ret), K(get_ls_id()));
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret) && !is_user_tenant(tenant_id) && ls_id.is_sys_ls()) {
|
||||
//sys and meta tenant
|
||||
REGISTER_TO_LOGSERVICE(logservice::RESTORE_SERVICE_LOG_BASE_TYPE, MTL(rootserver::ObRestoreService *));
|
||||
@ -247,6 +248,22 @@ int ObLS::init(const share::ObLSID &ls_id,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObLS::ls_init_for_dup_table_()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
REGISTER_TO_LOGSERVICE(logservice::DUP_TABLE_LOG_BASE_TYPE, &dup_table_ls_handler_);
|
||||
dup_table_ls_handler_.default_init(get_ls_id(), get_log_handler());
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObLS::ls_destory_for_dup_table_()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
UNREGISTER_FROM_LOGSERVICE(logservice::DUP_TABLE_LOG_BASE_TYPE, &dup_table_ls_handler_);
|
||||
dup_table_ls_handler_.destroy();
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObLS::create_ls_inner_tablet(const lib::Worker::CompatMode compat_mode,
|
||||
const SCN &create_scn)
|
||||
{
|
||||
@ -275,6 +292,7 @@ int ObLS::load_ls_inner_tablet()
|
||||
|
||||
int ObLS::create_ls(const share::ObTenantRole tenant_role,
|
||||
const palf::PalfBaseInfo &palf_base_info,
|
||||
const ObReplicaType &replica_type,
|
||||
const bool allow_log_sync)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -293,7 +311,7 @@ int ObLS::create_ls(const share::ObTenantRole tenant_role,
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("palf should not exist now", K(ret), K_(ls_meta));
|
||||
} else if (OB_FAIL(logservice->create_ls(ls_meta_.ls_id_,
|
||||
ls_meta_.replica_type_,
|
||||
replica_type,
|
||||
tenant_role,
|
||||
palf_base_info,
|
||||
allow_log_sync,
|
||||
@ -340,7 +358,6 @@ int ObLS::load_ls(const share::ObTenantRole &tenant_role,
|
||||
} else if (!is_palf_exist) {
|
||||
LOG_WARN("there is no ls at disk, skip load", K_(ls_meta));
|
||||
} else if (OB_FAIL(logservice->add_ls(ls_meta_.ls_id_,
|
||||
ls_meta_.replica_type_,
|
||||
log_handler_,
|
||||
restore_handler_))) {
|
||||
LOG_WARN("add ls failed", K(ret), K_(ls_meta));
|
||||
@ -661,6 +678,9 @@ void ObLS::destroy()
|
||||
rootserver::ObCreateStandbyFromNetActor* net_standby_tnt_service = MTL(rootserver::ObCreateStandbyFromNetActor*);
|
||||
UNREGISTER_FROM_RESTORESERVICE(logservice::NET_STANDBY_TNT_SERVICE_LOG_BASE_TYPE, net_standby_tnt_service);
|
||||
}
|
||||
|
||||
(void)ls_destory_for_dup_table_();
|
||||
|
||||
if (OB_SUCC(ret) && !is_user_tenant(MTL_ID()) && ls_meta_.ls_id_.is_sys_ls()) {
|
||||
rootserver::ObRestoreService * restore_service = MTL(rootserver::ObRestoreService*);
|
||||
UNREGISTER_FROM_LOGSERVICE(logservice::RESTORE_SERVICE_LOG_BASE_TYPE, restore_service);
|
||||
@ -932,6 +952,10 @@ int ObLS::get_ls_meta_package(const bool check_archive, ObLSMetaPackage &meta_pa
|
||||
LOG_WARN("get palf base info failed", K(ret), K(id), K(curr_lsn),
|
||||
K(archive_force), K(archive_ignore), K(archive_lsn), K_(ls_meta));
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret) && OB_FAIL(dup_table_ls_handler_.get_dup_table_ls_meta(meta_package.dup_ls_meta_))) {
|
||||
LOG_WARN("get dup table ls meta failed", K(ret), K(id), K(meta_package.dup_ls_meta_));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -1063,7 +1087,7 @@ int ObLS::get_ls_info(ObLSVTInfo &ls_info)
|
||||
LOG_WARN("get ls migrate status failed", K(ret), KPC(this));
|
||||
} else {
|
||||
ls_info.ls_id_ = ls_meta_.ls_id_;
|
||||
ls_info.replica_type_ = ls_meta_.replica_type_;
|
||||
ls_info.replica_type_ = ls_meta_.get_replica_type();
|
||||
ls_info.ls_state_ = role;
|
||||
ls_info.migrate_status_ = migrate_status;
|
||||
ls_info.tablet_count_ = ls_tablet_svr_.get_tablet_count();
|
||||
|
||||
Reference in New Issue
Block a user