提交 3d8a780f 编写于 作者: Z zhangxin10

1. 移除在static的时候获取初始化sender

2. 修复ParentLevel为null判断
上级 4a95381c
......@@ -54,7 +54,7 @@ public class ContextData {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(traceId);
stringBuilder.append("-");
if (parentLevel != null && parentLevel.length() > 0) {
if (parentLevel == null || parentLevel.length() == 0) {
stringBuilder.append(" ");
} else {
stringBuilder.append(parentLevel);
......
......@@ -62,23 +62,6 @@ public class DataSenderFactoryWithBalance {
* Config.Buffer.POOL_SIZE;
}
// 初始化的发送程序
int index = 0;
while (usingDataSender.size() < maxKeepConnectingSenderSize) {
index = ThreadLocalRandom.current().nextInt(0,
unusedServerAddresses.size());
try {
usingDataSender.add(new DataSender(unusedServerAddresses
.get(index)));
unusedServerAddresses.remove(index);
} catch (IOException e) {
// 服务器连接不上
logger.log(Level.SEVERE, "Failed to connect server["
+ unusedServerAddresses.get(index).getHostName() + "]");
continue;
}
}
new DataSenderChecker().start();
}
......@@ -87,26 +70,20 @@ public class DataSenderFactoryWithBalance {
DataSenderWithCopies readySender = new DataSenderWithCopies(maxKeepConnectingSenderSize);
while (true) {
try {
if (usingDataSender.size() == 0) {
try {
Thread.sleep(RETRY_GET_SENDER_WAIT_INTERVAL);
} catch (InterruptedException e) {
logger.log(Level.ALL, "Sleep failed");
}
}
if (usingDataSender.size() > 0) {
int index = ThreadLocalRandom.current().nextInt(0,
usingDataSender.size());
if (usingDataSender.get(index).getStatus() == DataSender.SenderStatus.READY) {
while(readySender.append(usingDataSender.get(index))){
if(++index == usingDataSender.size()){
while (readySender.append(usingDataSender.get(index))) {
if (++index == usingDataSender.size()) {
index = 0;
}
}
break;
}
}
if (readySender == null) {
if (!readySender.isReady()) {
try {
Thread.sleep(RETRY_GET_SENDER_WAIT_INTERVAL);
} catch (InterruptedException e) {
......@@ -209,10 +186,19 @@ public class DataSenderFactoryWithBalance {
}
private static DataSender findReadySender() {
DataSender result = null;
for (InetSocketAddress serverAddress : unusedServerAddresses) {
int index = ThreadLocalRandom.current().nextInt(0,
unusedServerAddresses.size());
for (int i = 0; i < unusedServerAddresses.size();i++, index++) {
if(index == unusedServerAddresses.size()){
index = 0;
}
try {
result = new DataSender(serverAddress);
result = new DataSender(unusedServerAddresses.get(index));
unusedServerAddresses.remove(index);
break;
} catch (IOException e) {
if (result != null) {
......@@ -221,6 +207,7 @@ public class DataSenderFactoryWithBalance {
continue;
}
}
return result;
}
......
......@@ -37,6 +37,11 @@ public class DataSenderWithCopies implements IDataSender {
return senders.size() < maxCopyNum;
}
boolean isReady(){
return senders.size() > 0 ;
}
/**
* 尝试向所有副本发送
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册