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); }