From 7f60b2763ac9e65fd46d19d895dd40219c9ace51 Mon Sep 17 00:00:00 2001 From: zhangkewei Date: Thu, 12 Oct 2017 15:37:41 +0800 Subject: [PATCH] Random.nextInt() may return negative value.This will cause GRPCChannelManager stop. --- .../apm/agent/core/boot/DefaultNamedThreadFactory.java | 2 +- .../skywalking/apm/agent/core/remote/GRPCChannelManager.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/boot/DefaultNamedThreadFactory.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/boot/DefaultNamedThreadFactory.java index 5a804b3a5..55395d810 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/boot/DefaultNamedThreadFactory.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/boot/DefaultNamedThreadFactory.java @@ -32,7 +32,7 @@ public class DefaultNamedThreadFactory implements ThreadFactory { } @Override public Thread newThread(Runnable r) { - Thread t = new Thread(null, r,namePrefix + threadSeq.getAndIncrement(),0); + Thread t = new Thread(r,namePrefix + threadSeq.getAndIncrement()); t.setDaemon(true); return t; } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/GRPCChannelManager.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/GRPCChannelManager.java index 1fb385d0f..8f5e264ef 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/GRPCChannelManager.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/GRPCChannelManager.java @@ -79,9 +79,10 @@ public class GRPCChannelManager implements BootService, Runnable { 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]))