Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Incubator Pegasus
提交
70115003
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 搜索 >>
未验证
提交
70115003
编写于
11月 10, 2020
作者:
S
Smilencer
提交者:
GitHub
11月 10, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(hotkey): add thread_safe method to clear collector (#640)
上级
27e9eefa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
0 deletion
+18
-0
src/server/hotkey_collector.cpp
src/server/hotkey_collector.cpp
+14
-0
src/server/hotkey_collector.h
src/server/hotkey_collector.h
+4
-0
未找到文件。
src/server/hotkey_collector.cpp
浏览文件 @
70115003
...
...
@@ -255,6 +255,13 @@ void hotkey_coarse_data_collector::analyse_data(detect_hotkey_result &result)
}
}
void
hotkey_coarse_data_collector
::
clear
()
{
for
(
int
i
=
0
;
i
<
FLAGS_hotkey_buckets_num
;
i
++
)
{
_hash_buckets
[
i
].
store
(
0
);
}
}
hotkey_fine_data_collector
::
hotkey_fine_data_collector
(
replica_base
*
base
,
int
target_bucket_index
,
int
max_queue_size
)
...
...
@@ -332,5 +339,12 @@ void hotkey_fine_data_collector::analyse_data(detect_hotkey_result &result)
}
}
void
hotkey_fine_data_collector
::
clear
()
{
std
::
pair
<
dsn
::
blob
,
uint64_t
>
key_weight_pair
;
while
(
_capture_key_queue
.
try_dequeue
(
key_weight_pair
))
{
}
}
}
// namespace server
}
// namespace pegasus
src/server/hotkey_collector.h
浏览文件 @
70115003
...
...
@@ -102,6 +102,7 @@ public:
explicit
internal_collector_base
(
replica_base
*
base
)
:
replica_base
(
base
){};
virtual
void
capture_data
(
const
dsn
::
blob
&
hash_key
,
uint64_t
weight
)
=
0
;
virtual
void
analyse_data
(
detect_hotkey_result
&
result
)
=
0
;
virtual
void
clear
()
=
0
;
};
// used in hotkey_collector_state::STOPPED and hotkey_collector_state::FINISHED, avoid null pointers
...
...
@@ -111,6 +112,7 @@ public:
explicit
hotkey_empty_data_collector
(
replica_base
*
base
)
:
internal_collector_base
(
base
)
{}
void
capture_data
(
const
dsn
::
blob
&
hash_key
,
uint64_t
weight
)
override
{}
void
analyse_data
(
detect_hotkey_result
&
result
)
override
{}
void
clear
()
override
{}
};
// TODO: (Tangyanzhao) add a unit test of hotkey_coarse_data_collector
...
...
@@ -120,6 +122,7 @@ public:
explicit
hotkey_coarse_data_collector
(
replica_base
*
base
);
void
capture_data
(
const
dsn
::
blob
&
hash_key
,
uint64_t
weight
)
override
;
void
analyse_data
(
detect_hotkey_result
&
result
)
override
;
void
clear
()
override
;
private:
hotkey_coarse_data_collector
()
=
delete
;
...
...
@@ -133,6 +136,7 @@ public:
hotkey_fine_data_collector
(
replica_base
*
base
,
int
target_bucket_index
,
int
max_queue_size
);
void
capture_data
(
const
dsn
::
blob
&
hash_key
,
uint64_t
weight
)
override
;
void
analyse_data
(
detect_hotkey_result
&
result
)
override
;
void
clear
()
override
;
private:
hotkey_fine_data_collector
()
=
delete
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录