Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
kafka-manager
提交
7435a788
K
kafka-manager
项目概览
DiDi
/
kafka-manager
10 个月 前同步成功
通知
58
Star
6372
Fork
1229
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kafka-manager
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
7435a788
编写于
10月 17, 2022
作者:
E
EricZeng
提交者:
GitHub
10月 17, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #689 from didi/dev
优化健康检查结果替换时出现死锁问题
上级
98a519f2
7d500a07
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
38 addition
and
6 deletion
+38
-6
km-common/src/main/java/com/xiaojukeji/know/streaming/km/common/constant/Constant.java
...iaojukeji/know/streaming/km/common/constant/Constant.java
+1
-0
km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/health/checkresult/HealthCheckResultService.java
.../service/health/checkresult/HealthCheckResultService.java
+2
-0
km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/health/checkresult/impl/HealthCheckResultServiceImpl.java
...health/checkresult/impl/HealthCheckResultServiceImpl.java
+15
-0
km-persistence/src/main/java/com/xiaojukeji/know/streaming/km/persistence/mysql/health/HealthCheckResultDAO.java
...ing/km/persistence/mysql/health/HealthCheckResultDAO.java
+4
-0
km-persistence/src/main/resources/mybatis/HealthCheckResultMapper.xml
...ce/src/main/resources/mybatis/HealthCheckResultMapper.xml
+12
-0
km-task/src/main/java/com/xiaojukeji/know/streaming/km/task/health/AbstractHealthCheckTask.java
...now/streaming/km/task/health/AbstractHealthCheckTask.java
+4
-6
未找到文件。
km-common/src/main/java/com/xiaojukeji/know/streaming/km/common/constant/Constant.java
浏览文件 @
7435a788
...
...
@@ -43,6 +43,7 @@ public class Constant {
*/
public
static
final
Integer
DEFAULT_CLUSTER_HEALTH_SCORE
=
90
;
public
static
final
Integer
PER_BATCH_MAX_VALUE
=
100
;
public
static
final
String
DEFAULT_USER_NAME
=
"know-streaming-app"
;
...
...
km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/health/checkresult/HealthCheckResultService.java
浏览文件 @
7435a788
...
...
@@ -20,4 +20,6 @@ public interface HealthCheckResultService {
List
<
HealthCheckResultPO
>
getResHealthCheckResult
(
Long
clusterPhyId
,
Integer
dimension
,
String
resNme
);
Map
<
String
,
BaseClusterHealthConfig
>
getClusterHealthConfig
(
Long
clusterPhyId
);
void
batchReplace
(
Long
clusterPhyId
,
List
<
HealthCheckResult
>
healthCheckResults
);
}
km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/health/checkresult/impl/HealthCheckResultServiceImpl.java
浏览文件 @
7435a788
...
...
@@ -3,10 +3,12 @@ package com.xiaojukeji.know.streaming.km.core.service.health.checkresult.impl;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.didiglobal.logi.log.ILog
;
import
com.didiglobal.logi.log.LogFactory
;
import
com.google.common.collect.Lists
;
import
com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck.BaseClusterHealthConfig
;
import
com.xiaojukeji.know.streaming.km.common.bean.entity.health.HealthCheckResult
;
import
com.xiaojukeji.know.streaming.km.common.bean.po.config.PlatformClusterConfigPO
;
import
com.xiaojukeji.know.streaming.km.common.bean.po.health.HealthCheckResultPO
;
import
com.xiaojukeji.know.streaming.km.common.constant.Constant
;
import
com.xiaojukeji.know.streaming.km.common.enums.config.ConfigGroupEnum
;
import
com.xiaojukeji.know.streaming.km.common.enums.health.HealthCheckNameEnum
;
import
com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil
;
...
...
@@ -88,4 +90,17 @@ public class HealthCheckResultServiceImpl implements HealthCheckResultService {
}
return
configMap
;
}
@Override
public
void
batchReplace
(
Long
clusterPhyId
,
List
<
HealthCheckResult
>
healthCheckResults
)
{
List
<
List
<
HealthCheckResult
>>
healthCheckResultPartitions
=
Lists
.
partition
(
healthCheckResults
,
Constant
.
PER_BATCH_MAX_VALUE
);
for
(
List
<
HealthCheckResult
>
checkResultPartition
:
healthCheckResultPartitions
)
{
List
<
HealthCheckResultPO
>
healthCheckResultPos
=
ConvertUtil
.
list2List
(
checkResultPartition
,
HealthCheckResultPO
.
class
);
try
{
healthCheckResultDAO
.
batchReplace
(
healthCheckResultPos
);
}
catch
(
Exception
e
)
{
log
.
error
(
"method=batchReplace||clusterPhyId={}||checkResultList={}||errMsg=exception!"
,
clusterPhyId
,
healthCheckResultPos
,
e
);
}
}
}
}
km-persistence/src/main/java/com/xiaojukeji/know/streaming/km/persistence/mysql/health/HealthCheckResultDAO.java
浏览文件 @
7435a788
...
...
@@ -4,7 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
com.xiaojukeji.know.streaming.km.common.bean.po.health.HealthCheckResultPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
HealthCheckResultDAO
extends
BaseMapper
<
HealthCheckResultPO
>
{
int
replace
(
HealthCheckResultPO
healthCheckResultPO
);
int
batchReplace
(
List
<
HealthCheckResultPO
>
healthCheckResultPos
);
}
km-persistence/src/main/resources/mybatis/HealthCheckResultMapper.xml
浏览文件 @
7435a788
...
...
@@ -20,4 +20,16 @@
VALUES
(#{dimension}, #{configName}, #{clusterPhyId}, #{resName}, #{passed})
</insert>
<insert
id=
"batchReplace"
>
insert into ks_km_health_check_result (dimension, config_name, cluster_phy_id, res_name, passed)
values
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(#{item.dimension}, #{item.configName}, #{item.clusterPhyId}, #{item.resName}, #{item.passed})
</foreach>
on duplicate key update
dimension = dimension, config_name = config_name, cluster_phy_id = cluster_phy_id,
res_name = res_name, passed = passed
</insert>
</mapper>
km-task/src/main/java/com/xiaojukeji/know/streaming/km/task/health/AbstractHealthCheckTask.java
浏览文件 @
7435a788
...
...
@@ -52,12 +52,10 @@ public abstract class AbstractHealthCheckTask extends AbstractAsyncMetricsDispat
resultList
.
addAll
(
this
.
checkAndGetResult
(
clusterPhyParam
,
healthConfigMap
));
}
for
(
HealthCheckResult
checkResult:
resultList
)
{
try
{
healthCheckResultService
.
replace
(
checkResult
);
}
catch
(
Exception
e
)
{
log
.
error
(
"class=AbstractHealthCheckTask||method=processSubTask||clusterPhyId={}||checkResult={}||errMsg=exception!"
,
clusterPhy
.
getId
(),
checkResult
,
e
);
}
try
{
healthCheckResultService
.
batchReplace
(
clusterPhy
.
getId
(),
resultList
);
}
catch
(
Exception
e
)
{
log
.
error
(
"class=AbstractHealthCheckTask||method=processSubTask||clusterPhyId={}||errMsg=exception!"
,
clusterPhy
.
getId
(),
e
);
}
// 删除10分钟之前的检查结果
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录