diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index 00676f5af..e21e7404e 100755 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -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 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, diff --git a/src/rootserver/ob_ddl_service.h b/src/rootserver/ob_ddl_service.h index 8bee086a7..bacca6fd4 100644 --- a/src/rootserver/ob_ddl_service.h +++ b/src/rootserver/ob_ddl_service.h @@ -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, diff --git a/src/rootserver/ob_table_creator.cpp b/src/rootserver/ob_table_creator.cpp index 721c84888..fda72a5bd 100644 --- a/src/rootserver/ob_table_creator.cpp +++ b/src/rootserver/ob_table_creator.cpp @@ -150,7 +150,8 @@ int ObTableCreator::add_create_tablets_of_tables_arg( const common::ObIArray &schemas, const common::ObIArray &ls_id_array, const uint64_t tenant_data_version, - const common::ObIArray &need_create_empty_majors) + const common::ObIArray &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 &ls_id_array, const uint64_t tenant_data_version, - const common::ObIArray &need_create_empty_majors) + const common::ObIArray &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); } } diff --git a/src/rootserver/ob_table_creator.h b/src/rootserver/ob_table_creator.h index 79a5a65b7..1cd38f95a 100644 --- a/src/rootserver/ob_table_creator.h +++ b/src/rootserver/ob_table_creator.h @@ -52,7 +52,8 @@ public: const common::ObIArray &schemas, const common::ObIArray &ls_id_array, const uint64_t tenant_data_version, - const common::ObIArray &need_create_empty_majors); + const common::ObIArray &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 &ls_id_array, const uint64_t tenant_data_version, - const common::ObIArray &need_create_empty_majors); + const common::ObIArray &need_create_empty_majors, + const bool ignore_cs_replica = false); int generate_create_tablet_arg_( const common::ObIArray &schemas, const ObTableSchema &data_table_schema,