cs replica support recover restore table
This commit is contained in:
parent
c9d4139a06
commit
3895cfc3e4
@ -15977,32 +15977,8 @@ int ObDDLService::recover_restore_table_ddl_task(
|
||||
} else {
|
||||
ObDDLOperator ddl_operator(*schema_service_, *sql_proxy_);
|
||||
bool is_dest_table_column_store = false;
|
||||
|
||||
if (tenant_data_version >= DATA_VERSION_4_3_3_0) {
|
||||
const share::schema::ObTenantSchema *dst_tenant_schema = nullptr;
|
||||
if (OB_FAIL(dst_tenant_schema_guard->get_tenant_info(dst_tenant_id, dst_tenant_schema))) {
|
||||
LOG_WARN("fail to get tenant schema", K(ret), K(dst_tenant_id));
|
||||
} else if (OB_UNLIKELY(OB_ISNULL(dst_tenant_schema) || !dst_tenant_schema->is_valid())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("tenant schema is null or invalid", K(ret), K(dst_tenant_id), KPC(dst_tenant_schema));
|
||||
} else {
|
||||
common::ObArray<share::ObZoneReplicaAttrSet> zone_locality;
|
||||
if (OB_FAIL(dst_tenant_schema->get_zone_replica_attr_array(zone_locality))) {
|
||||
LOG_WARN("fail to get locality from schema", K(ret), KPC(dst_tenant_schema));
|
||||
} else {
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < zone_locality.count(); ++i) {
|
||||
const share::ObZoneReplicaAttrSet &this_set = zone_locality.at(i);
|
||||
if (0 != this_set.get_columnstore_replica_num()) {
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_WARN("not supported to retore table with tenant with column store replica", K(ret), K(arg));
|
||||
LOG_USER_ERROR(OB_NOT_SUPPORTED, "Can not restore table with tenant with C-Replica");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (FAILEDx(dst_tenant_trans.start(sql_proxy_, dst_tenant_id, refreshed_dst_tenant_version))) {
|
||||
ObString index_name("");
|
||||
if (OB_FAIL(dst_tenant_trans.start(sql_proxy_, dst_tenant_id, refreshed_dst_tenant_version))) {
|
||||
LOG_WARN("start transaction failed", K(ret), K(dst_tenant_id), K(refreshed_dst_tenant_version));
|
||||
} else if (OB_FAIL(dst_table_schema.assign(arg.target_schema_))) {
|
||||
LOG_WARN("assign failed", K(ret), K(session_id), K(arg));
|
||||
@ -16013,7 +15989,7 @@ int ObDDLService::recover_restore_table_ddl_task(
|
||||
LOG_WARN("not supported to retore table with column store", K(ret), K(arg));
|
||||
} else if (OB_FAIL(create_user_hidden_table(*src_table_schema, dst_table_schema, nullptr/*sequence_ddl_arg*/,
|
||||
false/*bind_tablets*/, *src_tenant_schema_guard, *dst_tenant_schema_guard, ddl_operator,
|
||||
dst_tenant_trans, allocator, tenant_data_version))) {
|
||||
dst_tenant_trans, allocator, tenant_data_version, index_name, true /*ignore_cs_replica*/))) {
|
||||
LOG_WARN("create user hidden table failed", K(ret), K(arg), K(tenant_data_version));
|
||||
} else {
|
||||
ObPrepareAlterTableArgParam param;
|
||||
@ -19348,7 +19324,8 @@ int ObDDLService::create_user_hidden_table(const ObTableSchema &orig_table_schem
|
||||
ObMySQLTransaction &trans,
|
||||
ObIAllocator &allocator,
|
||||
const uint64_t tenant_data_version,
|
||||
const ObString &index_name/*default ""*/)
|
||||
const ObString &index_name/*default ""*/,
|
||||
const bool ignore_cs_replica/*= false*/)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const uint64_t tenant_id = hidden_table_schema.get_tenant_id();
|
||||
@ -19492,7 +19469,8 @@ int ObDDLService::create_user_hidden_table(const ObTableSchema &orig_table_schem
|
||||
schemas,
|
||||
ls_id_array,
|
||||
tenant_data_version,
|
||||
need_create_empty_majors/*need_create_empty_major_sstable*/))) {
|
||||
need_create_empty_majors/*need_create_empty_major_sstable*/,
|
||||
ignore_cs_replica))) {
|
||||
LOG_WARN("create table tablets failed", K(ret), K(hidden_table_schema));
|
||||
} else if (bind_tablets && OB_FAIL(table_creator.add_create_bind_tablets_of_hidden_table_arg(
|
||||
orig_table_schema,
|
||||
|
@ -1651,7 +1651,8 @@ private:
|
||||
common::ObMySQLTransaction &trans,
|
||||
common::ObIAllocator &allocator,
|
||||
const uint64_t tenant_data_version,
|
||||
const ObString &index_name = ObString(""));
|
||||
const ObString &index_name = ObString(""),
|
||||
const bool ignore_cs_replica = false);
|
||||
int rebuild_triggers_on_hidden_table(
|
||||
const share::schema::ObTableSchema &orig_table_schema,
|
||||
const share::schema::ObTableSchema &hidden_table_schema,
|
||||
|
@ -150,7 +150,8 @@ int ObTableCreator::add_create_tablets_of_tables_arg(
|
||||
const common::ObIArray<const share::schema::ObTableSchema*> &schemas,
|
||||
const common::ObIArray<share::ObLSID> &ls_id_array,
|
||||
const uint64_t tenant_data_version,
|
||||
const common::ObIArray<bool> &need_create_empty_majors)
|
||||
const common::ObIArray<bool> &need_create_empty_majors,
|
||||
const bool ignore_cs_replica /*=false*/)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_UNLIKELY(tenant_data_version <= 0
|
||||
@ -183,7 +184,7 @@ int ObTableCreator::add_create_tablets_of_tables_arg(
|
||||
}
|
||||
if (OB_FAIL(ret)) {
|
||||
} else if (OB_FAIL(add_create_tablets_of_tables_arg_(
|
||||
schemas, NULL, ls_id_array, tenant_data_version, need_create_empty_majors))) {
|
||||
schemas, NULL, ls_id_array, tenant_data_version, need_create_empty_majors, ignore_cs_replica))) {
|
||||
LOG_WARN("fail to add_create_tablets_of_tables_arg_", KR(ret), K(schemas));
|
||||
}
|
||||
return ret;
|
||||
@ -197,7 +198,8 @@ int ObTableCreator::add_create_tablets_of_tables_arg_(
|
||||
const share::schema::ObTableSchema *data_table_schema,
|
||||
const common::ObIArray<share::ObLSID> &ls_id_array,
|
||||
const uint64_t tenant_data_version,
|
||||
const common::ObIArray<bool> &need_create_empty_majors)
|
||||
const common::ObIArray<bool> &need_create_empty_majors,
|
||||
const bool ignore_cs_replica /*=false*/)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
int tmp_ret = OB_SUCCESS;
|
||||
@ -272,7 +274,8 @@ int ObTableCreator::add_create_tablets_of_tables_arg_(
|
||||
}
|
||||
|
||||
// try init, but ignore ret. not blocking create tablet if query inner_table failed or other error
|
||||
if (OB_TMP_FAIL(cs_replica_mgr.try_init(tenant_id_, ls_id_array_))) {
|
||||
if (ignore_cs_replica) {
|
||||
} else if (OB_TMP_FAIL(cs_replica_mgr.try_init(tenant_id_, ls_id_array_))) {
|
||||
LOG_WARN("fail to init cs_replica_mgr", KR(tmp_ret));
|
||||
}
|
||||
|
||||
@ -377,7 +380,7 @@ int ObTableCreator::add_create_tablets_of_tables_arg_(
|
||||
KR(ret), K_(tenant_id), K(schema_version));
|
||||
}
|
||||
int64_t end_time = ObTimeUtility::current_time();
|
||||
LOG_INFO("finish create_tablet_to_table_history", KR(ret), K(table_schema.get_tenant_id()),
|
||||
LOG_INFO("finish create_tablet_to_table_history", KR(ret), K(table_schema.get_tenant_id()), K(ignore_cs_replica),
|
||||
K(table_schema.get_table_id()), "cost_ts", end_time - start_time);
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,8 @@ public:
|
||||
const common::ObIArray<const share::schema::ObTableSchema*> &schemas,
|
||||
const common::ObIArray<share::ObLSID> &ls_id_array,
|
||||
const uint64_t tenant_data_version,
|
||||
const common::ObIArray<bool> &need_create_empty_majors);
|
||||
const common::ObIArray<bool> &need_create_empty_majors,
|
||||
const bool ignore_cs_replica = false);
|
||||
|
||||
// create tablets for local aux tables(include local_index/aux_lob_table), which are belong to a data table.
|
||||
//
|
||||
@ -86,7 +87,8 @@ private:
|
||||
const share::schema::ObTableSchema *data_table_schema,
|
||||
const common::ObIArray<share::ObLSID> &ls_id_array,
|
||||
const uint64_t tenant_data_version,
|
||||
const common::ObIArray<bool> &need_create_empty_majors);
|
||||
const common::ObIArray<bool> &need_create_empty_majors,
|
||||
const bool ignore_cs_replica = false);
|
||||
int generate_create_tablet_arg_(
|
||||
const common::ObIArray<const share::schema::ObTableSchema*> &schemas,
|
||||
const ObTableSchema &data_table_schema,
|
||||
|
Loading…
x
Reference in New Issue
Block a user