From 5c44dd96a26ee09351b8c94657321095c3643b58 Mon Sep 17 00:00:00 2001 From: carlvine Date: Wed, 7 Feb 2018 09:53:19 +0800 Subject: [PATCH] bugfix:no data collected after application started 20+seconds --- .../skywalking/apm/agent/core/boot/ServiceManager.java | 7 ++++--- .../apm/agent/core/remote/CollectorDiscoveryService.java | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/boot/ServiceManager.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/boot/ServiceManager.java index e1ca40ab0..33d189958 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/boot/ServiceManager.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/boot/ServiceManager.java @@ -19,8 +19,9 @@ package org.apache.skywalking.apm.agent.core.boot; -import java.util.HashMap; +import java.util.Collections; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.Map; import java.util.ServiceLoader; import org.apache.skywalking.apm.agent.core.logging.api.LogManager; @@ -36,7 +37,7 @@ public enum ServiceManager { INSTANCE; private static final ILog logger = LogManager.getLogger(ServiceManager.class); - private Map bootedServices = new HashMap(); + private Map bootedServices = Collections.emptyMap(); public void boot() { bootedServices = loadAllServices(); @@ -57,7 +58,7 @@ public enum ServiceManager { } private Map loadAllServices() { - HashMap bootedServices = new HashMap(); + Map bootedServices = new LinkedHashMap(); Iterator serviceIterator = load().iterator(); while (serviceIterator.hasNext()) { BootService bootService = serviceIterator.next(); diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/CollectorDiscoveryService.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/CollectorDiscoveryService.java index f7910f71d..b5d4f442e 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/CollectorDiscoveryService.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/CollectorDiscoveryService.java @@ -44,13 +44,15 @@ public class CollectorDiscoveryService implements BootService { @Override public void boot() throws Throwable { + DiscoveryRestServiceClient discoveryRestServiceClient = new DiscoveryRestServiceClient(); + discoveryRestServiceClient.run(); future = Executors.newSingleThreadScheduledExecutor(new DefaultNamedThreadFactory("CollectorDiscoveryService")) - .scheduleAtFixedRate(new RunnableWithExceptionProtection(new DiscoveryRestServiceClient(), + .scheduleAtFixedRate(new RunnableWithExceptionProtection(discoveryRestServiceClient, new RunnableWithExceptionProtection.CallbackWhenException() { @Override public void handle(Throwable t) { logger.error("unexpected exception.", t); } - }), 0, + }), Config.Collector.DISCOVERY_CHECK_INTERVAL, Config.Collector.DISCOVERY_CHECK_INTERVAL, TimeUnit.SECONDS); }