diff --git a/src/rootserver/ob_ls_recovery_stat_handler.cpp b/src/rootserver/ob_ls_recovery_stat_handler.cpp index 574709ffdd..90bcc8a242 100755 --- a/src/rootserver/ob_ls_recovery_stat_handler.cpp +++ b/src/rootserver/ob_ls_recovery_stat_handler.cpp @@ -382,10 +382,11 @@ int ObLSRecoveryStatHandler::try_reload_and_fix_config_version_(const palf::LogC //set invalid config version SpinWLockGuard guard(lock_); config_version_in_inner_.reset(); + } else { + SpinWLockGuard guard(lock_); + readable_scn_in_inner_ = readable_scn; + config_version_in_inner_ = current_version; } - SpinWLockGuard guard(lock_); - readable_scn_in_inner_ = readable_scn; - config_version_in_inner_ = current_version; } return ret; } diff --git a/src/share/ls/ob_ls_i_life_manager.h b/src/share/ls/ob_ls_i_life_manager.h index 933a205dc2..59ba1f0bd8 100644 --- a/src/share/ls/ob_ls_i_life_manager.h +++ b/src/share/ls/ob_ls_i_life_manager.h @@ -39,6 +39,7 @@ namespace share { class ObLSID; struct ObLSStatusInfo; + #define ALL_LS_EVENT_ADD(tenant_id, ls_id, event, ret, sql, args...)\ do {\ const int64_t MAX_VALUE_LENGTH = 512; \ diff --git a/src/share/ls/ob_ls_recovery_stat_operator.cpp b/src/share/ls/ob_ls_recovery_stat_operator.cpp index c99412fd31..04d82af7a5 100644 --- a/src/share/ls/ob_ls_recovery_stat_operator.cpp +++ b/src/share/ls/ob_ls_recovery_stat_operator.cpp @@ -19,6 +19,7 @@ #include "share/inner_table/ob_inner_table_schema.h" #include "lib/string/ob_sql_string.h"//ObSqlString #include "lib/mysqlclient/ob_mysql_transaction.h"//ObMySQLTransaction +#include "lib/utility/ob_tracepoint.h" #include "common/ob_timeout_ctx.h" #include "share/ob_share_util.h" #include "share/ls/ob_ls_status_operator.h" @@ -486,6 +487,7 @@ int ObLSRecoveryStatOperator::get_tenant_min_user_ls_create_scn(const uint64_t t return ret; } +ERRSIM_POINT_DEF(EN_END_TRANSACTION_ERROR); int ObLSRecoveryStatOperator::update_ls_config_version( const uint64_t tenant_id, const ObLSID &ls_id, const palf::LogConfigVersion &config_version, ObMySQLProxy &client, @@ -501,7 +503,7 @@ int ObLSRecoveryStatOperator::update_ls_config_version( ObLSRecoveryStat ls_recovery_stat; START_TRANSACTION(&client, exec_tenant_id) if (FAILEDx(get_ls_recovery_stat(tenant_id, ls_id, true, - ls_recovery_stat, trans))) { + ls_recovery_stat, trans))) { LOG_WARN("failed to get ls recovery stat", KR(ret), K(tenant_id), K(ls_id)); } else if (ls_recovery_stat.get_config_version().is_valid() && ls_recovery_stat.get_config_version() > config_version) { @@ -534,6 +536,11 @@ int ObLSRecoveryStatOperator::update_ls_config_version( if (OB_SUCC(ret)) { readable_scn = ls_recovery_stat.get_readable_scn(); } + if (EN_END_TRANSACTION_ERROR) { + ret = EN_END_TRANSACTION_ERROR; + SHARE_LOG(ERROR, "set end transaction error", KR(ret)); + } + END_TRANSACTION(trans) } return ret;