1.优化检查机制,移除NEED_ADD_SENDER_FLAG,此标记位在多线程间协同,有可能造成数据不一致。

This commit is contained in:
wusheng 2015-12-07 21:36:11 +08:00
parent 92f28c00da
commit 49dc8232ae
1 changed files with 22 additions and 27 deletions

View File

@ -29,7 +29,6 @@ public class DataSenderFactoryWithBalance {
private static List<DataSender> usingDataSender = new ArrayList<DataSender>();
private static int maxKeepConnectingSenderSize;
private static boolean NEED_ADD_SENDER_FLAG = false;
private static int calculateMaxKeeperConnectingSenderSize(int allAddressSize) {
if (CONNECT_PERCENT <= 0 || CONNECT_PERCENT > 100) {
@ -122,7 +121,6 @@ public class DataSenderFactoryWithBalance {
while (true) {
// 检查是否需要新增
// NEED_ADD_SENDER_FLAG 将会在unRegister方法修改值
if (NEED_ADD_SENDER_FLAG) {
DataSender newSender;
for (int i = 0; i < usingDataSender.size(); i++) {
if (usingDataSender.get(i).getStatus() == DataSender.SenderStatus.FAILED) {
@ -145,11 +143,9 @@ public class DataSenderFactoryWithBalance {
unusedServerAddresses.add(usingDataSender.get(i)
.getServerIp());
if (usingDataSender.size() >= maxKeepConnectingSenderSize) {
NEED_ADD_SENDER_FLAG = false;
break;
}
}
}
}
@ -211,6 +207,5 @@ public class DataSenderFactoryWithBalance {
usingDataSender.get(index)
.setStatus(DataSender.SenderStatus.FAILED);
}
NEED_ADD_SENDER_FLAG = true;
}
}