fix bug in suspect info hash value using
This commit is contained in:
@ -25,9 +25,9 @@ namespace oceanbase
|
|||||||
{
|
{
|
||||||
namespace sql
|
namespace sql
|
||||||
{
|
{
|
||||||
|
|
||||||
ObExprToOutfileRow::ObExprToOutfileRow(ObIAllocator &alloc)
|
ObExprToOutfileRow::ObExprToOutfileRow(ObIAllocator &alloc)
|
||||||
: ObStringExprOperator(alloc, T_OP_TO_OUTFILE_ROW, N_TO_OUTFILE_ROW, MORE_THAN_ZERO, INTERNAL_IN_MYSQL_MODE)
|
: ObStringExprOperator(alloc, T_OP_TO_OUTFILE_ROW, N_TO_OUTFILE_ROW, MORE_THAN_ZERO, INTERNAL_IN_MYSQL_MODE)
|
||||||
{
|
{
|
||||||
need_charset_convert_ = false;
|
need_charset_convert_ = false;
|
||||||
}
|
}
|
||||||
@ -108,9 +108,9 @@ int ObExprToOutfileRow::extend_buffer(ObExprOutFileInfo &out_info,
|
|||||||
out_info.tmp_buf_len_ = new_len;
|
out_info.tmp_buf_len_ = new_len;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObExprToOutfileRow::calc_outfile_info(const ObExpr &expr,
|
int ObExprToOutfileRow::calc_outfile_info(const ObExpr &expr,
|
||||||
ObEvalCtx &ctx,
|
ObEvalCtx &ctx,
|
||||||
ObIAllocator &allocator,
|
ObIAllocator &allocator,
|
||||||
ObExprOutFileInfo &out_info)
|
ObExprOutFileInfo &out_info)
|
||||||
@ -142,9 +142,9 @@ int ObExprToOutfileRow::calc_outfile_info(const ObExpr &expr,
|
|||||||
out_info.print_params_.cs_type_ = static_cast<ObCollationType>(objs_array[PARAM_CHARSET].get_int());
|
out_info.print_params_.cs_type_ = static_cast<ObCollationType>(objs_array[PARAM_CHARSET].get_int());
|
||||||
}
|
}
|
||||||
|
|
||||||
OZ(extract_fisrt_wchar_from_varhcar(out_info.field_, out_info.wchar_field_));
|
OZ(extract_fisrt_wchar_from_varhcar(out_info.field_, out_info.wchar_field_));
|
||||||
OZ(extract_fisrt_wchar_from_varhcar(out_info.line_, out_info.wchar_line_));
|
OZ(extract_fisrt_wchar_from_varhcar(out_info.line_, out_info.wchar_line_));
|
||||||
OZ(extract_fisrt_wchar_from_varhcar(out_info.enclose_, out_info.wchar_enclose_));
|
OZ(extract_fisrt_wchar_from_varhcar(out_info.enclose_, out_info.wchar_enclose_));
|
||||||
OZ(extract_fisrt_wchar_from_varhcar(out_info.escape_, out_info.wchar_escape_));
|
OZ(extract_fisrt_wchar_from_varhcar(out_info.escape_, out_info.wchar_escape_));
|
||||||
OZ(extend_buffer(out_info, allocator));
|
OZ(extend_buffer(out_info, allocator));
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@ -61,6 +61,13 @@ ObScheduleSuspectInfo & ObScheduleSuspectInfo::operator = (const ObScheduleSuspe
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t ObScheduleSuspectInfo::gen_hash(int64_t tenant_id, int64_t dag_hash)
|
||||||
|
{
|
||||||
|
int64_t hash_value = dag_hash;
|
||||||
|
hash_value = common::murmurhash(&tenant_id, sizeof(tenant_id), hash_value);
|
||||||
|
return hash_value;
|
||||||
|
}
|
||||||
|
|
||||||
ObScheduleSuspectInfoMgr::ObScheduleSuspectInfoMgr()
|
ObScheduleSuspectInfoMgr::ObScheduleSuspectInfoMgr()
|
||||||
: is_inited_(false),
|
: is_inited_(false),
|
||||||
allocator_("scheSuspectInfo", OB_SERVER_TENANT_ID),
|
allocator_("scheSuspectInfo", OB_SERVER_TENANT_ID),
|
||||||
@ -616,7 +623,7 @@ int ObCompactionDiagnoseMgr::get_suspect_and_warning_info(
|
|||||||
|
|
||||||
ObDagWarningInfo *warning_info = nullptr;
|
ObDagWarningInfo *warning_info = nullptr;
|
||||||
bool add_schedule_info = false;
|
bool add_schedule_info = false;
|
||||||
if (OB_FAIL(ObScheduleSuspectInfoMgr::get_instance().get_suspect_info(dag.hash(), info))) {
|
if (OB_FAIL(ObScheduleSuspectInfoMgr::get_instance().get_suspect_info(ObScheduleSuspectInfo::gen_hash(MTL_ID(), dag.hash()), info))) {
|
||||||
if (OB_HASH_NOT_EXIST != ret) {
|
if (OB_HASH_NOT_EXIST != ret) {
|
||||||
LOG_WARN("failed to get suspect info", K(ret), K(ls_id), K(tablet_id));
|
LOG_WARN("failed to get suspect info", K(ret), K(ls_id), K(tablet_id));
|
||||||
} else { // no schedule suspect info
|
} else { // no schedule suspect info
|
||||||
|
|||||||
@ -40,6 +40,7 @@ struct ObScheduleSuspectInfo : public common::ObDLinkBase<ObScheduleSuspectInfo>
|
|||||||
bool is_valid() const;
|
bool is_valid() const;
|
||||||
ObScheduleSuspectInfo & operator = (const ObScheduleSuspectInfo &other);
|
ObScheduleSuspectInfo & operator = (const ObScheduleSuspectInfo &other);
|
||||||
|
|
||||||
|
static int64_t gen_hash(int64_t tenant_id, int64_t dag_hash);
|
||||||
TO_STRING_KV(K_(tenant_id), K_(merge_type), K_(ls_id), K_(tablet_id), K_(add_time), K_(suspect_info));
|
TO_STRING_KV(K_(tenant_id), K_(merge_type), K_(ls_id), K_(tablet_id), K_(add_time), K_(suspect_info));
|
||||||
int64_t tenant_id_;
|
int64_t tenant_id_;
|
||||||
int64_t add_time_;
|
int64_t add_time_;
|
||||||
@ -195,14 +196,16 @@ private:
|
|||||||
dag_hash.merge_type_ = type; \
|
dag_hash.merge_type_ = type; \
|
||||||
dag_hash.ls_id_ = ls_id; \
|
dag_hash.ls_id_ = ls_id; \
|
||||||
dag_hash.tablet_id_ = tablet_id; \
|
dag_hash.tablet_id_ = tablet_id; \
|
||||||
if (OB_FAIL(ObScheduleSuspectInfoMgr::get_instance().del_suspect_info(dag_hash.inner_hash()))) { \
|
int64_t tenant_id = MTL_ID(); \
|
||||||
|
int64_t hash_value = ObScheduleSuspectInfo::gen_hash(tenant_id, dag_hash.inner_hash()); \
|
||||||
|
if (OB_FAIL(ObScheduleSuspectInfoMgr::get_instance().del_suspect_info(hash_value))) { \
|
||||||
if (OB_HASH_NOT_EXIST != ret) { \
|
if (OB_HASH_NOT_EXIST != ret) { \
|
||||||
STORAGE_LOG(WARN, "failed to add suspect info", K(ret), K(dag_hash)); \
|
STORAGE_LOG(WARN, "failed to add suspect info", K(ret), K(dag_hash), K(tenant_id)); \
|
||||||
} else { \
|
} else { \
|
||||||
ret = OB_SUCCESS; \
|
ret = OB_SUCCESS; \
|
||||||
} \
|
} \
|
||||||
} else { \
|
} else { \
|
||||||
STORAGE_LOG(DEBUG, "success to add suspect info", K(ret), K(dag_hash)); \
|
STORAGE_LOG(DEBUG, "success to add suspect info", K(ret), K(dag_hash), K(tenant_id)); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1210,11 +1210,12 @@ void ObTabletMergeCtx::collect_running_info()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ObScheduleSuspectInfo ret_info;
|
ObScheduleSuspectInfo ret_info;
|
||||||
if (OB_SUCCESS == ObScheduleSuspectInfoMgr::get_instance().get_suspect_info(dag_key, ret_info)) {
|
int64_t suspect_info_hash = ObScheduleSuspectInfo::gen_hash(MTL_ID(), dag_key);
|
||||||
|
if (OB_SUCCESS == ObScheduleSuspectInfoMgr::get_instance().get_suspect_info(suspect_info_hash, ret_info)) {
|
||||||
ADD_COMPACTION_INFO_PARAM(sstable_merge_info.comment_, sizeof(sstable_merge_info.comment_),
|
ADD_COMPACTION_INFO_PARAM(sstable_merge_info.comment_, sizeof(sstable_merge_info.comment_),
|
||||||
"add_timestamp", ret_info.add_time_,
|
"add_timestamp", ret_info.add_time_,
|
||||||
"suspect_schedule_info", ret_info.suspect_info_);
|
"suspect_schedule_info", ret_info.suspect_info_);
|
||||||
(void)ObScheduleSuspectInfoMgr::get_instance().del_suspect_info(dag_key);
|
(void)ObScheduleSuspectInfoMgr::get_instance().del_suspect_info(suspect_info_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OB_TMP_FAIL(MTL(storage::ObTenantSSTableMergeInfoMgr*)->add_sstable_merge_info(sstable_merge_info))) {
|
if (OB_TMP_FAIL(MTL(storage::ObTenantSSTableMergeInfoMgr*)->add_sstable_merge_info(sstable_merge_info))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user