diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ComponentCache.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ComponentCache.java index e4cb4747c..fe472ce6e 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ComponentCache.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ComponentCache.java @@ -14,11 +14,11 @@ public class ComponentCache { private static Cache CACHE = CacheBuilder.newBuilder().maximumSize(1000).build(); public static int get(int applicationId, String componentName) { - INodeComponentDAO dao = (INodeComponentDAO)DAOContainer.INSTANCE.get(INodeComponentDAO.class.getName()); try { - return CACHE.get(applicationId + Const.ID_SPLIT + componentName, () -> - dao.getComponentId(applicationId, componentName) - ); + return CACHE.get(applicationId + Const.ID_SPLIT + componentName, () -> { + INodeComponentDAO dao = (INodeComponentDAO)DAOContainer.INSTANCE.get(INodeComponentDAO.class.getName()); + return dao.getComponentId(applicationId, componentName); + }); } catch (Throwable e) { return 0; } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java index 16a08440d..3bc4be924 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java @@ -29,13 +29,13 @@ public class NodeComponentSpanListener implements EntrySpanListener, ExitSpanLis @Override public void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { - String componentName = ComponentsDefine.getComponentName(spanObject.getComponentId()); + String componentName = ComponentsDefine.getInstance().getComponentName(spanObject.getComponentId()); createNodeComponent(spanObject, applicationId, componentName); } @Override public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { - String componentName = ComponentsDefine.getComponentName(spanObject.getComponentId()); + String componentName = ComponentsDefine.getInstance().getComponentName(spanObject.getComponentId()); createNodeComponent(spanObject, applicationId, componentName); } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/IDNameExchangeTimer.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/IDNameExchangeTimer.java index 5dc01b164..c1880a589 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/IDNameExchangeTimer.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/IDNameExchangeTimer.java @@ -1,6 +1,8 @@ package org.skywalking.apm.collector.agentstream.worker.storage; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.skywalking.apm.collector.core.framework.Starter; import org.skywalking.apm.collector.stream.worker.WorkerException; import org.skywalking.apm.collector.stream.worker.impl.ExchangeWorker; @@ -20,20 +22,9 @@ public class IDNameExchangeTimer implements Starter { logger.info("id and name exchange timer start"); //TODO timer value config // final long timeInterval = EsConfig.Es.Persistence.Timer.VALUE * 1000; - final long timeInterval = 3 * 1000; + final long timeInterval = 3; - Thread exchangeThread = new Thread(() -> { - while (true) { - try { - exchangeLastData(); - Thread.sleep(timeInterval); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } - } - }); - exchangeThread.setName("timerExchange"); - exchangeThread.start(); + Executors.newSingleThreadScheduledExecutor().schedule(() -> exchangeLastData(), timeInterval, TimeUnit.SECONDS); } private void exchangeLastData() { diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java index 8052525f9..ac02fee13 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java @@ -2,6 +2,8 @@ package org.skywalking.apm.collector.agentstream.worker.storage; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.skywalking.apm.collector.core.framework.Starter; import org.skywalking.apm.collector.storage.dao.DAOContainer; import org.skywalking.apm.collector.storage.dao.IBatchDAO; @@ -23,20 +25,8 @@ public class PersistenceTimer implements Starter { logger.info("persistence timer start"); //TODO timer value config // final long timeInterval = EsConfig.Es.Persistence.Timer.VALUE * 1000; - final long timeInterval = 3 * 1000; - - Thread persistenceThread = new Thread(() -> { - while (true) { - try { - extractDataAndSave(); - Thread.sleep(timeInterval); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } - } - }); - persistenceThread.setName("timerPersistence"); - persistenceThread.start(); + final long timeInterval = 3; + Executors.newSingleThreadScheduledExecutor().schedule(() -> extractDataAndSave(), timeInterval, TimeUnit.SECONDS); } private void extractDataAndSave() { diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java index 7ddab54ee..912efa40c 100644 --- a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java @@ -6,6 +6,7 @@ package org.skywalking.apm.network.trace.component; * @author wusheng */ public class ComponentsDefine { + public static final OfficialComponent TOMCAT = new OfficialComponent(1, "Tomcat"); public static final OfficialComponent HTTPCLIENT = new OfficialComponent(2, "HttpClient"); @@ -30,33 +31,39 @@ public class ComponentsDefine { public static final OfficialComponent OKHTTP = new OfficialComponent(12, "OKHttp"); - public static String getComponentName(int componentId) { - if (TOMCAT.getId() == componentId) { - return TOMCAT.getName(); - } else if (HTTPCLIENT.getId() == componentId) { - return HTTPCLIENT.getName(); - } else if (DUBBO.getId() == componentId) { - return DUBBO.getName(); - } else if (H2.getId() == componentId) { - return H2.getName(); - } else if (MYSQL.getId() == componentId) { - return MYSQL.getName(); - } else if (ORACLE.getId() == componentId) { - return ORACLE.getName(); - } else if (REDIS.getId() == componentId) { - return REDIS.getName(); - } else if (MOTAN.getId() == componentId) { - return MOTAN.getName(); - } else if (MONGODB.getId() == componentId) { - return MONGODB.getName(); - } else if (RESIN.getId() == componentId) { - return RESIN.getName(); - } else if (FEIGN.getId() == componentId) { - return FEIGN.getName(); - } else if (OKHTTP.getId() == componentId) { - return OKHTTP.getName(); - } else { + private static ComponentsDefine instance = new ComponentsDefine(); + + private String[] components; + + public static ComponentsDefine getInstance() { + return instance; + } + + public ComponentsDefine() { + components = new String[13]; + addComponent(TOMCAT); + addComponent(HTTPCLIENT); + addComponent(DUBBO); + addComponent(H2); + addComponent(MYSQL); + addComponent(ORACLE); + addComponent(REDIS); + addComponent(MOTAN); + addComponent(MONGODB); + addComponent(RESIN); + addComponent(FEIGN); + addComponent(OKHTTP); + } + + private void addComponent(OfficialComponent component) { + components[component.getId()] = component.getName(); + } + + public String getComponentName(int componentId) { + if (componentId > components.length - 1 || componentId == 0) { return null; + } else { + return components[componentId]; } } }