fix flt trace cannot trace at only slow query policy
This commit is contained in:
parent
bcab8c659b
commit
a9fbca91d0
6
deps/oblib/src/lib/trace/ob_trace.h
vendored
6
deps/oblib/src/lib/trace/ob_trace.h
vendored
@ -286,6 +286,10 @@ struct ObTrace
|
||||
OB_INLINE bool is_auto_flush() { return auto_flush_; }
|
||||
OB_INLINE void set_enable_show_trace(bool enable_show_trace) { enable_show_trace_ = enable_show_trace; }
|
||||
OB_INLINE bool is_enable_show_trace() { return enable_show_trace_; }
|
||||
OB_INLINE void set_in_transaction(bool is_in_trans) { is_in_trans_ = is_in_trans; }
|
||||
OB_INLINE bool is_in_transaction() { return is_in_trans_; }
|
||||
OB_INLINE void set_is_query_trace(bool is_query_trc) { is_query_trc_ = is_query_trc; }
|
||||
OB_INLINE bool is_query_trace() { return is_query_trc_; }
|
||||
void check_leak_span();
|
||||
void reset();
|
||||
void dump_span();
|
||||
@ -342,6 +346,8 @@ private:
|
||||
private:
|
||||
static thread_local ObTrace* save_buffer;
|
||||
uint64_t magic_code_;
|
||||
bool is_in_trans_;
|
||||
bool is_query_trc_;
|
||||
public:
|
||||
int64_t buffer_size_;
|
||||
int64_t offset_;
|
||||
|
@ -147,8 +147,6 @@ int ObMPBase::after_process(int error_code)
|
||||
// slow query will flush cache
|
||||
FLUSH_TRACE();
|
||||
}
|
||||
} else if (common::OB_SUCCESS != error_code) {
|
||||
FLUSH_TRACE();
|
||||
} else if (can_force_print(error_code)) {
|
||||
// 需要打印TRACE日志的错误码添加在这里
|
||||
int process_ret = error_code;
|
||||
@ -161,7 +159,12 @@ int ObMPBase::after_process(int error_code)
|
||||
} else {
|
||||
PRINT_TRACE(THE_TRACE);
|
||||
}
|
||||
|
||||
if (common::OB_SUCCESS != error_code) {
|
||||
FLUSH_TRACE();
|
||||
}
|
||||
}
|
||||
ObFLTUtils::clean_flt_env();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -420,7 +423,6 @@ int ObMPBase::record_flt_trace(sql::ObSQLSessionInfo &session) const
|
||||
}
|
||||
}
|
||||
}
|
||||
ObFLTUtils::clean_flt_env(session);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -48,11 +48,11 @@ namespace sql
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObFLTUtils::clean_flt_env(sql::ObSQLSessionInfo &session) {
|
||||
if (session.is_query_trc_granuality()) {
|
||||
void ObFLTUtils::clean_flt_env() {
|
||||
if (OBTRACE->is_query_trace()) {
|
||||
FLT_END_TRACE();
|
||||
} else {
|
||||
if (session.get_in_transaction()) {
|
||||
if (OBTRACE->is_in_transaction()) {
|
||||
// do nothing
|
||||
} else {
|
||||
FLT_END_TRACE();
|
||||
@ -62,7 +62,7 @@ namespace sql
|
||||
|
||||
int ObFLTUtils::clean_flt_show_trace_env(sql::ObSQLSessionInfo &session) {
|
||||
int ret = OB_SUCCESS;
|
||||
if (session.is_query_trc_granuality()) {
|
||||
if (OBTRACE->is_query_trace()) {
|
||||
// record current trace id
|
||||
if (OB_FAIL(record_flt_last_trace_id(session))) {
|
||||
LOG_WARN("failed to record last flt trace id", K(ret));
|
||||
@ -71,7 +71,7 @@ namespace sql
|
||||
}
|
||||
// transaction level show trace
|
||||
} else {
|
||||
if (session.get_in_transaction()) {
|
||||
if (OBTRACE->is_in_transaction()) {
|
||||
// do nothing
|
||||
} else {
|
||||
// record current trace id
|
||||
@ -346,7 +346,9 @@ namespace sql
|
||||
// initialize log framework
|
||||
int ret = OB_SUCCESS;
|
||||
FLT_RESET_SPAN();
|
||||
if (sess.is_query_trc_granuality()) {
|
||||
OBTRACE->set_in_transaction(sess.is_server_status_in_transaction());
|
||||
OBTRACE->set_is_query_trace(sess.is_query_trc_granuality());
|
||||
if (OBTRACE->is_query_trace()) {
|
||||
// reset trace_enable and flush trace in transcation granularity
|
||||
// init flush trace and trace enable
|
||||
if (!is_client_support_flt) {
|
||||
@ -358,7 +360,7 @@ namespace sql
|
||||
//set by client
|
||||
}
|
||||
} else {
|
||||
if (sess.is_server_status_in_transaction()) {
|
||||
if (OBTRACE->is_in_transaction()) {
|
||||
// in the trans, do nothing
|
||||
} else {
|
||||
// reset trace_enable and flush trace in transcation granularity
|
||||
@ -410,11 +412,11 @@ namespace sql
|
||||
// update trace_id by server self
|
||||
} else {
|
||||
// update trace_id in query granularity
|
||||
if (sess.is_query_trc_granuality()) {
|
||||
if (OBTRACE->is_query_trace()) {
|
||||
FLT_BEGIN_TRACE();
|
||||
} else {
|
||||
// update trace_id in transaction granularity
|
||||
if (!sess.get_in_transaction()) {
|
||||
if (!OBTRACE->is_in_transaction()) {
|
||||
// begin new trace
|
||||
FLT_BEGIN_TRACE();
|
||||
} else {
|
||||
|
@ -76,7 +76,7 @@ namespace sql
|
||||
static int update_flush_policy_by_control_info(sql::ObSQLSessionInfo &sess);
|
||||
static int record_flt_last_trace_id(sql::ObSQLSessionInfo &session);
|
||||
static int clean_flt_show_trace_env(sql::ObSQLSessionInfo &session);
|
||||
static void clean_flt_env(sql::ObSQLSessionInfo &session);
|
||||
static void clean_flt_env();
|
||||
static int process_flt_span_rec(const char *buf, const int64_t len);
|
||||
static int resolve_flt_span_rec(ObIJsonBase *j_tree, ObArenaAllocator& alloc);
|
||||
static int set_json_str_val(ObString key, ObIJsonBase *jobject_ptr, ObString& val);
|
||||
|
Loading…
x
Reference in New Issue
Block a user