Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
49dc8232
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
49dc8232
编写于
12月 07, 2015
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.优化检查机制,移除NEED_ADD_SENDER_FLAG,此标记位在多线程间协同,有可能造成数据不一致。
上级
92f28c00
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
27 deletion
+22
-27
skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderFactoryWithBalance.java
...cloud/skywalking/sender/DataSenderFactoryWithBalance.java
+22
-27
未找到文件。
skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderFactoryWithBalance.java
浏览文件 @
49dc8232
...
@@ -29,7 +29,6 @@ public class DataSenderFactoryWithBalance {
...
@@ -29,7 +29,6 @@ public class DataSenderFactoryWithBalance {
private
static
List
<
DataSender
>
usingDataSender
=
new
ArrayList
<
DataSender
>();
private
static
List
<
DataSender
>
usingDataSender
=
new
ArrayList
<
DataSender
>();
private
static
int
maxKeepConnectingSenderSize
;
private
static
int
maxKeepConnectingSenderSize
;
private
static
boolean
NEED_ADD_SENDER_FLAG
=
false
;
private
static
int
calculateMaxKeeperConnectingSenderSize
(
int
allAddressSize
)
{
private
static
int
calculateMaxKeeperConnectingSenderSize
(
int
allAddressSize
)
{
if
(
CONNECT_PERCENT
<=
0
||
CONNECT_PERCENT
>
100
)
{
if
(
CONNECT_PERCENT
<=
0
||
CONNECT_PERCENT
>
100
)
{
...
@@ -122,33 +121,30 @@ public class DataSenderFactoryWithBalance {
...
@@ -122,33 +121,30 @@ public class DataSenderFactoryWithBalance {
while
(
true
)
{
while
(
true
)
{
// 检查是否需要新增
// 检查是否需要新增
// NEED_ADD_SENDER_FLAG 将会在unRegister方法修改值
// NEED_ADD_SENDER_FLAG 将会在unRegister方法修改值
if
(
NEED_ADD_SENDER_FLAG
)
{
DataSender
newSender
;
DataSender
newSender
;
for
(
int
i
=
0
;
i
<
usingDataSender
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
usingDataSender
.
size
();
i
++)
{
if
(
usingDataSender
.
get
(
i
).
getStatus
()
==
DataSender
.
SenderStatus
.
FAILED
)
{
if
(
usingDataSender
.
get
(
i
).
getStatus
()
==
DataSender
.
SenderStatus
.
FAILED
)
{
usingDataSender
.
get
(
i
).
close
();
usingDataSender
.
get
(
i
).
close
();
// 正在使用的Sender的数量 <= maxKeepConnectingSenderSize
// 正在使用的Sender的数量 <= maxKeepConnectingSenderSize
// 剩余的服务器地址数量 = 总得服务器地址数量 - 正在使用的Sender的数量
// 剩余的服务器地址数量 = 总得服务器地址数量 - 正在使用的Sender的数量
// 可替换的服务器数量 = 剩余服务器地址数量
// 可替换的服务器数量 = 剩余服务器地址数量
// 当剩余服务器地址数量 <= 0
// 当剩余服务器地址数量 <= 0
// 时,可以替换的地址也不存在,替换操作就可以不执行,所以这里的while是这样的意思
// 时,可以替换的地址也不存在,替换操作就可以不执行,所以这里的while是这样的意思
// 当剩余服务器地址数量 > 0 时,
// 当剩余服务器地址数量 > 0 时,
// 就可以找到可以替换的地址,替换操作也就可以执行了,这里的就会跳出while循环
// 就可以找到可以替换的地址,替换操作也就可以执行了,这里的就会跳出while循环
while
((
newSender
=
findReadySender
())
==
null
)
{
while
((
newSender
=
findReadySender
())
==
null
)
{
try
{
try
{
Thread
.
sleep
(
RETRY_FIND_CONNECTION_SENDER
);
Thread
.
sleep
(
RETRY_FIND_CONNECTION_SENDER
);
}
catch
(
InterruptedException
e
)
{
}
catch
(
InterruptedException
e
)
{
logger
.
log
(
Level
.
ALL
,
"Sleep failed."
);
logger
.
log
(
Level
.
ALL
,
"Sleep failed."
);
}
}
usingDataSender
.
set
(
i
,
newSender
);
unusedServerAddresses
.
add
(
usingDataSender
.
get
(
i
)
.
getServerIp
());
if
(
usingDataSender
.
size
()
>=
maxKeepConnectingSenderSize
)
{
NEED_ADD_SENDER_FLAG
=
false
;
break
;
}
}
}
}
usingDataSender
.
set
(
i
,
newSender
);
unusedServerAddresses
.
add
(
usingDataSender
.
get
(
i
)
.
getServerIp
());
if
(
usingDataSender
.
size
()
>=
maxKeepConnectingSenderSize
)
{
break
;
}
}
}
}
}
...
@@ -211,6 +207,5 @@ public class DataSenderFactoryWithBalance {
...
@@ -211,6 +207,5 @@ public class DataSenderFactoryWithBalance {
usingDataSender
.
get
(
index
)
usingDataSender
.
get
(
index
)
.
setStatus
(
DataSender
.
SenderStatus
.
FAILED
);
.
setStatus
(
DataSender
.
SenderStatus
.
FAILED
);
}
}
NEED_ADD_SENDER_FLAG
=
true
;
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录