Merge pull request #508 from zhangkewei/master

Random.nextInt() may return negative value.This will cause GRPCChannelManager stop.
This commit is contained in:
吴晟 Wu Sheng 2017-10-12 16:19:47 +08:00 committed by GitHub
commit 2728186059
3 changed files with 10 additions and 8 deletions

View File

@ -32,8 +32,7 @@ public class DefaultNamedThreadFactory implements ThreadFactory {
}
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread();
t.setName(namePrefix + threadSeq.getAndIncrement());
Thread t = new Thread(r,namePrefix + threadSeq.getAndIncrement());
t.setDaemon(true);
return t;
}

View File

@ -106,6 +106,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList
@Override
public void run() {
logger.debug("AppAndServiceRegisterClient running, status:{}.",status);
boolean shouldTry = true;
while (CONNECTED.equals(status) && shouldTry) {
shouldTry = false;

View File

@ -33,12 +33,11 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import org.skywalking.apm.agent.core.boot.BootService;
import org.skywalking.apm.agent.core.boot.DefaultNamedThreadFactory;
import org.skywalking.apm.agent.core.conf.Config;
import org.skywalking.apm.agent.core.conf.RemoteDownstreamConfig;
import org.skywalking.apm.logging.ILog;
import org.skywalking.apm.logging.LogManager;
import static org.skywalking.apm.agent.core.conf.Config.Collector.GRPC_CHANNEL_CHECK_INTERVAL;
/**
* @author wusheng
*/
@ -60,7 +59,7 @@ public class GRPCChannelManager implements BootService, Runnable {
public void boot() throws Throwable {
connectCheckFuture = Executors
.newSingleThreadScheduledExecutor(new DefaultNamedThreadFactory("GRPCChannelManager"))
.scheduleAtFixedRate(this, 0, GRPC_CHANNEL_CHECK_INTERVAL, TimeUnit.SECONDS);
.scheduleAtFixedRate(this, 0, Config.Collector.GRPC_CHANNEL_CHECK_INTERVAL, TimeUnit.SECONDS);
}
@Override
@ -72,15 +71,18 @@ public class GRPCChannelManager implements BootService, Runnable {
public void shutdown() throws Throwable {
connectCheckFuture.cancel(true);
managedChannel.shutdownNow();
logger.debug("Selected collector grpc service shutdown.");
}
@Override
public void run() {
logger.debug("Selected collector grpc service running, reconnect:{}.",reconnect);
if (reconnect) {
if (RemoteDownstreamConfig.Collector.GRPC_SERVERS.size() > 0) {
int index = random.nextInt() % RemoteDownstreamConfig.Collector.GRPC_SERVERS.size();
String server = RemoteDownstreamConfig.Collector.GRPC_SERVERS.get(index);
String server = "";
try {
int index = Math.abs(random.nextInt()) % RemoteDownstreamConfig.Collector.GRPC_SERVERS.size();
server = RemoteDownstreamConfig.Collector.GRPC_SERVERS.get(index);
String[] ipAndPort = server.split(":");
ManagedChannelBuilder<?> channelBuilder =
NettyChannelBuilder.forAddress(ipAndPort[0], Integer.parseInt(ipAndPort[1]))
@ -101,7 +103,7 @@ public class GRPCChannelManager implements BootService, Runnable {
}
}
logger.debug("Selected collector grpc service is not available. Wait {} seconds to retry", GRPC_CHANNEL_CHECK_INTERVAL);
logger.debug("Selected collector grpc service is not available. Wait {} seconds to retry", Config.Collector.GRPC_CHANNEL_CHECK_INTERVAL);
}
}