diff --git a/src/rootserver/ob_alter_primary_zone_checker.cpp b/src/rootserver/ob_alter_primary_zone_checker.cpp index 9b0bed7933..9c29c13797 100644 --- a/src/rootserver/ob_alter_primary_zone_checker.cpp +++ b/src/rootserver/ob_alter_primary_zone_checker.cpp @@ -134,14 +134,27 @@ int ObAlterPrimaryZoneChecker::create_alter_tenant_primary_zone_rs_job_if_needed K(orig_tenant_schema), K(new_first_primary_zone)); } else { // step 2: create a new rs job ALTER_TENANT_PRIMARY_ZONE - ret = RS_JOB_CREATE_WITH_RET( + const int64_t extra_info_len = common::MAX_ROOTSERVICE_EVENT_EXTRA_INFO_LENGTH; + HEAP_VAR(char[extra_info_len], extra_info) { + memset(extra_info, 0, extra_info_len); + int64_t pos = 0; + if (OB_FAIL(databuff_printf(extra_info, extra_info_len, pos, + "FROM: '%.*s', TO: '%.*s'", orig_tenant_schema.get_primary_zone().length(), + orig_tenant_schema.get_primary_zone().ptr(), new_tenant_schema.get_primary_zone().length(), + new_tenant_schema.get_primary_zone().ptr()))) { + LOG_WARN("format extra_info failed", KR(ret), K(orig_tenant_schema), K(new_tenant_schema)); + } else if (OB_FAIL(RS_JOB_CREATE_WITH_RET( new_job_id, JOB_TYPE_ALTER_TENANT_PRIMARY_ZONE, trans, "tenant_id", tenant_id, "tenant_name", new_tenant_schema.get_tenant_name(), "sql_text", ObHexEscapeSqlStr(arg.ddl_stmt_str_), - "extra_info", orig_tenant_schema.get_primary_zone()); + "extra_info", ObHexEscapeSqlStr(extra_info)))) { + LOG_WARN("failed to create new job", KR(ret), K(new_job_id), K(tenant_id), + K(extra_info), K(new_tenant_schema), K(arg)); + } + } FLOG_INFO("[ALTER_TENANT_PRIMARY_ZONE NOTICE] create a new rs job", KR(ret), K(arg), K(new_job_id)); if (OB_SUCC(ret) && !is_primary_zone_changed) { // step 3: complete the rs job if the first priority primary zone is not changed @@ -218,4 +231,4 @@ int ObAlterPrimaryZoneChecker::check_stop() const return ret; } } // end namespace rootserver -} // end namespace oceanbase \ No newline at end of file +} // end namespace oceanbase diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index b5f047b442..c80de2b791 100755 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -24835,11 +24835,23 @@ int ObDDLService::record_tenant_locality_event_history( // ALTER_LOCALITY, ROLLBACK_ALTER_LOCALITY(only 4.2), NOP_LOCALITY_OP job_type = ObRsJobType::JOB_TYPE_INVALID == job_type ? ObRsJobType::JOB_TYPE_ALTER_TENANT_LOCALITY : job_type; - ret = RS_JOB_CREATE_WITH_RET(job_id, job_type, trans, + const int64_t extra_info_len = common::MAX_ROOTSERVICE_EVENT_EXTRA_INFO_LENGTH; + HEAP_VAR(char[extra_info_len], extra_info) { + memset(extra_info, 0, extra_info_len); + int64_t pos = 0; + if (OB_FAIL(databuff_printf(extra_info, extra_info_len, pos, + "FROM: '%.*s', TO: '%.*s'", tenant_schema.get_previous_locality_str().length(), + tenant_schema.get_previous_locality_str().ptr(), tenant_schema.get_locality_str().length(), + tenant_schema.get_locality_str().ptr()))) { + LOG_WARN("format extra_info failed", KR(ret), K(tenant_schema)); + } else if (OB_FAIL(RS_JOB_CREATE_WITH_RET(job_id, job_type, trans, "tenant_name", tenant_schema.get_tenant_name(), "tenant_id", tenant_schema.get_tenant_id(), "sql_text", ObHexEscapeSqlStr(arg.ddl_stmt_str_), - "extra_info", tenant_schema.get_previous_locality_str()); + "extra_info", ObHexEscapeSqlStr(extra_info)))) { + LOG_WARN("failed to create new rs job", KR(ret), K(job_type), K(tenant_schema), K(extra_info)); + } + } FLOG_INFO("[ALTER_TENANT_LOCALITY NOTICE] create a new rs job", KR(ret), "tenant_id", tenant_schema.get_tenant_id(), K(job_id), K(alter_locality_op)); } diff --git a/src/rootserver/ob_root_service.cpp b/src/rootserver/ob_root_service.cpp index ad6694399e..29e9f9bb0c 100755 --- a/src/rootserver/ob_root_service.cpp +++ b/src/rootserver/ob_root_service.cpp @@ -2563,7 +2563,7 @@ int ObRootService::alter_resource_tenant(const obrpc::ObAlterResourceTenantArg & ret = OB_ERR_UNEXPECTED; LOG_WARN("target_tenant_id value unexpected", KR(ret), K(target_tenant_name), K(target_tenant_id)); } else if (OB_FAIL(unit_manager_.alter_resource_tenant( - target_tenant_id, new_unit_num, delete_unit_group_id_array))) { + target_tenant_id, new_unit_num, delete_unit_group_id_array, arg.ddl_stmt_str_))) { LOG_WARN("fail to alter resource tenant", KR(ret), K(target_tenant_id), K(new_unit_num), K(delete_unit_group_id_array)); if (OB_TMP_FAIL(submit_reload_unit_manager_task())) { diff --git a/src/rootserver/ob_unit_manager.cpp b/src/rootserver/ob_unit_manager.cpp index 0657722af5..f7782636c5 100644 --- a/src/rootserver/ob_unit_manager.cpp +++ b/src/rootserver/ob_unit_manager.cpp @@ -1437,11 +1437,12 @@ int ObUnitManager::determine_alter_resource_tenant_unit_num_type( const uint64_t tenant_id, const common::ObIArray &pools, const int64_t new_unit_num, + int64_t &old_unit_num, AlterUnitNumType &alter_unit_num_type) { int ret = OB_SUCCESS; int64_t complete_unit_num_per_zone = 0; - int64_t current_unit_num_per_zone = 0; + old_unit_num = 0; bool has_unit_num_modification = true; if (OB_UNLIKELY(!is_valid_tenant_id(tenant_id) || new_unit_num <= 0)) { @@ -1449,13 +1450,13 @@ int ObUnitManager::determine_alter_resource_tenant_unit_num_type( LOG_WARN("invalid argument", KR(ret), K(tenant_id), K(new_unit_num)); } else if (OB_FAIL(get_tenant_pools_complete_unit_num_and_status( tenant_id, pools, complete_unit_num_per_zone, - current_unit_num_per_zone, has_unit_num_modification))) { + old_unit_num, has_unit_num_modification))) { LOG_WARN("fail to get tenant pools complete unit num and status", KR(ret), K(tenant_id)); - } else if (OB_UNLIKELY(complete_unit_num_per_zone <= 0 || current_unit_num_per_zone <= 0)) { + } else if (OB_UNLIKELY(complete_unit_num_per_zone <= 0 || old_unit_num <= 0)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpected complete unit num", KR(ret), - K(complete_unit_num_per_zone), K(current_unit_num_per_zone)); - } else if (current_unit_num_per_zone == new_unit_num) { + K(complete_unit_num_per_zone), K(old_unit_num)); + } else if (old_unit_num == new_unit_num) { // when the new unit num is equal to the current unit num, do nothing and return alter_unit_num_type = AUN_NOP; } else { @@ -1468,7 +1469,7 @@ int ObUnitManager::determine_alter_resource_tenant_unit_num_type( alter_unit_num_type = AUN_MAX; } } else { // no unit num change - if (new_unit_num > current_unit_num_per_zone) { + if (new_unit_num > old_unit_num) { alter_unit_num_type = AUN_EXPAND; } else { alter_unit_num_type = AUN_SHRINK; @@ -1481,7 +1482,9 @@ int ObUnitManager::determine_alter_resource_tenant_unit_num_type( int ObUnitManager::register_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, const AlterUnitNumType alter_unit_num_type, + const common::ObString &sql_text, common::ObMySQLTransaction &trans) { int ret = OB_SUCCESS; @@ -1496,7 +1499,8 @@ int ObUnitManager::register_alter_resource_tenant_unit_num_rs_job( if (AUN_EXPAND == alter_unit_num_type) { // skip, no rs job for expand task in version 4.1 // we do not need to rollback rs job, since in 4.1, there is no inprogress rs job at this step - } else if (OB_FAIL(register_shrink_tenant_pool_unit_num_rs_job(tenant_id, new_unit_num, trans))) { + } else if (OB_FAIL(register_shrink_tenant_pool_unit_num_rs_job(tenant_id, + new_unit_num, old_unit_num, sql_text, trans))) { LOG_WARN("fail to execute register_shrink_tenant_pool_unit_num_rs_job", KR(ret), K(tenant_id), K(new_unit_num)); } @@ -1508,9 +1512,11 @@ int ObUnitManager::register_alter_resource_tenant_unit_num_rs_job( LOG_WARN("enable_rebalance is disabled, modify tenant unit num not allowed", KR(ret), K(tenant_id)); (void) print_user_error_(tenant_id); } else if(OB_FAIL(cancel_alter_resource_tenant_unit_num_rs_job(tenant_id, trans))) { - LOG_WARN("fail to execute cancel_alter_resource_tenant_unit_num_rs_job", KR(ret), K(tenant_id)); + LOG_WARN("fail to execute cancel_alter_resource_tenant_unit_num_rs_job", + KR(ret), K(tenant_id), K(sql_text)); } else { - ret = create_alter_resource_tenant_unit_num_rs_job(tenant_id, new_unit_num, job_id, trans); + ret = create_alter_resource_tenant_unit_num_rs_job(tenant_id, + new_unit_num, old_unit_num, job_id, sql_text, trans); FLOG_INFO("[ALTER_RESOURCE_TENANT_UNIT_NUM NOTICE] create a new rs job", "type", AUN_EXPAND == alter_unit_num_type ? "EXPAND UNIT_NUM" : "SHRINK UNIT_NUM", KR(ret), K(tenant_id), K(job_id), K(alter_unit_num_type)); @@ -1542,6 +1548,8 @@ int ObUnitManager::find_alter_resource_tenant_unit_num_rs_job( int ObUnitManager::register_shrink_tenant_pool_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, + const common::ObString &sql_text, common::ObMySQLTransaction &trans) { int ret = OB_SUCCESS; @@ -1555,11 +1563,13 @@ int ObUnitManager::register_shrink_tenant_pool_unit_num_rs_job( ret = create_alter_resource_tenant_unit_num_rs_job( tenant_id, new_unit_num, + old_unit_num, job_id, + sql_text, trans, JOB_TYPE_SHRINK_RESOURCE_TENANT_UNIT_NUM); FLOG_INFO("[ALTER_RESOURCE_TENANT_UNIT_NUM NOTICE] create a new rs job in Version < 4.2", - KR(ret), K(tenant_id), K(job_id)); + KR(ret), K(tenant_id), K(job_id), K(sql_text)); } return ret ; } @@ -1609,7 +1619,9 @@ int ObUnitManager::cancel_alter_resource_tenant_unit_num_rs_job( int ObUnitManager::create_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, int64_t &job_id, + const common::ObString &sql_text, common::ObMySQLTransaction &trans, ObRsJobType job_type) { @@ -1621,7 +1633,8 @@ int ObUnitManager::create_alter_resource_tenant_unit_num_rs_job( int64_t pos = 0; share::schema::ObSchemaGetterGuard schema_guard; const ObSimpleTenantSchema *tenant_schema; - if (OB_FAIL(databuff_printf(extra_info, extra_info_len, pos, "new_unit_num: %ld", new_unit_num))) { + if (OB_FAIL(databuff_printf(extra_info, extra_info_len, pos, + "FROM: '%ld', TO: '%ld'", old_unit_num, new_unit_num))) { if (OB_SIZE_OVERFLOW == ret) { LOG_WARN("format to buff size overflow", K(ret)); } else { @@ -1643,7 +1656,8 @@ int ObUnitManager::create_alter_resource_tenant_unit_num_rs_job( trans, "tenant_id", tenant_id, "tenant_name", tenant_schema->get_tenant_name(), - "extra_info", extra_info))) { + "sql_text", ObHexEscapeSqlStr(sql_text), + "extra_info", ObHexEscapeSqlStr(extra_info)))) { LOG_WARN("fail to create rs job", KR(ret), K(tenant_id), K(job_type)); } } @@ -1653,6 +1667,8 @@ int ObUnitManager::create_alter_resource_tenant_unit_num_rs_job( int ObUnitManager::rollback_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, + const common::ObString &sql_text, common::ObMySQLTransaction &trans) { int ret = OB_SUCCESS; @@ -1671,8 +1687,10 @@ int ObUnitManager::rollback_alter_resource_tenant_unit_num_rs_job( (void) print_user_error_(tenant_id); } else if (OB_FAIL(cancel_alter_resource_tenant_unit_num_rs_job(tenant_id, trans))) { LOG_WARN("fail to execute cancel_alter_resource_tenant_unit_num_rs_job", KR(ret), K(tenant_id)); - } else if (OB_FAIL(create_alter_resource_tenant_unit_num_rs_job(tenant_id, new_unit_num, job_id, trans))) { - LOG_WARN("fail to execute create_alter_resource_tenant_unit_num_rs_job", KR(ret), K(tenant_id), K(new_unit_num)); + } else if (OB_FAIL(create_alter_resource_tenant_unit_num_rs_job(tenant_id, + new_unit_num, old_unit_num, job_id, sql_text, trans))) { + LOG_WARN("fail to execute create_alter_resource_tenant_unit_num_rs_job", KR(ret), + K(tenant_id), K(new_unit_num), K(old_unit_num), K(sql_text)); } FLOG_INFO("[ALTER_RESOURCE_TENANT_UNIT_NUM NOTICE] rollback a SHRINK UNIT_NUM rs job", KR(ret), K(tenant_id), K(job_id), K(new_unit_num)); @@ -1798,7 +1816,9 @@ int ObUnitManager::expand_tenant_pools_unit_num_( const uint64_t tenant_id, common::ObIArray &pools, const int64_t new_unit_num, - const char *module) + const int64_t old_unit_num, + const char *module, + const common::ObString &sql_text) { int ret = OB_SUCCESS; common::ObMySQLTransaction trans; @@ -1812,8 +1832,10 @@ int ObUnitManager::expand_tenant_pools_unit_num_( LOG_WARN("fail to generate new unit group id array", KR(ret), K(pools), K(new_unit_num)); } else if (OB_FAIL(trans.start(proxy_, OB_SYS_TENANT_ID))) { LOG_WARN("fail to start transaction", KR(ret)); - } else if (OB_FAIL(register_alter_resource_tenant_unit_num_rs_job(tenant_id, new_unit_num, AUN_EXPAND, trans))) { - LOG_WARN("fail to register shrink tenant pool unit num rs job", KR(ret), K(tenant_id)); + } else if (OB_FAIL(register_alter_resource_tenant_unit_num_rs_job(tenant_id, + new_unit_num, old_unit_num, AUN_EXPAND, sql_text, trans))) { + LOG_WARN("fail to register shrink tenant pool unit num rs job", KR(ret), + K(tenant_id), K(sql_text), K(old_unit_num), K(new_unit_num)); } else { share::ObResourcePool new_pool; for (int64_t i = 0; OB_SUCC(ret) && i < pools.count(); ++i) { @@ -2006,7 +2028,9 @@ int ObUnitManager::shrink_tenant_pools_unit_num( const uint64_t tenant_id, common::ObIArray &pools, const int64_t new_unit_num, - const common::ObIArray &delete_unit_group_id_array) + const int64_t old_unit_num, + const common::ObIArray &delete_unit_group_id_array, + const common::ObString &sql_text) { int ret = OB_SUCCESS; common::ObMySQLTransaction trans; @@ -2026,8 +2050,10 @@ int ObUnitManager::shrink_tenant_pools_unit_num( } else if (OB_FAIL(trans.start(proxy_, OB_SYS_TENANT_ID))) { LOG_WARN("fail to start transaction", KR(ret)); } else { - if (OB_FAIL(register_alter_resource_tenant_unit_num_rs_job(tenant_id, new_unit_num, AUN_SHRINK, trans))) { - LOG_WARN("fail to register shrink tenant pool unit num rs job", KR(ret), K(tenant_id)); + if (OB_FAIL(register_alter_resource_tenant_unit_num_rs_job(tenant_id, + new_unit_num, old_unit_num, AUN_SHRINK, sql_text, trans))) { + LOG_WARN("fail to register shrink tenant pool unit num rs job", KR(ret), + K(tenant_id), K(new_unit_num), K(sql_text), K(old_unit_num)); } else { share::ObResourcePool new_pool; for (int64_t i = 0; OB_SUCC(ret) && i < pools.count(); ++i) { @@ -2112,7 +2138,9 @@ int ObUnitManager::shrink_tenant_pools_unit_num( int ObUnitManager::rollback_tenant_shrink_pools_unit_num( const uint64_t tenant_id, common::ObIArray &pools, - const int64_t new_unit_num) + const int64_t new_unit_num, + const int64_t old_unit_num, + const common::ObString &sql_text) { int ret = OB_SUCCESS; common::ObMySQLTransaction trans; @@ -2122,8 +2150,9 @@ int ObUnitManager::rollback_tenant_shrink_pools_unit_num( } else if (OB_FAIL(trans.start(proxy_, OB_SYS_TENANT_ID))) { LOG_WARN("start transaction failed", K(ret)); } else { - if (OB_FAIL(rollback_alter_resource_tenant_unit_num_rs_job(tenant_id, new_unit_num, trans))) { - LOG_WARN("rollback rs_job failed ", KR(ret), K(new_unit_num)); + if (OB_FAIL(rollback_alter_resource_tenant_unit_num_rs_job(tenant_id, new_unit_num, + old_unit_num, sql_text, trans))) { + LOG_WARN("rollback rs_job failed ", KR(ret), K(new_unit_num), K(old_unit_num), K(sql_text)); } else { share::ObResourcePool new_pool; for (int64_t i = 0; OB_SUCC(ret) && i < pools.count(); ++i) { @@ -2210,7 +2239,8 @@ int ObUnitManager::rollback_tenant_shrink_pools_unit_num( int ObUnitManager::alter_resource_tenant( const uint64_t tenant_id, const int64_t new_unit_num, - const common::ObIArray &delete_unit_group_id_array) + const common::ObIArray &delete_unit_group_id_array, + const common::ObString &sql_text) { int ret = OB_SUCCESS; LOG_INFO("start to alter resource tenant", K(tenant_id)); @@ -2219,6 +2249,7 @@ int ObUnitManager::alter_resource_tenant( common::ObArray *pools = nullptr; const char *module = "ALTER_RESOURCE_TENANT"; AlterUnitNumType alter_unit_num_type = AUN_MAX; + int64_t old_unit_num = 0; if (OB_UNLIKELY(!check_inner_stat())) { ret = OB_INNER_STAT_ERROR; @@ -2232,7 +2263,7 @@ int ObUnitManager::alter_resource_tenant( ret = OB_ERR_UNEXPECTED; LOG_WARN("pools ptr is null", KR(ret), K(tenant_id)); } else if (OB_FAIL(determine_alter_resource_tenant_unit_num_type( - tenant_id, *pools, new_unit_num, alter_unit_num_type))) { + tenant_id, *pools, new_unit_num, old_unit_num, alter_unit_num_type))) { LOG_WARN("fail to do determine alter resource tenant unit num type", KR(ret)); } else if (AUN_NOP == alter_unit_num_type) { if (delete_unit_group_id_array.count() > 0) { @@ -2244,8 +2275,9 @@ int ObUnitManager::alter_resource_tenant( ret = OB_NOT_SUPPORTED; LOG_USER_ERROR(OB_NOT_SUPPORTED, "rollback shrink pool unit num combined with deleting unit"); } else if (OB_FAIL(rollback_tenant_shrink_pools_unit_num( - tenant_id, *pools, new_unit_num))) { - LOG_WARN("fail to rollback shrink pool unit num", K(ret), K(new_unit_num)); + tenant_id, *pools, new_unit_num, old_unit_num, sql_text))) { + LOG_WARN("fail to rollback shrink pool unit num", K(ret), + K(new_unit_num), K(sql_text), K(old_unit_num)); } } else if (AUN_EXPAND == alter_unit_num_type) { // in 4.1, if enable_rebalance is false, this op can be executed successfully @@ -2254,15 +2286,15 @@ int ObUnitManager::alter_resource_tenant( ret = OB_NOT_SUPPORTED; LOG_USER_ERROR(OB_NOT_SUPPORTED, "expand pool unit num combined with deleting unit"); } else if (OB_FAIL(expand_tenant_pools_unit_num_( - tenant_id, *pools, new_unit_num, module))) { + tenant_id, *pools, new_unit_num, old_unit_num, module, sql_text))) { LOG_WARN("fail to expend pool unit num", K(module), KR(ret), K(new_unit_num), K(tenant_id), - KPC(pools)); + KPC(pools), K(sql_text), K(old_unit_num)); } } else if (AUN_SHRINK == alter_unit_num_type) { // both 4.1 and 4.2 do not allow this op when enable_rebalance is false. - if (OB_FAIL(shrink_tenant_pools_unit_num( - tenant_id, *pools, new_unit_num, delete_unit_group_id_array))) { - LOG_WARN("fail to shrink pool unit num", K(ret), K(new_unit_num)); + if (OB_FAIL(shrink_tenant_pools_unit_num(tenant_id, *pools, new_unit_num, + old_unit_num, delete_unit_group_id_array, sql_text))) { + LOG_WARN("fail to shrink pool unit num", K(ret), K(new_unit_num), K(sql_text), K(old_unit_num)); } } else if (AUN_MAX == alter_unit_num_type) { ret = OB_OP_NOT_ALLOW; diff --git a/src/rootserver/ob_unit_manager.h b/src/rootserver/ob_unit_manager.h index 2bee62b905..9d3cb84fa7 100644 --- a/src/rootserver/ob_unit_manager.h +++ b/src/rootserver/ob_unit_manager.h @@ -172,7 +172,8 @@ public: virtual int alter_resource_tenant( const uint64_t tenant_id, const int64_t new_unit_num, - const common::ObIArray &unit_group_id_array); + const common::ObIArray &unit_group_id_array, + const common::ObString &sql_text); static int find_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, int64_t &job_id, @@ -499,15 +500,21 @@ private: int register_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, const AlterUnitNumType alter_unit_num_type, + const common::ObString &sql_text, common::ObMySQLTransaction &trans); int register_shrink_tenant_pool_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, + const common::ObString &sql_text, common::ObMySQLTransaction &trans); int rollback_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, + const common::ObString &sql_text, common::ObMySQLTransaction &trans); int cancel_alter_resource_tenant_unit_num_rs_job( @@ -516,7 +523,9 @@ private: int create_alter_resource_tenant_unit_num_rs_job( const uint64_t tenant_id, const int64_t new_unit_num, + const int64_t old_unit_num, int64_t &job_id, + const common::ObString &sql_text, common::ObMySQLTransaction &trans, ObRsJobType job_type = ObRsJobType::JOB_TYPE_ALTER_RESOURCE_TENANT_UNIT_NUM); @@ -561,16 +570,21 @@ private: const uint64_t tenant_id, const common::ObIArray &pools, const int64_t new_unit_num, + int64_t &old_unit_num, AlterUnitNumType &alter_unit_num_type); int shrink_tenant_pools_unit_num( const uint64_t tenant_id, common::ObIArray &pools, const int64_t new_unit_num, - const common::ObIArray &delete_unit_group_id_array); + const int64_t old_unit_num, + const common::ObIArray &delete_unit_group_id_array, + const common::ObString &sql_text); int rollback_tenant_shrink_pools_unit_num( const uint64_t tenant_id, common::ObIArray &pools, - const int64_t new_unit_num); + const int64_t new_unit_num, + const int64_t old_unit_num, + const common::ObString &sql_text); int get_tenant_pools_complete_unit_num_and_status( const uint64_t tenant_id, const common::ObIArray &pools, @@ -944,7 +958,9 @@ private: const uint64_t tenant_id, common::ObIArray &pools, const int64_t new_unit_num, - const char *module); + const int64_t old_unit_num, + const char *module, + const common::ObString &sql_text); int increase_units_in_zones_(common::ObISQLClient &client, share::ObResourcePool &pool, const common::ObIArray &to_be_add_zones, diff --git a/src/sql/engine/cmd/ob_resource_executor.cpp b/src/sql/engine/cmd/ob_resource_executor.cpp index 64a2b6645b..1b128870e1 100644 --- a/src/sql/engine/cmd/ob_resource_executor.cpp +++ b/src/sql/engine/cmd/ob_resource_executor.cpp @@ -144,15 +144,20 @@ int ObAlterResourceTenantExecutor::execute( int ret = OB_SUCCESS; ObTaskExecutorCtx *task_exec_ctx = nullptr; obrpc::ObCommonRpcProxy *common_rpc_proxy = nullptr; - const obrpc::ObAlterResourceTenantArg &arg = stmt.get_arg(); - - if (OB_UNLIKELY(nullptr == (task_exec_ctx = GET_TASK_EXECUTOR_CTX(ctx)))) { + obrpc::ObAlterResourceTenantArg &arg = stmt.get_arg(); + ObString first_stmt; + if (OB_FAIL(stmt.get_first_stmt(first_stmt))) { + SQL_ENG_LOG(WARN, "fail to get first stmt" , KR(ret)); + } else if (OB_UNLIKELY(nullptr == (task_exec_ctx = GET_TASK_EXECUTOR_CTX(ctx)))) { ret = OB_NOT_INIT; SQL_ENG_LOG(WARN, "get task executor context failed", KR(ret)); } else if (OB_UNLIKELY(nullptr == (common_rpc_proxy = task_exec_ctx->get_common_rpc()))) { ret = OB_NOT_INIT; SQL_ENG_LOG(WARN, "get common rpc proxy failed", KR(ret)); - } else if (OB_SUCCESS != (ret = common_rpc_proxy->alter_resource_tenant(arg))) { + } else { + arg.ddl_stmt_str_ = first_stmt; + } + if (FAILEDx(common_rpc_proxy->alter_resource_tenant(arg))) { SQL_ENG_LOG(WARN, "fail to send alter resource tenant rpc", KR(ret)); } return ret;