From c15d389beff7cca7a59cb07d4e3f99e62d0452f9 Mon Sep 17 00:00:00 2001 From: obdev Date: Sat, 28 Jan 2023 18:59:39 +0800 Subject: [PATCH] [4.1] Add previous check for arb service --- .../inner_table/ob_inner_table_schema_def.py | 45 ++----------- src/sql/engine/cmd/ob_tenant_executor.cpp | 64 +++++++++++-------- 2 files changed, 44 insertions(+), 65 deletions(-) diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index e303b649c8..7143d1a6bd 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -5150,6 +5150,12 @@ def_table_schema( # 420 : __all_column_group_history # 421 : __all_column_group_mapping # 422 : __all_column_group_mapping_history +# 423 : __all_transfer_task +# 424 : __all_transfer_task_history +# 425 : __all_balance_task +# 426 : __all_balance_task_history +# 427 : __all_ls_balance_job +# 428 : __all_ls_balance_job_history def_table_schema( owner = 'jingyu.cr', @@ -5236,17 +5242,6 @@ def_table_schema( ('comment', 'varchar:MAX_COLUMN_COMMENT_LENGTH', 'true'), ], ) -# 423 : __all_transfer_task -# 424 : __all_transfer_task_history -# 425 : __all_balance_task -# 426 : __all_balance_task_history -# 427 : __all_ls_balance_job -# 428 : __all_ls_balance_job_history - -# 430 : __all_arbitration_service_replica_task -# 431 : __all_meta_dictionary_location; - -# 432 : __all_arbitration_service_replica_task_history all_rls_policy_def = dict( owner = 'sean.yyj', @@ -11302,8 +11297,6 @@ def_table_schema(**gen_iterate_virtual_table_def( def_table_schema(**gen_mysql_sys_agent_virtual_table_def('12358', all_def_keywords['__all_tenant'])) -# 12358: __all_virtual_tenant_mysql_sys_agent - def_table_schema( owner = 'zhenling.zzg', tablegroup_id = 'OB_INVALID_ID', @@ -11488,11 +11481,6 @@ def_table_schema( ('comment', 'varchar:262144') ], ) -# 12364: __all_virtual_ls_arb_replica_task -# 12365: __all_virtual_ls_arb_replica_task_history - - -# 12366: __all_virtual_archive_dest_status # 12367: __all_virtual_kv_hotkey_stat # 12368: __all_virtual_backup_transferring_tablets @@ -11767,23 +11755,16 @@ def_table_schema(**no_direct_access(gen_oracle_mapping_real_virtual_table_def('1 def_table_schema(**gen_oracle_mapping_real_virtual_table_def('15281', all_def_keywords['__all_tenant_rewrite_rules'])) def_table_schema(**no_direct_access(gen_sys_agent_virtual_table_def('15282', all_def_keywords['__all_tenant']))) -# 15282: ALL_VIRTUAL_TENANT_SYS_AGENT # 15283: __all_virtual_tenant_info_agent def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15284', all_def_keywords['__all_virtual_sql_plan']))) def_table_schema(**gen_oracle_mapping_virtual_table_def('15285', all_def_keywords['__all_virtual_plan_table'])) def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15286', all_def_keywords['__all_virtual_plan_real_info']))) - -# 15287: __all_virtual_trans_scheduler def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15287', all_def_keywords['__all_virtual_trans_scheduler']))) def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15288', all_def_keywords['__all_virtual_ls_arb_replica_task']))) def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15289', all_def_keywords['__all_virtual_ls_arb_replica_task_history']))) def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15290', all_def_keywords['__all_virtual_archive_dest_status']))) -# 15288: __all_virtual_ls_arb_replica_task -# 15289: __all_virtual_ls_arb_replica_task_history - -# 15290: __all_virtual_archive_dest_status # 15291: __all_virtual_backup_transferring_tablets ################################################################################ @@ -25772,15 +25753,6 @@ def_table_schema( """.replace("\n", " ") ) -# 21357: DBA_OB_ARBITRATION_SERVICE -# 21358: CDB_OB_LS_ARB_REPLICA_TASKS -# 21359: DBA_OB_LS_ARB_REPLICA_TASKS -# 21360: CDB_OB_LS_ARB_REPLICA_TASK_HISTORY -# 21361: DBA_OB_LS_ARB_REPLICA_TASK_HISTORY - -# 21362: V$OB_ARCHIVE_DEST_STATUS -# 21363: DBA_OB_LS_LOG_ARCHIVE_PROGRESS -# 21364: CDB_OB_LS_LOG_ARCHIVE_PROGRESS # 21365: DBA_OB_LS_LOG_RESTORE_STAT # 21366: CDB_OB_LS_LOG_RESTORE_STAT @@ -42473,7 +42445,6 @@ LEFT JOIN SYS.ALL_VIRTUAL_TENANT_INFO B WHERE A.TENANT_ID = EFFECTIVE_TENANT_ID() """.replace("\n", " "), ) -# 25208: DBA_OB_TENANTS def_table_schema( owner = 'sean.yyj', @@ -43041,8 +43012,6 @@ def_table_schema( TENANT_ID = EFFECTIVE_TENANT_ID() """.replace("\n", " "), ) -# 25221: DBA_OB_LS_ARB_REPLICA_TASKS -# 25222: DBA_OB_LS_ARB_REPLICA_TASK_HISTORY #### End Data Dictionary View ################################################################################ @@ -48483,8 +48452,6 @@ def_table_schema( WHERE TENANT_ID=EFFECTIVE_TENANT_ID(); """.replace("\n", " ") ) -# 28176: V$OB_ARCHIVE_DEST_STATUS -# 28177: DBA_OB_LS_LOG_ARCHIVE_PROGRESS # 28178: DBA_OB_LS_LOG_RESTORE_STAT diff --git a/src/sql/engine/cmd/ob_tenant_executor.cpp b/src/sql/engine/cmd/ob_tenant_executor.cpp index 3f356f4a7d..70dc8209ac 100644 --- a/src/sql/engine/cmd/ob_tenant_executor.cpp +++ b/src/sql/engine/cmd/ob_tenant_executor.cpp @@ -66,6 +66,17 @@ int ObCreateTenantExecutor::execute(ObExecContext &ctx, ObCreateTenantStmt &stmt const_cast(create_tenant_arg).ddl_stmt_str_ = first_stmt; } if (OB_FAIL(ret)) { + } else if (create_tenant_arg.tenant_schema_.get_arbitration_service_status() != ObArbitrationServiceStatus(ObArbitrationServiceStatus::DISABLED)) { + bool is_compatible = false; + if (OB_FAIL(ObShareUtil::check_compat_version_for_arbitration_service(OB_SYS_TENANT_ID, is_compatible))) { + LOG_WARN("fail to check sys tenant compat version", KR(ret)); + } else if (!is_compatible) { + ret = OB_OP_NOT_ALLOW; + LOG_WARN("sys tenant data version is below 4.1, tenant with arbitration service not allow", KR(ret)); + LOG_USER_ERROR(OB_OP_NOT_ALLOW, "sys tenant data version is below 4.1, with arbitration service"); + } + } + if (OB_FAIL(ret)){ } else if (OB_FAIL(check_sys_var_options(ctx, stmt.get_sys_var_nodes(), stmt.get_create_tenant_arg().tenant_schema_, @@ -600,12 +611,24 @@ int ObModifyTenantExecutor::execute(ObExecContext &ctx, ObModifyTenantStmt &stmt obrpc::ObCommonRpcProxy *common_rpc_proxy = NULL; const obrpc::ObModifyTenantArg &modify_tenant_arg = stmt.get_modify_tenant_arg(); ObString first_stmt; + ObSchemaGetterGuard schema_guard; + const ObTenantSchema *tenant_schema = nullptr; if (OB_FAIL(stmt.get_first_stmt(first_stmt))) { LOG_WARN("fail to get first stmt" , K(ret)); } else { const_cast(modify_tenant_arg).ddl_stmt_str_ = first_stmt; } if (OB_FAIL(ret)) { + } else if (OB_FAIL(ObMultiVersionSchemaService::get_instance().get_tenant_schema_guard(OB_SYS_TENANT_ID, schema_guard))) { + LOG_WARN("fail to get tenant schema guard", K(ret)); + } else if (OB_FAIL(schema_guard.get_tenant_info( + modify_tenant_arg.tenant_schema_.get_tenant_name_str(), tenant_schema))) { + LOG_WARN("fail to get tenant info", K(ret)); + } else if (OB_ISNULL(tenant_schema)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("error unexpected, tenant schema must not be NULL", K(ret)); + } + if (OB_FAIL(ret)) { } else if (-1 != stmt.get_progressive_merge_num()) { if (modify_tenant_arg.tenant_schema_.get_tenant_name_str().case_compare("all") == 0) { ObSQLSessionInfo *session = NULL; @@ -618,37 +641,26 @@ int ObModifyTenantExecutor::execute(ObExecContext &ctx, ObModifyTenantStmt &stmt } else if (OB_FAIL(modify_progressive_merge_num_for_all_tenants(ctx, stmt.get_progressive_merge_num()))) { LOG_WARN("modify_progressive_merge_num_for_tables failed", K(ret)); } - } else { - ObSchemaGetterGuard schema_guard; - const ObTenantSchema *tenant_schema = nullptr; - if (OB_FAIL(ObMultiVersionSchemaService::get_instance().get_tenant_schema_guard(OB_SYS_TENANT_ID, schema_guard))) { - LOG_WARN("fail to get tenant schema guard", K(ret)); - } else if (OB_FAIL(schema_guard.get_tenant_info( - modify_tenant_arg.tenant_schema_.get_tenant_name_str(), tenant_schema))) { - LOG_WARN("fail to get tenant info", K(ret)); - } else if (OB_ISNULL(tenant_schema)) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("error unexpected, tenant schema must not be NULL", K(ret)); } else if (OB_FAIL(modify_progressive_merge_num_for_tenant(ctx, tenant_schema->get_tenant_id(), stmt.get_progressive_merge_num()))) { - LOG_WARN("fail to modify progressive merge num for tenant", K(ret), "tenant_id", tenant_schema->get_tenant_id()); - } - } + LOG_WARN("fail to modify progressive merge num for tenant", K(ret), "tenant_id", tenant_schema->get_tenant_id()); + } } else if (stmt.get_modify_tenant_arg().alter_option_bitset_.has_member(obrpc::ObModifyTenantArg::ENABLE_EXTENDED_ROWID)) { - ObSchemaGetterGuard schema_guard; - const ObTenantSchema *tenant_schema = nullptr; - if (OB_FAIL(ObMultiVersionSchemaService::get_instance().get_tenant_schema_guard(OB_SYS_TENANT_ID, schema_guard))) { - LOG_WARN("fail to get tenant schema guard", K(ret)); - } else if (OB_FAIL(schema_guard.get_tenant_info( - modify_tenant_arg.tenant_schema_.get_tenant_name_str(), tenant_schema))) { - LOG_WARN("fail to get tenant info", K(ret)); - } else if (OB_ISNULL(tenant_schema)) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("error unexpected, tenant schema must not be NULL", K(ret)); - } else if (OB_FAIL(enable_extended_rowid_for_tenant_tables(ctx, tenant_schema->get_tenant_id()))) { + if (OB_FAIL(enable_extended_rowid_for_tenant_tables(ctx, tenant_schema->get_tenant_id()))) { LOG_WARN("fail to enable extended rowid for tenant tables", K(ret), "tenant_id", tenant_schema->get_tenant_id()); } } else { - if (OB_FAIL(check_sys_var_options(ctx, + if (stmt.get_modify_tenant_arg().alter_option_bitset_.has_member(obrpc::ObModifyTenantArg::ENABLE_ARBITRATION_SERVICE)) { + bool is_compatible = false; + if (OB_FAIL(ObShareUtil::check_compat_version_for_arbitration_service(tenant_schema->get_tenant_id(), is_compatible))) { + LOG_WARN("fail to check sys tenant compat version", KR(ret), KPC(tenant_schema)); + } else if (!is_compatible) { + ret = OB_OP_NOT_ALLOW; + LOG_WARN("user tenant data version is below 4.1, tenant with arbitration service not allow", KR(ret), KPC(tenant_schema)); + LOG_USER_ERROR(OB_OP_NOT_ALLOW, "user tenant data version is below 4.1, with arbitration service"); + } + } + if (OB_FAIL(ret)) { + } else if (OB_FAIL(check_sys_var_options(ctx, stmt.get_sys_var_nodes(), stmt.get_modify_tenant_arg().tenant_schema_, stmt.get_modify_tenant_arg().sys_var_list_))) {