Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
ebf3e7b9
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ebf3e7b9
编写于
3月 23, 2020
作者:
A
alesapin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Collect stack traces from system.stack_trace table
上级
72f3fbb6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
5 deletion
+14
-5
dbms/tests/clickhouse-test
dbms/tests/clickhouse-test
+14
-5
未找到文件。
dbms/tests/clickhouse-test
浏览文件 @
ebf3e7b9
...
...
@@ -98,12 +98,19 @@ def get_processlist(client_cmd):
return
""
# server seems dead
def
get_stacktraces
(
server_pid
):
def
get_stacktraces
_from_gdb
(
server_pid
):
cmd
=
"gdb -batch -ex 'thread apply all backtrace' -p {}"
.
format
(
server_pid
)
try
:
return
subprocess
.
check_output
(
cmd
,
shell
=
True
)
except
Exception
as
ex
:
return
"Error occured while receiving stack traces {}"
.
format
(
str
(
ex
))
return
"Error occured while receiving stack traces from gdb: {}"
.
format
(
str
(
ex
))
def
get_stacktraces_from_clickhouse
(
client
):
try
:
return
subprocess
.
check_call
(
"{} --allow_introspection_functions=1 --query
\"
SELECT arrayStringConcat(arrayMap(x, y -> concat(x, ': ', y), arrayMap(x -> addressToLine(x), trace), arrayMap(x -> demangle(addressToSymbol(x)), trace)), '
\n
') as trace FROM system.stack_trace format Vertical
\"
"
.
format
(
client
),
shell
=
True
)
except
Exception
as
ex
:
return
"Error occured while receiving stack traces from client: {}"
.
format
(
str
(
ex
))
def
get_server_pid
(
server_tcp_port
):
...
...
@@ -111,7 +118,7 @@ def get_server_pid(server_tcp_port):
try
:
output
=
subprocess
.
check_output
(
cmd
,
shell
=
True
)
if
output
:
return
int
(
output
[
1
:]
)
return
int
(
output
)
else
:
return
None
# server dead
except
Exception
as
ex
:
...
...
@@ -459,8 +466,10 @@ def main(args):
server_pid
=
get_server_pid
(
clickhouse_tcp_port
)
if
server_pid
:
print
(
"
\n
Located ClickHouse server process {} listening at TCP port {}"
.
format
(
server_pid
,
clickhouse_tcp_port
))
print
(
"
\n
Collecting stacktraces from all running threads:"
)
print
(
get_stacktraces
(
server_pid
))
print
(
"
\n
Collecting stacktraces from system.stacktraces table:"
)
print
(
get_stacktraces_from_clickhouse
(
args
.
client
))
print
(
"
\n
Collecting stacktraces from all running threads with gdb:"
)
print
(
get_stacktraces_from_gdb
(
server_pid
))
else
:
print
(
colored
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录