Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Incubator Pegasus
提交
2a111053
Incubator Pegasus
项目概览
apache
/
Incubator Pegasus
通知
9
Star
5
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Incubator Pegasus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
2a111053
编写于
10月 16, 2019
作者:
Z
zhao liwei
提交者:
Yingchun Lai
10月 16, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: fix the bug of deadlock in info collector in onebox environment (#404)
上级
92a55b23
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
13 addition
and
3 deletion
+13
-3
src/server/config.ini
src/server/config.ini
+6
-0
src/server/config.min.ini
src/server/config.min.ini
+7
-1
src/server/info_collector_app.h
src/server/info_collector_app.h
+0
-2
未找到文件。
src/server/config.ini
浏览文件 @
2a111053
...
...
@@ -86,6 +86,12 @@
name
=
default
partitioned
=
false
worker_priority
=
THREAD_xPRIORITY_NORMAL
# The worker count in THREAD_POOL_DEFAULT must be >= 5.
# Because in info collector server, there are four timer tasks(LPC_PEGASUS_APP_STAT_TIMER, LPC_PEGASUS_STORAGE_SIZE_STAT_TIMER,
# LPC_DETECT_AVAILABLE and LPC_PEGASUS_CAPACITY_UNIT_STAT_TIMER). Each of these timer tasks occupies a thread in THREAD_POOL_DEFAULT.
# Each of these timer tasks calls remote procedure to meta server(which produce a callback), and waits for the rpc's callback to execute.
# If the worker_count <= 4, all of these threads are occupied by these timer tasks. so their rpc's callbacks can't get a thread to run.
# it comes to be a deadlock(timer task wait for rpc's callback to execute, and rpc's callback wait for the timer task to release the thread).
worker_count
=
8
[threadpool.THREAD_POOL_REPLICATION]
...
...
src/server/config.min.ini
浏览文件 @
2a111053
...
...
@@ -40,7 +40,13 @@
[threadpool.THREAD_POOL_DEFAULT]
name
=
default
worker_count
=
2
# The worker count in THREAD_POOL_DEFAULT must be >= 5.
# Because in info collector server, there are four timer tasks(LPC_PEGASUS_APP_STAT_TIMER, LPC_PEGASUS_STORAGE_SIZE_STAT_TIMER,
# LPC_DETECT_AVAILABLE and LPC_PEGASUS_CAPACITY_UNIT_STAT_TIMER). Each of these timer tasks occupies a thread in THREAD_POOL_DEFAULT.
# Each of these timer tasks calls remote procedure to meta server(which produce a callback), and waits for the rpc's callback to execute.
# If the worker_count <= 4, all of these threads are occupied by these timer tasks. so their rpc's callbacks can't get a thread to run.
# it comes to be a deadlock(timer task wait for rpc's callback to execute, and rpc's callback wait for the timer task to release the thread).
worker_count
=
5
[threadpool.THREAD_POOL_REPLICATION]
name
=
replica
...
...
src/server/info_collector_app.h
浏览文件 @
2a111053
...
...
@@ -11,8 +11,6 @@
namespace
pegasus
{
namespace
server
{
DEFINE_TASK_CODE
(
LPC_PEGASUS_COLLECTOR_TIMER
,
TASK_PRIORITY_COMMON
,
::
dsn
::
THREAD_POOL_DEFAULT
)
class
info_collector_app
:
public
::
dsn
::
service_app
{
public:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录