提交 55b72219 编写于 作者: O obdev 提交者: wangzelin.wzl

Fix: log level bug and debug_sync no update required when the debug_sync is unenabled

上级 5f258b9d
......@@ -1271,7 +1271,8 @@ int ObBasicSessionInfo::load_sys_variable(ObIAllocator &calc_buf,
LOG_WARN("fail to init sys var", K(ret), K(sys_var->get_type()),
K(real_val), K(name), K(value));
} else if (OB_FAIL(process_session_variable(var_id, real_val,
false /*check_timezone_valid*/))) {
false /*check_timezone_valid*/,
false /*is_update_sys_var*/))) {
LOG_WARN("process system variable error", K(name), K(type), K(real_val), K(value), K(ret));
} else {
variables_last_modify_time_ = ObTimeUtility::current_time();
......@@ -1578,7 +1579,8 @@ int ObBasicSessionInfo::update_sys_variable(const ObSysVarClassType sys_var_id,
}
// 更新变量
if (OB_SUCC(ret)) {
if (OB_FAIL(process_session_variable(sys_var_id, val, false /*check_timezone_valid*/))) {
if (OB_FAIL(process_session_variable(sys_var_id, val, false /*check_timezone_valid*/,
true /*is_update_sys_var*/))) {
LOG_WARN("process system variable error", K(sys_var_id), K(val), K(ret));
} else if (OB_FAIL(sys_var_inc_info_.add_sys_var_id(sys_var_id))) {
LOG_WARN("add sys var id error", K(sys_var_id), K(ret));
......@@ -2039,7 +2041,7 @@ ObObjType ObBasicSessionInfo::get_sys_variable_meta_type(const ObString &var_nam
} while(0)
OB_INLINE int ObBasicSessionInfo::process_session_variable(ObSysVarClassType var, const ObObj &val,
const bool check_timezone_valid/*true*/)
const bool check_timezone_valid/*true*/, const bool is_update_sys_var/*false*/)
{
int ret = OB_SUCCESS;
switch (var) {
......@@ -2070,12 +2072,12 @@ OB_INLINE int ObBasicSessionInfo::process_session_variable(ObSysVarClassType var
}
case SYS_VAR_DEBUG_SYNC: {
const bool is_global = false;
ret = process_session_debug_sync(val, is_global);
ret = process_session_debug_sync(val, is_global, is_update_sys_var);
break;
}
case SYS_VAR_OB_GLOBAL_DEBUG_SYNC: {
const bool is_global = true;
ret = process_session_debug_sync(val, is_global);
ret = process_session_debug_sync(val, is_global, is_update_sys_var);
break;
}
case SYS_VAR_OB_READ_CONSISTENCY: {
......@@ -2848,11 +2850,11 @@ int ObBasicSessionInfo::process_session_variable_fast()
// SYS_VAR_DEBUG_SYNC
OZ (ObSysVarFactory::calc_sys_var_store_idx(SYS_VAR_DEBUG_SYNC, store_idx));
OV (ObSysVarFactory::is_valid_sys_var_store_idx(store_idx));
OZ (process_session_debug_sync(sys_vars_[store_idx]->get_value(), false));
OZ (process_session_debug_sync(sys_vars_[store_idx]->get_value(), false, false));
// SYS_VAR_OB_GLOBAL_DEBUG_SYNC
OZ (ObSysVarFactory::calc_sys_var_store_idx(SYS_VAR_OB_GLOBAL_DEBUG_SYNC, store_idx));
OV (ObSysVarFactory::is_valid_sys_var_store_idx(store_idx));
OZ (process_session_debug_sync(sys_vars_[store_idx]->get_value(), true));
OZ (process_session_debug_sync(sys_vars_[store_idx]->get_value(), true, false));
// SYS_VAR_OB_READ_CONSISTENCY
// 这个系统变量对应consistency_level_,该属性只能通过常规途径修改,所以适合加入sys_vars_cache_,
// 但这样涉及到的相关修改比较大,稳妥起见保留现有的序列化操作,只在本接口里执行,保证主线程正确初始化。
......@@ -2996,7 +2998,8 @@ int ObBasicSessionInfo::process_session_log_level(const ObObj &val)
}
int ObBasicSessionInfo::process_session_debug_sync(const ObObj &val,
const bool is_global)
const bool is_global,
const bool is_update_sys_var)
{
int ret = OB_SUCCESS;
if (OB_SYS_TENANT_ID == tenant_id_ && GCONF.is_debug_sync_enabled()) {
......@@ -3010,6 +3013,12 @@ int ObBasicSessionInfo::process_session_debug_sync(const ObObj &val,
}
}
}
} else {
if (is_update_sys_var) {
ret = OB_NOT_SUPPORTED;
LOG_USER_ERROR(OB_NOT_SUPPORTED,
"Non-system tenant or debug_sync is turned off, set debug_sync is");
}
}
return ret;
}
......@@ -3874,8 +3883,9 @@ OB_DEF_DESERIALIZE(ObBasicSessionInfo)
} else if (OB_FAIL(deep_copy_sys_variable(*sys_var, sys_var_id, sys_var->get_value()))) {
LOG_WARN("fail to update system variable", K(sys_var_id), K(sys_var->get_value()), K(ret));
} else if (OB_FAIL(process_session_variable(sys_var_id, sys_var->get_value(),
check_timezone_valid))) {
LOG_ERROR("process system variable error", K(ret), K(*sys_var));
check_timezone_valid,
false /*is_update_sys_var*/))) {
LOG_WARN("process system variable error", K(ret), K(*sys_var));
}
}
}
......
......@@ -1251,7 +1251,8 @@ public:
common::ActiveSessionStat &get_ash_stat() { return ash_stat_; }
protected:
int process_session_variable(share::ObSysVarClassType var, const common::ObObj &value,
const bool check_timezone_valid = true);
const bool check_timezone_valid = true,
const bool is_update_sys_var = false);
int process_session_variable_fast();
//@brief process session log_level setting like 'all.*:info, sql.*:debug'.
//int process_session_ob_binlog_row_image(const common::ObObj &value);
......@@ -1261,7 +1262,8 @@ protected:
int process_session_time_zone_value(const common::ObObj &value, const bool check_timezone_valid);
int process_session_overlap_time_value(const ObObj &value);
int process_session_autocommit_value(const common::ObObj &val);
int process_session_debug_sync(const common::ObObj &val, const bool is_global);
int process_session_debug_sync(const common::ObObj &val, const bool is_global,
const bool is_update_sys_var);
// session切换接口
int base_save_session(BaseSavedValue &saved_value, bool skip_cur_stmt_tables = false);
int base_restore_session(BaseSavedValue &saved_value);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册