提交 6979025c 编写于 作者: O obdev 提交者: ob-robot

fix show trace cannot find root span while adaptting upstream

上级 292fabfe
......@@ -112,7 +112,7 @@ int ObVirtualShowTrace::retrive_all_span_info()
LOG_TRACE("send inner sql to retrive records", KP(session_), K(session_->get_proxy_sessid()),
K(session_->get_sessid()), K(table_name),
K(tenant_id_), K(trace_id_), K(trace_id),
K(effective_tenant_id_));
K(effective_tenant_id_), K(ObString(sql_len, sql)));
if (sql_len >= OB_MAX_SQL_LENGTH || sql_len <= 0) {
ret = OB_SIZE_OVERFLOW;
SERVER_LOG(WARN, "failed to format sql. size not enough");
......@@ -284,8 +284,9 @@ int ObVirtualShowTrace::generate_span_info_tree()
if (OB_FAIL(ret)) {
// do nothing
} else if (!found_root) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("not found root span reset show trace", K(session_->get_last_flt_span_id()), K(session_->get_last_flt_trace_id()));
show_trace_arr_.reset();
LOG_INFO("not found root span reset show trace");
} else {
// recursively generate span tree
for (int64_t i = 0; OB_SUCC(ret) && i < root_arr.count(); ++i) {
......
......@@ -133,7 +133,6 @@ namespace sql
session.set_auto_flush_trace(false);
session.set_trace_enable(false);
}
OZ(ObFLTUtils::init_flt_show_trace_env(session));
return ret;
}
......@@ -412,7 +411,13 @@ namespace sql
sid.deserialize(span_id.ptr(), span_id.length(), pos);
OBTRACE->init(tid, sid);
FLT_SET_TRACE_LEVEL(sess.get_control_info().level_);
if (sess.is_use_trace_log()) {
sess.set_auto_flush_trace(true);
}
FLT_SET_AUTO_FLUSH(sess.is_auto_flush_trace());
char last_trace_id[OB_MAX_UUID_STR_LENGTH + 1];
pos = 0;
sid.tostring(last_trace_id, OB_MAX_UUID_STR_LENGTH + 1, pos);
}
// update trace_id by server self
} else {
......@@ -429,6 +434,9 @@ namespace sql
}
}
FLT_SET_TRACE_LEVEL(sess.get_control_info().level_);
if (sess.is_use_trace_log()) {
sess.set_auto_flush_trace(true);
}
FLT_SET_AUTO_FLUSH(sess.is_auto_flush_trace());
}
......@@ -567,14 +575,22 @@ namespace sql
// record span
if (OB_FAIL(ret)) {
// do nothing
} else if (OB_FAIL(flt_span_manager->record_span(data))) {
if (OB_SIZE_OVERFLOW == ret || OB_ALLOCATE_MEMORY_FAILED == ret) {
LOG_TRACE("cannot allocate mem for record", K(ret));
ret = OB_SUCCESS;
} else {
if (REACH_TIME_INTERVAL(100 * 1000)) { // in case logging is too frequent
LOG_WARN("failed to record request info in request manager", K(ret));
} else {
while (true) {
if (OB_FAIL(flt_span_manager->record_span(data))) {
if (OB_SIZE_OVERFLOW == ret || OB_ALLOCATE_MEMORY_FAILED == ret) {
LOG_TRACE("cannot allocate mem for record", K(ret));
ret = OB_SUCCESS;
} else {
if (REACH_TIME_INTERVAL(100 * 1000)) { // in case logging is too frequent
LOG_WARN("failed to record request info in request manager", K(ret));
}
}
}
// If the slot is full, a certain amount of
// internal space will be released,
// and it needs to be added again
if (ret != OB_ENTRY_NOT_EXIST) break;
}
}
}
......
......@@ -709,6 +709,9 @@ int ObShowResolver::resolve(const ParseNode &parse_tree)
if (OB_UNLIKELY(parse_tree.num_child_ != 2 || NULL == parse_tree.children_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("parse tree is wrong", K(ret), K(parse_tree.num_child_), K(parse_tree.children_));
} else if (!session_info_->get_control_info().is_valid()) {
ret = OB_NOT_SUPPORTED;
LOG_USER_ERROR(OB_NOT_SUPPORTED, "If full link tracing is not enabled, show trace is");
} else {
show_resv_ctx.condition_node_ = parse_tree.children_[0];
show_resv_ctx.stmt_type_ = stmt::T_SHOW_TRACE;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册