From fb9200a972369fbc3fb9f160732f84406754d0ee Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Thu, 12 Oct 2017 21:35:11 +0800
Subject: [PATCH 1/7] =?UTF-8?q?Create=20cache=20module=20to=20provide=20id?=
=?UTF-8?q?=20or=20name=20get.=20e.g..=20application=20id,=20instance=20id?=
=?UTF-8?q?,=20service=20id=E2=80=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
#423
---
.../apm-collector-agentregister/pom.xml | 5 ++
.../application/ApplicationIDService.java | 2 +-
.../servicename/ServiceNameService.java | 2 +-
.../ApplicationRegisterSerialWorker.java | 4 +-
.../application/dao/ApplicationEsDAO.java | 23 --------
.../application/dao/ApplicationH2DAO.java | 6 ---
.../application/dao/IApplicationDAO.java | 2 -
.../worker/cache/ApplicationCache.java | 53 -------------------
.../worker/instance/dao/IInstanceDAO.java | 2 -
.../worker/instance/dao/InstanceEsDAO.java | 10 ----
.../worker/instance/dao/InstanceH2DAO.java | 5 +-
.../ServiceNameRegisterSerialWorker.java | 5 +-
.../servicename/dao/IServiceNameDAO.java | 4 --
.../servicename/dao/ServiceNameEsDAO.java | 38 -------------
.../servicename/dao/ServiceNameH2DAO.java | 8 ---
.../apm-collector-agentstream/pom.xml | 5 ++
.../worker/cache/ServiceCache.java | 44 ---------------
.../noderef/NodeReferenceSpanListener.java | 2 +-
.../segment/cost/SegmentCostSpanListener.java | 4 +-
.../entry/ServiceEntrySpanListener.java | 4 +-
.../ServiceReferenceSpanListener.java | 2 +-
apm-collector/apm-collector-cache/pom.xml | 27 ++++++++++
.../collector}/cache/ApplicationCache.java | 34 +++++++++---
.../apm/collector}/cache/InstanceCache.java | 4 +-
.../apm/collector}/cache/ServiceIdCache.java | 4 +-
.../collector}/cache/ServiceNameCache.java | 4 +-
.../cache}/dao/ApplicationEsDAO.java | 25 ++++++++-
.../cache}/dao/ApplicationH2DAO.java | 8 ++-
.../collector/cache}/dao/IApplicationDAO.java | 4 +-
.../apm/collector/cache/dao/IInstanceDAO.java | 26 +++++++++
.../collector/cache}/dao/IServiceNameDAO.java | 2 +-
.../collector/cache/dao/InstanceEsDAO.java | 42 +++++++++++++++
.../collector/cache/dao/InstanceH2DAO.java | 30 +++++++++++
.../cache}/dao/ServiceNameEsDAO.java | 2 +-
.../cache}/dao/ServiceNameH2DAO.java | 2 +-
.../resources/META-INF/defines/es_dao.define | 3 ++
.../resources/META-INF/defines/h2_dao.define | 3 ++
apm-collector/apm-collector-ui/pom.xml | 5 ++
.../apm/collector/ui/dao/InstanceEsDAO.java | 2 +-
.../collector/ui/dao/NodeComponentEsDAO.java | 2 +-
.../collector/ui/dao/NodeMappingEsDAO.java | 2 +-
.../collector/ui/dao/NodeReferenceEsDAO.java | 2 +-
.../collector/ui/dao/ServiceEntryEsDAO.java | 2 +-
.../ui/dao/ServiceReferenceEsDAO.java | 4 +-
.../ui/service/InstanceHealthService.java | 2 +-
.../apm/collector/ui/service/SpanService.java | 4 +-
.../ui/service/TraceStackService.java | 4 +-
.../resources/META-INF/defines/es_dao.define | 2 -
.../resources/META-INF/defines/h2_dao.define | 2 -
apm-collector/pom.xml | 1 +
50 files changed, 245 insertions(+), 239 deletions(-)
delete mode 100644 apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/cache/ApplicationCache.java
delete mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ServiceCache.java
create mode 100644 apm-collector/apm-collector-cache/pom.xml
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector}/cache/ApplicationCache.java (57%)
rename apm-collector/{apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker => apm-collector-cache/src/main/java/org/skywalking/apm/collector}/cache/InstanceCache.java (90%)
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector}/cache/ServiceIdCache.java (94%)
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector}/cache/ServiceNameCache.java (94%)
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache}/dao/ApplicationEsDAO.java (61%)
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache}/dao/ApplicationH2DAO.java (80%)
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache}/dao/IApplicationDAO.java (89%)
create mode 100644 apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache}/dao/IServiceNameDAO.java (94%)
create mode 100644 apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java
create mode 100644 apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache}/dao/ServiceNameEsDAO.java (98%)
rename apm-collector/{apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui => apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache}/dao/ServiceNameH2DAO.java (95%)
create mode 100644 apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define
create mode 100644 apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define
diff --git a/apm-collector/apm-collector-agentregister/pom.xml b/apm-collector/apm-collector-agentregister/pom.xml
index fccbd8c1d..0195c1d83 100644
--- a/apm-collector/apm-collector-agentregister/pom.xml
+++ b/apm-collector/apm-collector-agentregister/pom.xml
@@ -51,5 +51,10 @@
apm-network
${project.version}
+
+ org.skywalking
+ apm-collector-cache
+ ${project.version}
+
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java
index 22ab9ad8f..bfdc125c3 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java
@@ -19,7 +19,7 @@
package org.skywalking.apm.collector.agentregister.application;
import org.skywalking.apm.collector.agentregister.worker.application.ApplicationRegisterRemoteWorker;
-import org.skywalking.apm.collector.agentregister.worker.cache.ApplicationCache;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
import org.skywalking.apm.collector.stream.StreamModuleContext;
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
index 1ab804fcd..2afb23346 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
@@ -19,7 +19,7 @@
package org.skywalking.apm.collector.agentregister.servicename;
import org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameRegisterRemoteWorker;
-import org.skywalking.apm.collector.agentregister.worker.servicename.dao.IServiceNameDAO;
+import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
index be62b927f..79829571d 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
@@ -55,8 +55,10 @@ public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker {
ApplicationDataDefine.Application application = (ApplicationDataDefine.Application)message;
logger.debug("register application, application code: {}", application.getApplicationCode());
+ org.skywalking.apm.collector.cache.dao.IApplicationDAO cacheDao = (org.skywalking.apm.collector.cache.dao.IApplicationDAO)DAOContainer.INSTANCE.get(org.skywalking.apm.collector.cache.dao.IApplicationDAO.class.getName());
+ int applicationId = cacheDao.getApplicationId(application.getApplicationCode());
+
IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- int applicationId = dao.getApplicationId(application.getApplicationCode());
if (applicationId == 0) {
int min = dao.getMinApplicationId();
if (min == 0) {
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java
index 77035cce9..56c9126bb 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java
@@ -21,12 +21,7 @@ package org.skywalking.apm.collector.agentregister.worker.application.dao;
import java.util.HashMap;
import java.util.Map;
import org.elasticsearch.action.index.IndexResponse;
-import org.elasticsearch.action.search.SearchRequestBuilder;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.action.support.WriteRequest;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.SearchHit;
import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
import org.skywalking.apm.collector.storage.define.register.ApplicationTable;
@@ -41,24 +36,6 @@ public class ApplicationEsDAO extends EsDAO implements IApplicationDAO {
private final Logger logger = LoggerFactory.getLogger(ApplicationEsDAO.class);
- @Override public int getApplicationId(String applicationCode) {
- ElasticSearchClient client = getClient();
-
- SearchRequestBuilder searchRequestBuilder = client.prepareSearch(ApplicationTable.TABLE);
- searchRequestBuilder.setTypes("type");
- searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH);
- searchRequestBuilder.setQuery(QueryBuilders.termQuery(ApplicationTable.COLUMN_APPLICATION_CODE, applicationCode));
- searchRequestBuilder.setSize(1);
-
- SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
- if (searchResponse.getHits().totalHits > 0) {
- SearchHit searchHit = searchResponse.getHits().iterator().next();
- int applicationId = (int)searchHit.getSource().get(ApplicationTable.COLUMN_APPLICATION_ID);
- return applicationId;
- }
- return 0;
- }
-
@Override public int getMaxApplicationId() {
return getMaxId(ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID);
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java
index 6181312c3..2336cb46f 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java
@@ -18,7 +18,6 @@
package org.skywalking.apm.collector.agentregister.worker.application.dao;
-import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
@@ -27,11 +26,6 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
*/
public class ApplicationH2DAO extends H2DAO implements IApplicationDAO {
- @Override public int getApplicationId(String applicationCode) {
- H2Client client = getClient();
- return 100;
- }
-
@Override public int getMaxApplicationId() {
return 0;
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java
index ae965d6b0..541ec6329 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java
@@ -24,8 +24,6 @@ import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefin
* @author pengys5
*/
public interface IApplicationDAO {
- int getApplicationId(String applicationCode);
-
int getMaxApplicationId();
int getMinApplicationId();
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/cache/ApplicationCache.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/cache/ApplicationCache.java
deleted file mode 100644
index 655f32e91..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/cache/ApplicationCache.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.cache;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.agentregister.worker.application.dao.IApplicationDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-
-/**
- * @author pengys5
- */
-public class ApplicationCache {
-
- private static Cache CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build();
-
- public static int get(String applicationCode) {
- int applicationId = 0;
- try {
- applicationId = CACHE.get(applicationCode, () -> {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- return dao.getApplicationId(applicationCode);
- });
- } catch (Throwable e) {
- return applicationId;
- }
-
- if (applicationId == 0) {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- applicationId = dao.getApplicationId(applicationCode);
- if (applicationId != 0) {
- CACHE.put(applicationCode, applicationId);
- }
- }
- return applicationId;
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java
index 0a51717cd..30d73be45 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java
@@ -33,6 +33,4 @@ public interface IInstanceDAO {
void save(InstanceDataDefine.Instance instance);
void updateHeartbeatTime(int instanceId, long heartbeatTime);
-
- int getApplicationId(int applicationInstanceId);
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java
index 866d3f08e..cdebd628c 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java
@@ -20,7 +20,6 @@ package org.skywalking.apm.collector.agentregister.worker.instance.dao;
import java.util.HashMap;
import java.util.Map;
-import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
@@ -101,13 +100,4 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
updateRequest.doc(source);
client.update(updateRequest);
}
-
- @Override public int getApplicationId(int applicationInstanceId) {
- GetResponse response = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(applicationInstanceId)).get();
- if (response.isExists()) {
- return (int)response.getSource().get(InstanceTable.COLUMN_APPLICATION_ID);
- } else {
- return 0;
- }
- }
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java
index b0d402fb4..6acaaa964 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java
@@ -25,6 +25,7 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
* @author pengys5
*/
public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
+
@Override public int getInstanceId(int applicationId, String agentUUID) {
return 0;
}
@@ -44,8 +45,4 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
@Override public void updateHeartbeatTime(int instanceId, long heartbeatTime) {
}
-
- @Override public int getApplicationId(int applicationInstanceId) {
- return 0;
- }
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
index 67aa4960e..59bcd0280 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
@@ -55,9 +55,10 @@ public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker {
ServiceNameDataDefine.ServiceName serviceName = (ServiceNameDataDefine.ServiceName)message;
logger.debug("register service name: {}, application id: {}", serviceName.getServiceName(), serviceName.getApplicationId());
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- int serviceId = dao.getServiceId(serviceName.getApplicationId(), serviceName.getServiceName());
+ org.skywalking.apm.collector.cache.dao.IServiceNameDAO cacheDao = (org.skywalking.apm.collector.cache.dao.IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
+ int serviceId = cacheDao.getServiceId(serviceName.getApplicationId(), serviceName.getServiceName());
+ IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
if (serviceId == 0) {
int min = dao.getMinServiceId();
if (min == 0) {
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java
index a407468c0..94c535197 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java
@@ -24,10 +24,6 @@ import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefin
* @author pengys5
*/
public interface IServiceNameDAO {
- int getServiceId(int applicationId, String serviceName);
-
- String getServiceName(int serviceId);
-
int getMaxServiceId();
int getMinServiceId();
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java
index 28b2ab01c..b79d79617 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java
@@ -20,17 +20,9 @@ package org.skywalking.apm.collector.agentregister.worker.servicename.dao;
import java.util.HashMap;
import java.util.Map;
-import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
-import org.elasticsearch.action.search.SearchRequestBuilder;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.action.support.WriteRequest;
-import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.SearchHit;
import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
-import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
import org.skywalking.apm.collector.storage.define.register.ServiceNameTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
@@ -44,27 +36,6 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
private final Logger logger = LoggerFactory.getLogger(ServiceNameEsDAO.class);
- @Override public int getServiceId(int applicationId, String serviceName) {
- ElasticSearchClient client = getClient();
-
- SearchRequestBuilder searchRequestBuilder = client.prepareSearch(ServiceNameTable.TABLE);
- searchRequestBuilder.setTypes(ServiceNameTable.TABLE_TYPE);
- searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH);
- BoolQueryBuilder builder = QueryBuilders.boolQuery();
- builder.must().add(QueryBuilders.termQuery(ServiceNameTable.COLUMN_APPLICATION_ID, applicationId));
- builder.must().add(QueryBuilders.termQuery(ServiceNameTable.COLUMN_SERVICE_NAME, serviceName));
- searchRequestBuilder.setQuery(builder);
- searchRequestBuilder.setSize(1);
-
- SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
- if (searchResponse.getHits().totalHits > 0) {
- SearchHit searchHit = searchResponse.getHits().iterator().next();
- int serviceId = (int)searchHit.getSource().get(ServiceNameTable.COLUMN_SERVICE_ID);
- return serviceId;
- }
- return 0;
- }
-
@Override public int getMaxServiceId() {
return getMaxId(ServiceNameTable.TABLE, ServiceNameTable.COLUMN_SERVICE_ID);
}
@@ -73,15 +44,6 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
return getMinId(ServiceNameTable.TABLE, ServiceNameTable.COLUMN_SERVICE_ID);
}
- @Override public String getServiceName(int serviceId) {
- GetResponse response = getClient().prepareGet(ServiceNameTable.TABLE, String.valueOf(serviceId)).get();
- if (response.isExists()) {
- return (String)response.getSource().get(ServiceNameTable.COLUMN_SERVICE_NAME);
- } else {
- return Const.EMPTY_STRING;
- }
- }
-
@Override public void save(ServiceNameDataDefine.ServiceName serviceName) {
logger.debug("save service name register info, application id: {}, service name: {}", serviceName.getApplicationId(), serviceName.getServiceName());
ElasticSearchClient client = getClient();
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java
index 7e3148582..b0c87a3d2 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java
@@ -26,10 +26,6 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
*/
public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
- @Override public int getServiceId(int applicationId, String serviceName) {
- return 0;
- }
-
@Override public int getMaxServiceId() {
return 0;
}
@@ -38,10 +34,6 @@ public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
return 0;
}
- @Override public String getServiceName(int serviceId) {
- return null;
- }
-
@Override public void save(ServiceNameDataDefine.ServiceName serviceName) {
}
diff --git a/apm-collector/apm-collector-agentstream/pom.xml b/apm-collector/apm-collector-agentstream/pom.xml
index a3cef0409..a56cb3dc3 100644
--- a/apm-collector/apm-collector-agentstream/pom.xml
+++ b/apm-collector/apm-collector-agentstream/pom.xml
@@ -61,5 +61,10 @@
apm-collector-agentregister
${project.version}
+
+ org.skywalking
+ apm-collector-cache
+ ${project.version}
+
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ServiceCache.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ServiceCache.java
deleted file mode 100644
index 6730473d7..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ServiceCache.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.cache;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.agentregister.worker.servicename.dao.IServiceNameDAO;
-import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-
-/**
- * @author pengys5
- */
-public class ServiceCache {
-
- private static Cache CACHE = CacheBuilder.newBuilder().initialCapacity(1000).maximumSize(20000).build();
-
- public static String getServiceName(int serviceId) {
- try {
- return CACHE.get(serviceId, () -> {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- return dao.getServiceName(serviceId);
- });
- } catch (Throwable e) {
- return Const.EMPTY_STRING;
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
index 76f9583c1..8f05d6acc 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
@@ -20,10 +20,10 @@ package org.skywalking.apm.collector.agentstream.worker.noderef;
import java.util.LinkedList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.cache.InstanceCache;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
+import org.skywalking.apm.collector.cache.InstanceCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.CollectionUtils;
import org.skywalking.apm.collector.core.util.Const;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
index 179d23c54..e572e832e 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
@@ -20,11 +20,11 @@ package org.skywalking.apm.collector.agentstream.worker.segment.cost;
import java.util.ArrayList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.cache.ServiceCache;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.LocalSpanListener;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine;
@@ -64,7 +64,7 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
if (spanObject.getOperationNameId() == 0) {
segmentCost.setServiceName(spanObject.getOperationName());
} else {
- segmentCost.setServiceName(ServiceCache.getServiceName(spanObject.getOperationNameId()));
+ segmentCost.setServiceName(ServiceNameCache.get(spanObject.getOperationNameId()));
}
segmentCosts.add(segmentCost);
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
index 0fc14aca4..b5ba0add2 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
@@ -18,10 +18,10 @@
package org.skywalking.apm.collector.agentstream.worker.service.entry;
-import org.skywalking.apm.collector.agentstream.worker.cache.ServiceCache;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -56,7 +56,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
if (spanObject.getOperationNameId() == 0) {
this.entryServiceName = spanObject.getOperationName();
} else {
- this.entryServiceName = ServiceCache.getServiceName(this.entryServiceId);
+ this.entryServiceName = ServiceNameCache.get(this.entryServiceId);
}
this.hasEntry = true;
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
index 6a15ae294..421b2b379 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
@@ -20,10 +20,10 @@ package org.skywalking.apm.collector.agentstream.worker.serviceref;
import java.util.LinkedList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.cache.InstanceCache;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
+import org.skywalking.apm.collector.cache.InstanceCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
diff --git a/apm-collector/apm-collector-cache/pom.xml b/apm-collector/apm-collector-cache/pom.xml
new file mode 100644
index 000000000..f3fac86dc
--- /dev/null
+++ b/apm-collector/apm-collector-cache/pom.xml
@@ -0,0 +1,27 @@
+
+
+
+ apm-collector
+ org.skywalking
+ 3.2.3-2017
+
+ 4.0.0
+
+ apm-collector-cache
+ jar
+
+
+
+ org.skywalking
+ apm-collector-core
+ ${project.version}
+
+
+ org.skywalking
+ apm-collector-storage
+ ${project.version}
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ApplicationCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
similarity index 57%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ApplicationCache.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
index ed02d372e..0dade5deb 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ApplicationCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
@@ -16,25 +16,47 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.cache;
+package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
+import org.skywalking.apm.collector.cache.dao.IApplicationDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.ui.dao.IApplicationDAO;
/**
* @author pengys5
*/
public class ApplicationCache {
- //TODO size configuration
- private static Cache CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
+ private static Cache CODE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build();
+
+ public static int get(String applicationCode) {
+ int applicationId = 0;
+ try {
+ applicationId = CODE_CACHE.get(applicationCode, () -> {
+ IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
+ return dao.getApplicationId(applicationCode);
+ });
+ } catch (Throwable e) {
+ return applicationId;
+ }
+
+ if (applicationId == 0) {
+ IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
+ applicationId = dao.getApplicationId(applicationCode);
+ if (applicationId != 0) {
+ CODE_CACHE.put(applicationCode, applicationId);
+ }
+ }
+ return applicationId;
+ }
+
+ private static Cache ID_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
public static String get(int applicationId) {
try {
- return CACHE.get(applicationId, () -> {
+ return ID_CACHE.get(applicationId, () -> {
IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
return dao.getApplicationCode(applicationId);
});
@@ -48,7 +70,7 @@ public class ApplicationCache {
if (applicationCode.equals("Unknown")) {
IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
applicationCode = dao.getApplicationCode(applicationId);
- CACHE.put(applicationId, applicationCode);
+ ID_CACHE.put(applicationId, applicationCode);
}
return applicationCode;
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/InstanceCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
similarity index 90%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/InstanceCache.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
index 1cb74e809..b1010ca94 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/InstanceCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
@@ -16,11 +16,11 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.cache;
+package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.agentregister.worker.instance.dao.IInstanceDAO;
+import org.skywalking.apm.collector.cache.dao.IInstanceDAO;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
/**
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceIdCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
similarity index 94%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceIdCache.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
index 077522ba4..b7ebd4e7c 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceIdCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.cache;
+package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
+import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.ui.dao.IServiceNameDAO;
/**
* @author pengys5
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
similarity index 94%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
index 0b2d9d28c..0d4b7c572 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.cache;
+package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
+import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.ui.dao.IServiceNameDAO;
/**
* @author pengys5
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ApplicationEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
similarity index 61%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ApplicationEsDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
index acfd78f5b..cab8fe255 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ApplicationEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
@@ -16,10 +16,15 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.dao;
+package org.skywalking.apm.collector.cache.dao;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
+import org.elasticsearch.action.search.SearchRequestBuilder;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.action.search.SearchType;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.SearchHit;
import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.define.register.ApplicationTable;
@@ -34,6 +39,24 @@ public class ApplicationEsDAO extends EsDAO implements IApplicationDAO {
private final Logger logger = LoggerFactory.getLogger(ApplicationEsDAO.class);
+ @Override public int getApplicationId(String applicationCode) {
+ ElasticSearchClient client = getClient();
+
+ SearchRequestBuilder searchRequestBuilder = client.prepareSearch(ApplicationTable.TABLE);
+ searchRequestBuilder.setTypes("type");
+ searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH);
+ searchRequestBuilder.setQuery(QueryBuilders.termQuery(ApplicationTable.COLUMN_APPLICATION_CODE, applicationCode));
+ searchRequestBuilder.setSize(1);
+
+ SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
+ if (searchResponse.getHits().totalHits > 0) {
+ SearchHit searchHit = searchResponse.getHits().iterator().next();
+ int applicationId = (int)searchHit.getSource().get(ApplicationTable.COLUMN_APPLICATION_ID);
+ return applicationId;
+ }
+ return 0;
+ }
+
@Override public String getApplicationCode(int applicationId) {
logger.debug("get application code, applicationId: {}", applicationId);
ElasticSearchClient client = getClient();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ApplicationH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
similarity index 80%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ApplicationH2DAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
index a905f7740..d9a139be4 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ApplicationH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
@@ -16,8 +16,9 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.dao;
+package org.skywalking.apm.collector.cache.dao;
+import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
/**
@@ -25,6 +26,11 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
*/
public class ApplicationH2DAO extends H2DAO implements IApplicationDAO {
+ @Override public int getApplicationId(String applicationCode) {
+ H2Client client = getClient();
+ return 100;
+ }
+
@Override public String getApplicationCode(int applicationId) {
return null;
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IApplicationDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationDAO.java
similarity index 89%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IApplicationDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationDAO.java
index 4e337ca8b..4b0bb4525 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IApplicationDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationDAO.java
@@ -16,11 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.dao;
+package org.skywalking.apm.collector.cache.dao;
/**
* @author pengys5
*/
public interface IApplicationDAO {
+ int getApplicationId(String applicationCode);
+
String getApplicationCode(int applicationId);
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java
new file mode 100644
index 000000000..281f947f1
--- /dev/null
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.cache.dao;
+
+/**
+ * @author pengys5
+ */
+public interface IInstanceDAO {
+ int getApplicationId(int applicationInstanceId);
+}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceNameDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameDAO.java
similarity index 94%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceNameDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameDAO.java
index db3d23b90..eede2558c 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceNameDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameDAO.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.dao;
+package org.skywalking.apm.collector.cache.dao;
/**
* @author pengys5
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java
new file mode 100644
index 000000000..abc9b4133
--- /dev/null
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.cache.dao;
+
+import org.elasticsearch.action.get.GetResponse;
+import org.skywalking.apm.collector.storage.define.register.InstanceTable;
+import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
+
+ private final Logger logger = LoggerFactory.getLogger(InstanceEsDAO.class);
+
+ @Override public int getApplicationId(int applicationInstanceId) {
+ GetResponse response = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(applicationInstanceId)).get();
+ if (response.isExists()) {
+ return (int)response.getSource().get(InstanceTable.COLUMN_APPLICATION_ID);
+ } else {
+ return 0;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java
new file mode 100644
index 000000000..126279cde
--- /dev/null
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.cache.dao;
+
+import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
+
+/**
+ * @author pengys5
+ */
+public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
+ @Override public int getApplicationId(int applicationInstanceId) {
+ return 0;
+ }
+}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
similarity index 98%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
index 03da4de8e..41663de48 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.dao;
+package org.skywalking.apm.collector.cache.dao;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
similarity index 95%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameH2DAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
index 00dce8154..a56b2aafe 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.dao;
+package org.skywalking.apm.collector.cache.dao;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
diff --git a/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define
new file mode 100644
index 000000000..31e828d5c
--- /dev/null
+++ b/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define
@@ -0,0 +1,3 @@
+org.skywalking.apm.collector.cache.dao.ApplicationEsDAO
+org.skywalking.apm.collector.cache.dao.InstanceEsDAO
+org.skywalking.apm.collector.cache.dao.ServiceNameEsDAO
\ No newline at end of file
diff --git a/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define
new file mode 100644
index 000000000..2384a773a
--- /dev/null
+++ b/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define
@@ -0,0 +1,3 @@
+org.skywalking.apm.collector.cache.dao.ApplicationH2DAO
+org.skywalking.apm.collector.cache.dao.InstanceH2DAO
+org.skywalking.apm.collector.cache.dao.ServiceNameH2DAO
\ No newline at end of file
diff --git a/apm-collector/apm-collector-ui/pom.xml b/apm-collector/apm-collector-ui/pom.xml
index e7bd85915..fe113bb20 100644
--- a/apm-collector/apm-collector-ui/pom.xml
+++ b/apm-collector/apm-collector-ui/pom.xml
@@ -51,5 +51,10 @@
apm-collector-storage
${project.version}
+
+ org.skywalking
+ apm-collector-cache
+ ${project.version}
+
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
index 4ebed5c9c..04d0c190d 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
@@ -37,11 +37,11 @@ import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortMode;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
import org.skywalking.apm.collector.storage.define.register.InstanceTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java
index 95ac9857e..c0866c8a9 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java
@@ -26,10 +26,10 @@ import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.node.NodeComponentTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.skywalking.apm.network.trace.component.ComponentsDefine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java
index ead38da4c..8e3c4eea3 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java
@@ -26,10 +26,10 @@ import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.node.NodeMappingTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java
index 4715b4938..4599a6979 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java
@@ -28,10 +28,10 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
index 7a7fb9fe2..d2ca4b451 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
@@ -29,11 +29,11 @@ import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.service.ServiceEntryTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
/**
* @author pengys5
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
index 069783623..51c7ab034 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
@@ -31,14 +31,14 @@ import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
+import org.skywalking.apm.collector.cache.ServiceIdCache;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.ObjectUtils;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.ui.cache.ServiceIdCache;
-import org.skywalking.apm.collector.ui.cache.ServiceNameCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
index 8eabd8a05..3739c5b41 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
@@ -21,10 +21,10 @@ package org.skywalking.apm.collector.ui.service;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.List;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.skywalking.apm.collector.ui.dao.IGCMetricDAO;
import org.skywalking.apm.collector.ui.dao.IInstPerformanceDAO;
import org.skywalking.apm.collector.ui.dao.IInstanceDAO;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
index 2716e7b0b..22decd310 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
@@ -21,11 +21,11 @@ package org.skywalking.apm.collector.ui.service;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.List;
+import org.skywalking.apm.collector.cache.ApplicationCache;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
-import org.skywalking.apm.collector.ui.cache.ServiceNameCache;
import org.skywalking.apm.collector.ui.dao.ISegmentDAO;
import org.skywalking.apm.network.proto.KeyWithStringValue;
import org.skywalking.apm.network.proto.LogMessage;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java
index 3d72be9e3..94abc7161 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java
@@ -22,13 +22,13 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.List;
+import org.skywalking.apm.collector.cache.ApplicationCache;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.util.CollectionUtils;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.ObjectUtils;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
-import org.skywalking.apm.collector.ui.cache.ServiceNameCache;
import org.skywalking.apm.collector.ui.dao.IGlobalTraceDAO;
import org.skywalking.apm.collector.ui.dao.ISegmentDAO;
import org.skywalking.apm.network.proto.SpanObject;
diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define
index 554fbdddb..a606efedb 100644
--- a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define
+++ b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define
@@ -4,8 +4,6 @@ org.skywalking.apm.collector.ui.dao.NodeReferenceEsDAO
org.skywalking.apm.collector.ui.dao.SegmentCostEsDAO
org.skywalking.apm.collector.ui.dao.GlobalTraceEsDAO
org.skywalking.apm.collector.ui.dao.SegmentEsDAO
-org.skywalking.apm.collector.ui.dao.ApplicationEsDAO
-org.skywalking.apm.collector.ui.dao.ServiceNameEsDAO
org.skywalking.apm.collector.ui.dao.InstanceEsDAO
org.skywalking.apm.collector.ui.dao.InstPerformanceEsDAO
org.skywalking.apm.collector.ui.dao.CpuMetricEsDAO
diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define
index d110e3684..f69604fec 100644
--- a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define
+++ b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define
@@ -4,8 +4,6 @@ org.skywalking.apm.collector.ui.dao.NodeReferenceH2DAO
org.skywalking.apm.collector.ui.dao.SegmentCostH2DAO
org.skywalking.apm.collector.ui.dao.GlobalTraceH2DAO
org.skywalking.apm.collector.ui.dao.SegmentH2DAO
-org.skywalking.apm.collector.ui.dao.ApplicationH2DAO
-org.skywalking.apm.collector.ui.dao.ServiceNameH2DAO
org.skywalking.apm.collector.ui.dao.InstanceH2DAO
org.skywalking.apm.collector.ui.dao.InstPerformanceH2DAO
org.skywalking.apm.collector.ui.dao.GCMetricH2DAO
diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml
index 7d11d0500..edcab1970 100644
--- a/apm-collector/pom.xml
+++ b/apm-collector/pom.xml
@@ -35,6 +35,7 @@
apm-collector-agentregister
apm-collector-agentjvm
apm-collector-remote
+ apm-collector-cache
apm
From cf2488445a557a302b251464b1509b30aa9c0e17 Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Thu, 19 Oct 2017 17:08:56 +0800
Subject: [PATCH 2/7] Segments divided into two types, depending on if ids
exchange successful. 1. Success: send to analytic worker 2. Failure: write
into file.
---
.../AgentServerModuleGroupDefine.java | 9 +-
...r.java => AgentServerModuleInstaller.java} | 4 +-
.../AgentStreamCommonModuleInstaller.java | 51 -----
.../AgentStreamModuleGroupConfigParser.java | 80 +++++++
.../AgentStreamModuleGroupDefine.java | 5 +
.../AgentStreamModuleInstaller.java | 4 +-
.../agentstream/config/BufferFileConfig.java | 27 +++
.../handler/TraceSegmentServiceHandler.java | 12 +-
.../handler/TraceSegmentServletHandler.java | 2 +-
.../handler/reader/SegmentJsonReader.java | 6 +-
.../jetty/handler/reader/TraceSegment.java | 24 +--
.../reader/TraceSegmentJsonReader.java | 9 +-
.../handler/reader/UniqueIdJsonReader.java | 6 +-
.../global/GlobalTraceSpanListener.java | 7 +-
.../InstPerformanceSpanListener.java | 12 +-
.../component/NodeComponentSpanListener.java | 35 ++-
.../node/mapping/NodeMappingSpanListener.java | 24 +--
.../noderef/NodeReferenceSpanListener.java | 40 ++--
.../worker/segment/EntrySpanListener.java | 4 +-
.../worker/segment/ExitSpanListener.java | 4 +-
.../worker/segment/FirstSpanListener.java | 4 +-
.../worker/segment/LocalSpanListener.java | 4 +-
.../worker/segment/RefsListener.java | 4 +-
.../worker/segment/SegmentParse.java | 129 +++++++----
.../worker/segment/buffer/Offset.java | 99 +++++++++
.../worker/segment/buffer/OffsetManager.java | 152 +++++++++++++
.../segment/buffer/SegmentBufferConfig.java | 28 +++
.../segment/buffer/SegmentBufferManager.java | 103 +++++++++
.../segment/buffer/SegmentBufferReader.java | 151 +++++++++++++
.../segment/cost/SegmentCostSpanListener.java | 37 ++--
.../segment/standardization/IdExchanger.java | 26 +++
.../standardization/ReferenceDecorator.java | 194 +++++++++++++++++
.../standardization/ReferenceIdExchanger.java | 80 +++++++
.../standardization/SegmentDecorator.java | 86 ++++++++
.../SegmentStandardizationWorker.java | 98 +++++++++
.../standardization/SpanDecorator.java | 202 ++++++++++++++++++
.../standardization/SpanIdExchanger.java | 64 ++++++
.../standardization/StandardBuilder.java | 26 +++
.../entry/ServiceEntrySpanListener.java | 26 +--
.../ServiceReferenceSpanListener.java | 98 +++------
.../agentstream/worker/util/FileUtils.java | 89 ++++++++
.../defines/local_worker_provider.define | 2 +
.../TraceSegmentServiceHandlerTestCase.java | 4 +-
.../agentstream/mock/SegmentPost.java | 3 +
.../buffer/OffsetManagerTestCase.java} | 13 +-
.../SegmentBufferWriteWorkerTestCase.java | 95 ++++++++
.../src/test/resources/log4j2.xml | 34 +++
.../collector/boot/CollectorBootStartUp.java | 2 +
.../apm/collector/boot/CollectorStarter.java | 3 +
.../src/main/resources/application.yml | 3 +
.../src/main/resources/log4j2.xml | 5 +-
.../apm/collector/cache/ApplicationCache.java | 41 ++--
.../apm/collector/cache/InstanceCache.java | 24 ++-
.../apm/collector/cache/ServiceIdCache.java | 30 +--
.../apm/collector/cache/ServiceNameCache.java | 34 +--
.../cluster/ClusterModuleGroupDefine.java | 5 +
.../core/config/GroupConfigParser.java | 30 +++
.../collector/core/config/SystemConfig.java | 26 +++
.../core/config/SystemConfigParser.java | 36 ++++
.../core/module/CommonModuleInstaller.java | 4 +-
.../core/module/ModuleGroupDefine.java | 3 +
...ller.java => MultipleModuleInstaller.java} | 6 +-
.../apm/collector/core/util/Const.java | 1 +
.../queue/QueueModuleGroupDefine.java | 5 +
.../storage/StorageModuleGroupDefine.java | 5 +
.../stream/StreamModuleGroupDefine.java | 5 +
.../apm/collector/ui/UIModuleGroupDefine.java | 9 +-
...eInstaller.java => UIModuleInstaller.java} | 4 +-
.../apm/collector/ui/dao/InstanceEsDAO.java | 2 +-
.../collector/ui/dao/NodeComponentEsDAO.java | 2 +-
.../collector/ui/dao/NodeMappingEsDAO.java | 4 +-
.../collector/ui/dao/NodeReferenceEsDAO.java | 4 +-
.../collector/ui/dao/ServiceEntryEsDAO.java | 2 +-
.../ui/dao/ServiceReferenceEsDAO.java | 10 +-
.../ui/service/InstanceHealthService.java | 2 +-
.../apm/collector/ui/service/SpanService.java | 2 +-
76 files changed, 2119 insertions(+), 406 deletions(-)
rename apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/{AgentServerCommonModuleInstaller.java => AgentServerModuleInstaller.java} (87%)
delete mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java
create mode 100644 apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java
rename apm-collector/apm-collector-agentstream/src/{main/java/org/skywalking/apm/collector/agentstream/worker/util/ExchangeMarkUtils.java => test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java} (76%)
create mode 100644 apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java
create mode 100644 apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml
create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java
create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfig.java
create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java
rename apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/{MultipleCommonModuleInstaller.java => MultipleModuleInstaller.java} (95%)
rename apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/{UICommonModuleInstaller.java => UIModuleInstaller.java} (87%)
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java
index 2aca5aae7..c3567257a 100644
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java
+++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.agentserver;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -28,10 +29,10 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller;
public class AgentServerModuleGroupDefine implements ModuleGroupDefine {
public static final String GROUP_NAME = "agent_server";
- private final AgentServerCommonModuleInstaller installer;
+ private final AgentServerModuleInstaller installer;
public AgentServerModuleGroupDefine() {
- installer = new AgentServerCommonModuleInstaller();
+ installer = new AgentServerModuleInstaller();
}
@Override public String name() {
@@ -45,4 +46,8 @@ public class AgentServerModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return null;
+ }
}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerCommonModuleInstaller.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java
similarity index 87%
rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerCommonModuleInstaller.java
rename to apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java
index 6f209a550..eaad79ba3 100644
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerCommonModuleInstaller.java
+++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java
@@ -20,12 +20,12 @@ package org.skywalking.apm.collector.agentserver;
import java.util.List;
import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller;
+import org.skywalking.apm.collector.core.module.MultipleModuleInstaller;
/**
* @author pengys5
*/
-public class AgentServerCommonModuleInstaller extends MultipleCommonModuleInstaller {
+public class AgentServerModuleInstaller extends MultipleModuleInstaller {
@Override public String groupName() {
return AgentServerModuleGroupDefine.GROUP_NAME;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java
deleted file mode 100644
index fd8ea647d..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream;
-
-import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.storage.PersistenceTimer;
-import org.skywalking.apm.collector.core.client.ClientException;
-import org.skywalking.apm.collector.core.config.ConfigException;
-import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.framework.DefineException;
-import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller;
-import org.skywalking.apm.collector.core.server.ServerException;
-
-/**
- * @author pengys5
- */
-public class AgentStreamCommonModuleInstaller extends MultipleCommonModuleInstaller {
-
- @Override public String groupName() {
- return AgentStreamModuleGroupDefine.GROUP_NAME;
- }
-
- @Override public Context moduleContext() {
- return new AgentStreamModuleContext(groupName());
- }
-
- @Override public List dependenceModules() {
- return null;
- }
-
- @Override public void install() throws DefineException, ConfigException, ServerException, ClientException {
- super.install();
- new PersistenceTimer().start();
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java
new file mode 100644
index 000000000..a22f7b331
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream;
+
+import java.util.Map;
+import org.skywalking.apm.collector.agentstream.config.BufferFileConfig;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
+
+/**
+ * @author pengys5
+ */
+public class AgentStreamModuleGroupConfigParser implements GroupConfigParser {
+
+ private static final String BUFFER_OFFSET_MAX_FILE_SIZE = "buffer_offset_max_file_size";
+ private static final String BUFFER_SEGMENT_MAX_FILE_SIZE = "buffer_segment_max_file_size";
+
+ @Override public void parse(Map config) {
+ if (config.containsKey(GroupConfigParser.NODE_NAME)) {
+ Map groupConfig = config.get(GroupConfigParser.NODE_NAME);
+
+ if (groupConfig.containsKey(BUFFER_OFFSET_MAX_FILE_SIZE)) {
+ String sizeStr = groupConfig.get(BUFFER_OFFSET_MAX_FILE_SIZE).toUpperCase();
+ if (sizeStr.endsWith("K")) {
+ int size = Integer.parseInt(sizeStr.replace("K", ""));
+ BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024;
+ } else if (sizeStr.endsWith("KB")) {
+ int size = Integer.parseInt(sizeStr.replace("KB", ""));
+ BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024;
+ } else if (sizeStr.endsWith("M")) {
+ int size = Integer.parseInt(sizeStr.replace("M", ""));
+ BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024 * 1024;
+ } else if (sizeStr.endsWith("MB")) {
+ int size = Integer.parseInt(sizeStr.replace("MB", ""));
+ BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024 * 1024;
+ } else {
+ BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = 10 * 1024 * 1024;
+ }
+ } else {
+ BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = 10 * 1024 * 1024;
+ }
+
+ if (groupConfig.containsKey(BUFFER_SEGMENT_MAX_FILE_SIZE)) {
+ String sizeStr = groupConfig.get(BUFFER_SEGMENT_MAX_FILE_SIZE).toUpperCase();
+ if (sizeStr.endsWith("K")) {
+ int size = Integer.parseInt(sizeStr.replace("K", ""));
+ BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024;
+ } else if (sizeStr.endsWith("KB")) {
+ int size = Integer.parseInt(sizeStr.replace("KB", ""));
+ BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024;
+ } else if (sizeStr.endsWith("M")) {
+ int size = Integer.parseInt(sizeStr.replace("M", ""));
+ BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024 * 1024;
+ } else if (sizeStr.endsWith("MB")) {
+ int size = Integer.parseInt(sizeStr.replace("MB", ""));
+ BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024 * 1024;
+ } else {
+ BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = 1024 * 1024;
+ }
+ } else {
+ BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = 1024 * 1024;
+ }
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java
index bd1db1bbf..bfc1b745f 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.agentstream;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -45,4 +46,8 @@ public class AgentStreamModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return new AgentStreamModuleGroupConfigParser();
+ }
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java
index ebb9d08de..e8b941a63 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java
@@ -24,13 +24,13 @@ import org.skywalking.apm.collector.core.client.ClientException;
import org.skywalking.apm.collector.core.config.ConfigException;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.framework.DefineException;
-import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller;
+import org.skywalking.apm.collector.core.module.MultipleModuleInstaller;
import org.skywalking.apm.collector.core.server.ServerException;
/**
* @author pengys5
*/
-public class AgentStreamModuleInstaller extends MultipleCommonModuleInstaller {
+public class AgentStreamModuleInstaller extends MultipleModuleInstaller {
@Override public String groupName() {
return AgentStreamModuleGroupDefine.GROUP_NAME;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java
new file mode 100644
index 000000000..4853865dd
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.config;
+
+/**
+ * @author pengys5
+ */
+public class BufferFileConfig {
+ public static int BUFFER_OFFSET_MAX_FILE_SIZE = 10 * 1024 * 1024;
+ public static int BUFFER_SEGMENT_MAX_FILE_SIZE = 10 * 1024 * 1024;
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java
index 5c41f697d..a5ceaae34 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java
@@ -18,15 +18,11 @@
package org.skywalking.apm.collector.agentstream.grpc.handler;
-import com.google.protobuf.InvalidProtocolBufferException;
import io.grpc.stub.StreamObserver;
-import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.segment.SegmentParse;
import org.skywalking.apm.collector.server.grpc.GRPCHandler;
import org.skywalking.apm.network.proto.Downstream;
-import org.skywalking.apm.network.proto.TraceSegmentObject;
import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc;
-import org.skywalking.apm.network.proto.UniqueId;
import org.skywalking.apm.network.proto.UpstreamSegment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,13 +39,7 @@ public class TraceSegmentServiceHandler extends TraceSegmentServiceGrpc.TraceSeg
@Override public void onNext(UpstreamSegment segment) {
logger.debug("receive segment");
SegmentParse segmentParse = new SegmentParse();
- try {
- List traceIds = segment.getGlobalTraceIdsList();
- TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(segment.getSegment());
- segmentParse.parse(traceIds, segmentObject);
- } catch (InvalidProtocolBufferException e) {
- logger.error(e.getMessage(), e);
- }
+ segmentParse.parse(segment, SegmentParse.Source.Agent);
}
@Override public void onError(Throwable throwable) {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java
index 67bef6dba..4bf5add42 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java
@@ -66,7 +66,7 @@ public class TraceSegmentServletHandler extends JettyHandler {
while (reader.hasNext()) {
SegmentParse segmentParse = new SegmentParse();
TraceSegment traceSegment = jsonReader.read(reader);
- segmentParse.parse(traceSegment.getGlobalTraceIds(), traceSegment.getTraceSegmentObject());
+ segmentParse.parse(traceSegment.getUpstreamSegment(), SegmentParse.Source.Agent);
}
reader.endArray();
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java
index 9a1cab79e..32d1df915 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java
@@ -27,7 +27,7 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
-public class SegmentJsonReader implements StreamJsonReader {
+public class SegmentJsonReader implements StreamJsonReader {
private final Logger logger = LoggerFactory.getLogger(SegmentJsonReader.class);
@@ -41,7 +41,7 @@ public class SegmentJsonReader implements StreamJsonReader {
private static final String TRACE_SEGMENT_REFERENCE = "rs";
private static final String SPANS = "ss";
- @Override public TraceSegmentObject read(JsonReader reader) throws IOException {
+ @Override public TraceSegmentObject.Builder read(JsonReader reader) throws IOException {
TraceSegmentObject.Builder builder = TraceSegmentObject.newBuilder();
reader.beginObject();
@@ -82,6 +82,6 @@ public class SegmentJsonReader implements StreamJsonReader {
}
reader.endObject();
- return builder.build();
+ return builder;
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java
index ed87156cd..e492d939c 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java
@@ -18,36 +18,30 @@
package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
-import java.util.ArrayList;
-import java.util.List;
import org.skywalking.apm.network.proto.TraceSegmentObject;
import org.skywalking.apm.network.proto.UniqueId;
+import org.skywalking.apm.network.proto.UpstreamSegment;
/**
* @author pengys5
*/
public class TraceSegment {
- private List uniqueIds;
- private TraceSegmentObject traceSegmentObject;
+ private UpstreamSegment.Builder builder;
public TraceSegment() {
- uniqueIds = new ArrayList<>();
+ builder = UpstreamSegment.newBuilder();
}
- public List getGlobalTraceIds() {
- return uniqueIds;
+ public void addGlobalTraceId(UniqueId.Builder globalTraceId) {
+ builder.addGlobalTraceIds(globalTraceId);
}
- public void addGlobalTraceId(UniqueId globalTraceId) {
- uniqueIds.add(globalTraceId);
+ public void setTraceSegmentBuilder(TraceSegmentObject.Builder traceSegmentBuilder) {
+ builder.setSegment(traceSegmentBuilder.build().toByteString());
}
- public TraceSegmentObject getTraceSegmentObject() {
- return traceSegmentObject;
- }
-
- public void setTraceSegmentObject(TraceSegmentObject traceSegmentObject) {
- this.traceSegmentObject = traceSegmentObject;
+ public UpstreamSegment getUpstreamSegment() {
+ return builder.build();
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java
index f392195d3..1492b16a4 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java
@@ -49,16 +49,9 @@ public class TraceSegmentJsonReader implements StreamJsonReader {
}
reader.endArray();
- if (logger.isDebugEnabled()) {
- traceSegment.getGlobalTraceIds().forEach(uniqueId -> {
- StringBuilder globalTraceId = new StringBuilder();
- uniqueId.getIdPartsList().forEach(idPart -> globalTraceId.append(idPart));
- logger.debug("global trace id: {}", globalTraceId.toString());
- });
- }
break;
case SEGMENT:
- traceSegment.setTraceSegmentObject(segmentJsonReader.read(reader));
+ traceSegment.setTraceSegmentBuilder(segmentJsonReader.read(reader));
break;
default:
reader.skipValue();
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java
index c4b1273e1..04ef1fb34 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java
@@ -25,9 +25,9 @@ import org.skywalking.apm.network.proto.UniqueId;
/**
* @author pengys5
*/
-public class UniqueIdJsonReader implements StreamJsonReader {
+public class UniqueIdJsonReader implements StreamJsonReader {
- @Override public UniqueId read(JsonReader reader) throws IOException {
+ @Override public UniqueId.Builder read(JsonReader reader) throws IOException {
UniqueId.Builder builder = UniqueId.newBuilder();
reader.beginArray();
@@ -35,6 +35,6 @@ public class UniqueIdJsonReader implements StreamJsonReader {
builder.addIdParts(reader.nextLong());
}
reader.endArray();
- return builder.build();
+ return builder;
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
index e3e7da727..0e2425b3d 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.GlobalTraceIdsListener;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -30,7 +31,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
import org.skywalking.apm.network.proto.UniqueId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,8 +47,9 @@ public class GlobalTraceSpanListener implements FirstSpanListener, GlobalTraceId
private long timeBucket;
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- this.timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime());
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ this.timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
this.segmentId = segmentId;
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
index 3eea6358e..55b219d65 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
@@ -20,6 +20,7 @@ package org.skywalking.apm.collector.agentstream.worker.instance.performance;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -28,7 +29,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,15 +45,17 @@ public class InstPerformanceSpanListener implements EntrySpanListener, FirstSpan
private long timeBucket;
@Override
- public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
}
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
this.applicationId = applicationId;
this.instanceId = applicationInstanceId;
- this.cost = spanObject.getEndTime() - spanObject.getStartTime();
- timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(spanObject.getStartTime());
+ this.cost = spanDecorator.getEndTime() - spanDecorator.getStartTime();
+ timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
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 d6a708896..8e7582bb9 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
@@ -23,6 +23,7 @@ import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -31,7 +32,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,39 +46,34 @@ public class NodeComponentSpanListener implements EntrySpanListener, ExitSpanLis
private long timeBucket;
@Override
- public void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) {
NodeComponentDataDefine.NodeComponent nodeComponent = new NodeComponentDataDefine.NodeComponent();
- nodeComponent.setComponentId(spanObject.getComponentId());
+ nodeComponent.setComponentId(spanDecorator.getComponentId());
String id;
- if (spanObject.getComponentId() == 0) {
- nodeComponent.setComponentName(spanObject.getComponent());
+ if (spanDecorator.getComponentId() == 0) {
+ nodeComponent.setComponentName(spanDecorator.getComponent());
id = nodeComponent.getComponentName();
} else {
nodeComponent.setComponentName(Const.EMPTY_STRING);
id = String.valueOf(nodeComponent.getComponentId());
}
- nodeComponent.setPeerId(spanObject.getPeerId());
- if (spanObject.getPeerId() == 0) {
- nodeComponent.setPeer(spanObject.getPeer());
- id = id + Const.ID_SPLIT + nodeComponent.getPeer();
- } else {
- nodeComponent.setPeer(Const.EMPTY_STRING);
- id = id + Const.ID_SPLIT + nodeComponent.getPeerId();
- }
+ nodeComponent.setPeerId(spanDecorator.getPeerId());
+ id = id + Const.ID_SPLIT + nodeComponent.getPeerId();
nodeComponent.setId(id);
nodeComponents.add(nodeComponent);
}
@Override
- public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
NodeComponentDataDefine.NodeComponent nodeComponent = new NodeComponentDataDefine.NodeComponent();
- nodeComponent.setComponentId(spanObject.getComponentId());
+ nodeComponent.setComponentId(spanDecorator.getComponentId());
String id;
- if (spanObject.getComponentId() == 0) {
- nodeComponent.setComponentName(spanObject.getComponent());
+ if (spanDecorator.getComponentId() == 0) {
+ nodeComponent.setComponentName(spanDecorator.getComponent());
id = nodeComponent.getComponentName();
} else {
id = String.valueOf(nodeComponent.getComponentId());
@@ -86,7 +81,6 @@ public class NodeComponentSpanListener implements EntrySpanListener, ExitSpanLis
}
nodeComponent.setPeerId(applicationId);
- nodeComponent.setPeer(Const.EMPTY_STRING);
id = id + Const.ID_SPLIT + String.valueOf(applicationId);
nodeComponent.setId(id);
@@ -94,8 +88,9 @@ public class NodeComponentSpanListener implements EntrySpanListener, ExitSpanLis
}
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime());
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java
index 5bfc3e22a..7ebbdeff1 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java
@@ -22,6 +22,8 @@ import java.util.ArrayList;
import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -30,8 +32,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
-import org.skywalking.apm.network.proto.TraceSegmentReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,29 +45,21 @@ public class NodeMappingSpanListener implements RefsListener, FirstSpanListener
private List nodeMappings = new ArrayList<>();
private long timeBucket;
- @Override public void parseRef(TraceSegmentReference reference, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
logger.debug("node mapping listener parse reference");
NodeMappingDataDefine.NodeMapping nodeMapping = new NodeMappingDataDefine.NodeMapping();
nodeMapping.setApplicationId(applicationId);
- nodeMapping.setAddressId(reference.getNetworkAddressId());
-
- String id = String.valueOf(applicationId);
- if (reference.getNetworkAddressId() != 0) {
- nodeMapping.setAddress(Const.EMPTY_STRING);
- id = id + Const.ID_SPLIT + String.valueOf(nodeMapping.getAddressId());
- } else {
- id = id + Const.ID_SPLIT + reference.getNetworkAddress();
- nodeMapping.setAddress(reference.getNetworkAddress());
- }
-
+ nodeMapping.setAddressId(referenceDecorator.getNetworkAddressId());
+ String id = String.valueOf(applicationId) + Const.ID_SPLIT + String.valueOf(nodeMapping.getAddressId());
nodeMapping.setId(id);
nodeMappings.add(nodeMapping);
}
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime());
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
index 8f05d6acc..6c302569d 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
@@ -23,6 +23,8 @@ import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.cache.InstanceCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.CollectionUtils;
@@ -33,8 +35,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
-import org.skywalking.apm.network.proto.TraceSegmentReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,59 +49,53 @@ public class NodeReferenceSpanListener implements EntrySpanListener, ExitSpanLis
private List references = new LinkedList<>();
@Override
- public void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) {
NodeReferenceDataDefine.NodeReference nodeReference = new NodeReferenceDataDefine.NodeReference();
nodeReference.setFrontApplicationId(applicationId);
- nodeReference.setBehindApplicationId(spanObject.getPeerId());
- nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime()));
+ nodeReference.setBehindApplicationId(spanDecorator.getPeerId());
+ nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime()));
StringBuilder idBuilder = new StringBuilder();
- idBuilder.append(nodeReference.getTimeBucket()).append(Const.ID_SPLIT).append(applicationId);
- if (spanObject.getPeerId() != 0) {
- nodeReference.setBehindPeer(Const.EMPTY_STRING);
- idBuilder.append(Const.ID_SPLIT).append(spanObject.getPeerId());
- } else {
- nodeReference.setBehindPeer(spanObject.getPeer());
- idBuilder.append(Const.ID_SPLIT).append(spanObject.getPeer());
- }
+ idBuilder.append(nodeReference.getTimeBucket()).append(Const.ID_SPLIT).append(applicationId)
+ .append(Const.ID_SPLIT).append(spanDecorator.getPeerId());
+
nodeReference.setId(idBuilder.toString());
- nodeReferences.add(buildNodeRefSum(nodeReference, spanObject.getStartTime(), spanObject.getEndTime(), spanObject.getIsError()));
+ nodeReferences.add(buildNodeRefSum(nodeReference, spanDecorator.getStartTime(), spanDecorator.getEndTime(), spanDecorator.getIsError()));
}
@Override
- public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
if (CollectionUtils.isNotEmpty(references)) {
references.forEach(nodeReference -> {
- nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime()));
+ nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime()));
String idBuilder = String.valueOf(nodeReference.getTimeBucket()) + Const.ID_SPLIT + nodeReference.getFrontApplicationId() +
Const.ID_SPLIT + nodeReference.getBehindApplicationId();
nodeReference.setId(idBuilder);
- nodeReferences.add(buildNodeRefSum(nodeReference, spanObject.getStartTime(), spanObject.getEndTime(), spanObject.getIsError()));
+ nodeReferences.add(buildNodeRefSum(nodeReference, spanDecorator.getStartTime(), spanDecorator.getEndTime(), spanDecorator.getIsError()));
});
} else {
NodeReferenceDataDefine.NodeReference nodeReference = new NodeReferenceDataDefine.NodeReference();
nodeReference.setFrontApplicationId(Const.USER_ID);
nodeReference.setBehindApplicationId(applicationId);
- nodeReference.setBehindPeer(Const.EMPTY_STRING);
- nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime()));
+ nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime()));
String idBuilder = String.valueOf(nodeReference.getTimeBucket()) + Const.ID_SPLIT + nodeReference.getFrontApplicationId() +
Const.ID_SPLIT + nodeReference.getBehindApplicationId();
nodeReference.setId(idBuilder);
- nodeReferences.add(buildNodeRefSum(nodeReference, spanObject.getStartTime(), spanObject.getEndTime(), spanObject.getIsError()));
+ nodeReferences.add(buildNodeRefSum(nodeReference, spanDecorator.getStartTime(), spanDecorator.getEndTime(), spanDecorator.getIsError()));
}
}
- @Override public void parseRef(TraceSegmentReference reference, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
- int parentApplicationId = InstanceCache.get(reference.getParentApplicationInstanceId());
+ int parentApplicationId = InstanceCache.get(referenceDecorator.getParentApplicationInstanceId());
NodeReferenceDataDefine.NodeReference referenceSum = new NodeReferenceDataDefine.NodeReference();
referenceSum.setFrontApplicationId(parentApplicationId);
referenceSum.setBehindApplicationId(applicationId);
- referenceSum.setBehindPeer(Const.EMPTY_STRING);
references.add(referenceSum);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java
index b12c0de6a..6dc623ffa 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java
@@ -18,11 +18,11 @@
package org.skywalking.apm.collector.agentstream.worker.segment;
-import org.skywalking.apm.network.proto.SpanObject;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
/**
* @author pengys5
*/
public interface EntrySpanListener extends SpanListener {
- void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId);
+ void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java
index cf3c7cc32..619c05cb5 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java
@@ -18,11 +18,11 @@
package org.skywalking.apm.collector.agentstream.worker.segment;
-import org.skywalking.apm.network.proto.SpanObject;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
/**
* @author pengys5
*/
public interface ExitSpanListener extends SpanListener {
- void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId);
+ void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java
index 62e416497..f36b9074b 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java
@@ -18,11 +18,11 @@
package org.skywalking.apm.collector.agentstream.worker.segment;
-import org.skywalking.apm.network.proto.SpanObject;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
/**
* @author pengys5
*/
public interface FirstSpanListener extends SpanListener {
- void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId);
+ void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java
index aa0299688..95e48a077 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java
@@ -18,11 +18,11 @@
package org.skywalking.apm.collector.agentstream.worker.segment;
-import org.skywalking.apm.network.proto.SpanObject;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
/**
* @author pengys5
*/
public interface LocalSpanListener extends SpanListener {
- void parseLocal(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId);
+ void parseLocal(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java
index 96294472b..3e7c80cad 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java
@@ -18,11 +18,11 @@
package org.skywalking.apm.collector.agentstream.worker.segment;
-import org.skywalking.apm.network.proto.TraceSegmentReference;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
/**
* @author pengys5
*/
public interface RefsListener extends SpanListener {
- void parseRef(TraceSegmentReference reference, int applicationId, int applicationInstanceId, String segmentId);
+ void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
index 0fca994f7..f5f79300c 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.agentstream.worker.segment;
+import com.google.protobuf.InvalidProtocolBufferException;
import java.util.ArrayList;
import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.global.GlobalTraceSpanListener;
@@ -27,20 +28,24 @@ import org.skywalking.apm.collector.agentstream.worker.node.mapping.NodeMappingS
import org.skywalking.apm.collector.agentstream.worker.noderef.NodeReferenceSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.cost.SegmentCostSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.origin.SegmentPersistenceWorker;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceIdExchanger;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentStandardizationWorker;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanIdExchanger;
import org.skywalking.apm.collector.agentstream.worker.service.entry.ServiceEntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.serviceref.ServiceReferenceSpanListener;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.core.util.CollectionUtils;
import org.skywalking.apm.collector.storage.define.segment.SegmentDataDefine;
import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
import org.skywalking.apm.network.proto.SpanType;
import org.skywalking.apm.network.proto.TraceSegmentObject;
-import org.skywalking.apm.network.proto.TraceSegmentReference;
import org.skywalking.apm.network.proto.UniqueId;
+import org.skywalking.apm.network.proto.UpstreamSegment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,6 +57,7 @@ public class SegmentParse {
private final Logger logger = LoggerFactory.getLogger(SegmentParse.class);
private List spanListeners;
+ private String segmentId;
public SegmentParse() {
spanListeners = new ArrayList<>();
@@ -65,51 +71,83 @@ public class SegmentParse {
spanListeners.add(new InstPerformanceSpanListener());
}
- public void parse(List traceIds, TraceSegmentObject segmentObject) {
+ public boolean parse(UpstreamSegment segment, Source source) {
+ try {
+ List traceIds = segment.getGlobalTraceIdsList();
+ TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(segment.getSegment());
+
+ SegmentDecorator segmentDecorator = new SegmentDecorator(segmentObject);
+ if (!preBuild(traceIds, segmentDecorator)) {
+ logger.debug("This segment id exchange not success, write to buffer file, id: {}", segmentId);
+
+ if (source.equals(Source.Agent)) {
+ writeToBufferFile(segmentId, segment);
+ }
+ return false;
+ } else {
+ logger.debug("This segment id exchange success, id: {}", segmentId);
+ notifyListenerToBuild();
+ buildSegment(segmentId, segmentDecorator.toByteArray());
+ return true;
+ }
+ } catch (InvalidProtocolBufferException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return false;
+ }
+
+ private boolean preBuild(List traceIds, SegmentDecorator segmentDecorator) {
StringBuilder segmentIdBuilder = new StringBuilder();
- for (int i = 0; i < segmentObject.getTraceSegmentId().getIdPartsList().size(); i++) {
+ for (int i = 0; i < segmentDecorator.getTraceSegmentId().getIdPartsList().size(); i++) {
if (i == 0) {
- segmentIdBuilder.append(segmentObject.getTraceSegmentId().getIdPartsList().get(i));
+ segmentIdBuilder.append(segmentDecorator.getTraceSegmentId().getIdPartsList().get(i));
} else {
- segmentIdBuilder.append(".").append(segmentObject.getTraceSegmentId().getIdPartsList().get(i));
+ segmentIdBuilder.append(".").append(segmentDecorator.getTraceSegmentId().getIdPartsList().get(i));
}
}
- String segmentId = segmentIdBuilder.toString();
+ segmentId = segmentIdBuilder.toString();
for (UniqueId uniqueId : traceIds) {
notifyGlobalsListener(uniqueId);
}
- int applicationId = segmentObject.getApplicationId();
- int applicationInstanceId = segmentObject.getApplicationInstanceId();
+ int applicationId = segmentDecorator.getApplicationId();
+ int applicationInstanceId = segmentDecorator.getApplicationInstanceId();
- for (TraceSegmentReference reference : segmentObject.getRefsList()) {
- notifyRefsListener(reference, applicationId, applicationInstanceId, segmentId);
+ for (int i = 0; i < segmentDecorator.getRefsCount(); i++) {
+ ReferenceDecorator referenceDecorator = segmentDecorator.getRefs(i);
+ if (!ReferenceIdExchanger.getInstance().exchange(referenceDecorator, applicationId)) {
+ return false;
+ }
+
+ notifyRefsListener(referenceDecorator, applicationId, applicationInstanceId, segmentId);
}
- List spans = segmentObject.getSpansList();
- if (CollectionUtils.isNotEmpty(spans)) {
- for (SpanObject spanObject : spans) {
- if (spanObject.getSpanId() == 0) {
- notifyFirstListener(spanObject, applicationId, applicationInstanceId, segmentId);
- }
+ for (int i = 0; i < segmentDecorator.getSpansCount(); i++) {
+ SpanDecorator spanDecorator = segmentDecorator.getSpans(i);
- if (SpanType.Exit.equals(spanObject.getSpanType())) {
- notifyExitListener(spanObject, applicationId, applicationInstanceId, segmentId);
- } else if (SpanType.Entry.equals(spanObject.getSpanType())) {
- notifyEntryListener(spanObject, applicationId, applicationInstanceId, segmentId);
- } else if (SpanType.Local.equals(spanObject.getSpanType())) {
- notifyLocalListener(spanObject, applicationId, applicationInstanceId, segmentId);
- } else {
- logger.error("span type error, span type: {}", spanObject.getSpanType().name());
- }
+ if (!SpanIdExchanger.getInstance().exchange(spanDecorator, applicationId)) {
+ return false;
+ }
+
+ if (spanDecorator.getSpanId() == 0) {
+ notifyFirstListener(spanDecorator, applicationId, applicationInstanceId, segmentId);
+ }
+
+ if (SpanType.Exit.equals(spanDecorator.getSpanType())) {
+ notifyExitListener(spanDecorator, applicationId, applicationInstanceId, segmentId);
+ } else if (SpanType.Entry.equals(spanDecorator.getSpanType())) {
+ notifyEntryListener(spanDecorator, applicationId, applicationInstanceId, segmentId);
+ } else if (SpanType.Local.equals(spanDecorator.getSpanType())) {
+ notifyLocalListener(spanDecorator, applicationId, applicationInstanceId, segmentId);
+ } else {
+ logger.error("span type value was unexpected, span type name: {}", spanDecorator.getSpanType().name());
}
}
- notifyListenerToBuild();
- buildSegment(segmentId, segmentObject.toByteArray());
+ return true;
}
private void buildSegment(String id, byte[] dataBinary) {
@@ -126,47 +164,58 @@ public class SegmentParse {
}
}
+ private void writeToBufferFile(String id, UpstreamSegment upstreamSegment) {
+ StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
+
+ try {
+ logger.debug("send to segment buffer write worker, id: {}", id);
+ context.getClusterWorkerContext().lookup(SegmentStandardizationWorker.WorkerRole.INSTANCE).tell(upstreamSegment);
+ } catch (WorkerInvokeException | WorkerNotFoundException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
private void notifyListenerToBuild() {
spanListeners.forEach(SpanListener::build);
}
- private void notifyExitListener(SpanObject spanObject, int applicationId, int applicationInstanceId,
+ private void notifyExitListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
for (SpanListener listener : spanListeners) {
if (listener instanceof ExitSpanListener) {
- ((ExitSpanListener)listener).parseExit(spanObject, applicationId, applicationInstanceId, segmentId);
+ ((ExitSpanListener)listener).parseExit(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
}
}
- private void notifyEntryListener(SpanObject spanObject, int applicationId, int applicationInstanceId,
+ private void notifyEntryListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
for (SpanListener listener : spanListeners) {
if (listener instanceof EntrySpanListener) {
- ((EntrySpanListener)listener).parseEntry(spanObject, applicationId, applicationInstanceId, segmentId);
+ ((EntrySpanListener)listener).parseEntry(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
}
}
- private void notifyLocalListener(SpanObject spanObject, int applicationId, int applicationInstanceId,
+ private void notifyLocalListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
for (SpanListener listener : spanListeners) {
if (listener instanceof LocalSpanListener) {
- ((LocalSpanListener)listener).parseLocal(spanObject, applicationId, applicationInstanceId, segmentId);
+ ((LocalSpanListener)listener).parseLocal(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
}
}
- private void notifyFirstListener(SpanObject spanObject, int applicationId, int applicationInstanceId,
+ private void notifyFirstListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
for (SpanListener listener : spanListeners) {
if (listener instanceof FirstSpanListener) {
- ((FirstSpanListener)listener).parseFirst(spanObject, applicationId, applicationInstanceId, segmentId);
+ ((FirstSpanListener)listener).parseFirst(spanDecorator, applicationId, applicationInstanceId, segmentId);
}
}
}
- private void notifyRefsListener(TraceSegmentReference reference, int applicationId, int applicationInstanceId,
+ private void notifyRefsListener(ReferenceDecorator reference, int applicationId, int applicationInstanceId,
String segmentId) {
for (SpanListener listener : spanListeners) {
if (listener instanceof RefsListener) {
@@ -182,4 +231,8 @@ public class SegmentParse {
}
}
}
+
+ public enum Source {
+ Agent, Buffer
+ }
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java
new file mode 100644
index 000000000..6b5b95f2b
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+/**
+ * @author pengys5
+ */
+public class Offset {
+
+ private static final String SPLIT_CHARACTER = ",";
+ private ReadOffset readOffset;
+ private WriteOffset writeOffset;
+
+ public Offset() {
+ readOffset = new ReadOffset();
+ writeOffset = new WriteOffset();
+ }
+
+ public String serialize() {
+ return readOffset.getReadFileName() + SPLIT_CHARACTER + String.valueOf(readOffset.getReadFileOffset())
+ + SPLIT_CHARACTER + writeOffset.getWriteFileName() + SPLIT_CHARACTER + String.valueOf(writeOffset.getWriteFileOffset());
+ }
+
+ public void deserialize(String value) {
+ String[] values = value.split(SPLIT_CHARACTER);
+ if (values.length == 4) {
+ this.readOffset.readFileName = values[0];
+ this.readOffset.readFileOffset = Long.parseLong(values[1]);
+ this.writeOffset.writeFileName = values[2];
+ this.writeOffset.writeFileOffset = Long.parseLong(values[3]);
+ }
+ }
+
+ public ReadOffset getReadOffset() {
+ return readOffset;
+ }
+
+ public WriteOffset getWriteOffset() {
+ return writeOffset;
+ }
+
+ public static class ReadOffset {
+ private String readFileName;
+ private long readFileOffset = 0;
+
+ public String getReadFileName() {
+ return readFileName;
+ }
+
+ public long getReadFileOffset() {
+ return readFileOffset;
+ }
+
+ public void setReadFileName(String readFileName) {
+ this.readFileName = readFileName;
+ }
+
+ public void setReadFileOffset(long readFileOffset) {
+ this.readFileOffset = readFileOffset;
+ }
+ }
+
+ public static class WriteOffset {
+ private String writeFileName;
+ private long writeFileOffset = 0;
+
+ public String getWriteFileName() {
+ return writeFileName;
+ }
+
+ public long getWriteFileOffset() {
+ return writeFileOffset;
+ }
+
+ public void setWriteFileName(String writeFileName) {
+ this.writeFileName = writeFileName;
+ }
+
+ public void setWriteFileOffset(long writeFileOffset) {
+ this.writeFileOffset = writeFileOffset;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
new file mode 100644
index 000000000..e895b52c0
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import org.skywalking.apm.collector.agentstream.config.BufferFileConfig;
+import org.skywalking.apm.collector.agentstream.worker.util.FileUtils;
+import org.skywalking.apm.collector.core.util.CollectionUtils;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.TimeBucketUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public enum OffsetManager {
+ INSTANCE;
+
+ private final Logger logger = LoggerFactory.getLogger(OffsetManager.class);
+
+ private static final String OFFSET_FILE_PREFIX = "offset";
+ private File offsetFile;
+ private Offset offset;
+ private boolean initialized = false;
+ private RandomAccessFile randomAccessFile = null;
+ private String lastOffsetRecord = Const.EMPTY_STRING;
+
+ public synchronized void initialize() throws IOException {
+ if (!initialized) {
+ this.offset = new Offset();
+ File dataPath = new File(SegmentBufferConfig.BUFFER_PATH);
+ if (dataPath.mkdirs()) {
+ createOffsetFile();
+ } else {
+ File[] offsetFiles = dataPath.listFiles(new PrefixFileNameFilter());
+ if (CollectionUtils.isNotEmpty(offsetFiles) && offsetFiles.length > 0) {
+ for (int i = 0; i < offsetFiles.length; i++) {
+ if (i != offsetFiles.length - 1) {
+ offsetFiles[i].delete();
+ } else {
+ offsetFile = offsetFiles[i];
+ }
+ }
+ } else {
+ createOffsetFile();
+ }
+ }
+ String offsetRecord = FileUtils.INSTANCE.readLastLine(offsetFile);
+ offset.deserialize(offsetRecord);
+ initialized = true;
+
+ Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> flush(), 10, 3, TimeUnit.SECONDS);
+ }
+ }
+
+ private void createOffsetFile() throws IOException {
+ String timeBucket = String.valueOf(TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()));
+ String offsetFileName = OFFSET_FILE_PREFIX + "_" + timeBucket + "." + Const.FILE_SUFFIX;
+ offsetFile = new File(SegmentBufferConfig.BUFFER_PATH + offsetFileName);
+ this.offset.getWriteOffset().setWriteFileName(Const.EMPTY_STRING);
+ this.offset.getWriteOffset().setWriteFileOffset(0);
+ this.offset.getReadOffset().setReadFileName(Const.EMPTY_STRING);
+ this.offset.getReadOffset().setReadFileOffset(0);
+ this.flush();
+ }
+
+ public void flush() {
+ String offsetRecord = offset.serialize();
+ if (!lastOffsetRecord.equals(offsetRecord)) {
+ if (offsetFile.length() >= BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE) {
+ exchangeFile();
+ }
+ FileUtils.INSTANCE.writeAppendToLast(offsetFile, randomAccessFile, offsetRecord);
+ lastOffsetRecord = offsetRecord;
+ }
+ }
+
+ private void exchangeFile() {
+ String timeBucket = String.valueOf(TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()));
+ String offsetFileName = OFFSET_FILE_PREFIX + "_" + timeBucket + "." + Const.FILE_SUFFIX;
+ File newOffsetFile = new File(SegmentBufferConfig.BUFFER_PATH + offsetFileName);
+ offsetFile.delete();
+ offsetFile = newOffsetFile;
+ this.flush();
+ }
+
+ public String getReadFileName() {
+ return offset.getReadOffset().getReadFileName();
+ }
+
+ public long getReadFileOffset() {
+ return offset.getReadOffset().getReadFileOffset();
+ }
+
+ public void setReadOffset(long readFileOffset) {
+ offset.getReadOffset().setReadFileOffset(readFileOffset);
+ }
+
+ public void setReadOffset(String readFileName, long readFileOffset) {
+ offset.getReadOffset().setReadFileName(readFileName);
+ offset.getReadOffset().setReadFileOffset(readFileOffset);
+ }
+
+ public String getWriteFileName() {
+ return offset.getWriteOffset().getWriteFileName();
+ }
+
+ public long getWriteFileOffset() {
+ return offset.getWriteOffset().getWriteFileOffset();
+ }
+
+ public void setWriteOffset(String writeFileName, long writeFileOffset) {
+ offset.getWriteOffset().setWriteFileName(writeFileName);
+ offset.getWriteOffset().setWriteFileOffset(writeFileOffset);
+ }
+
+ public void setWriteOffset(long writeFileOffset) {
+ offset.getWriteOffset().setWriteFileOffset(writeFileOffset);
+ }
+
+ class PrefixFileNameFilter implements FilenameFilter {
+ @Override public boolean accept(File dir, String name) {
+ if (name.startsWith(OFFSET_FILE_PREFIX)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java
new file mode 100644
index 000000000..30bf0eb7f
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+import org.skywalking.apm.collector.core.config.SystemConfig;
+
+/**
+ * @author pengys5
+ */
+public class SegmentBufferConfig {
+ public static String BUFFER_PATH = SystemConfig.DATA_PATH + "/buffer/";
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java
new file mode 100644
index 000000000..661f70084
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import org.skywalking.apm.collector.agentstream.config.BufferFileConfig;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.StringUtils;
+import org.skywalking.apm.collector.core.util.TimeBucketUtils;
+import org.skywalking.apm.network.proto.UpstreamSegment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public enum SegmentBufferManager {
+ INSTANCE;
+
+ private final Logger logger = LoggerFactory.getLogger(SegmentBufferManager.class);
+
+ public static final String DATA_FILE_PREFIX = "data";
+ private FileOutputStream outputStream;
+
+ public synchronized void initialize() {
+ logger.info("segment buffer initialize");
+ try {
+ OffsetManager.INSTANCE.initialize();
+ if (new File(SegmentBufferConfig.BUFFER_PATH).mkdirs()) {
+ newDataFile();
+ } else {
+ String writeFileName = OffsetManager.INSTANCE.getWriteFileName();
+ if (StringUtils.isNotEmpty(writeFileName)) {
+ File dataFile = new File(SegmentBufferConfig.BUFFER_PATH + writeFileName);
+ if (dataFile.exists()) {
+ outputStream = new FileOutputStream(new File(SegmentBufferConfig.BUFFER_PATH + writeFileName), true);
+ } else {
+ newDataFile();
+ }
+ } else {
+ newDataFile();
+ }
+ }
+ SegmentBufferReader.INSTANCE.initialize();
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ public synchronized void writeBuffer(UpstreamSegment segment) {
+ try {
+ segment.writeDelimitedTo(outputStream);
+ long position = outputStream.getChannel().position();
+ if (position > BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE) {
+ newDataFile();
+ } else {
+ OffsetManager.INSTANCE.setWriteOffset(position);
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ private void newDataFile() throws IOException {
+ logger.debug("create new segment buffer file");
+ String timeBucket = String.valueOf(TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()));
+ String writeFileName = DATA_FILE_PREFIX + "_" + timeBucket + "." + Const.FILE_SUFFIX;
+ File dataFile = new File(SegmentBufferConfig.BUFFER_PATH + writeFileName);
+ dataFile.createNewFile();
+ OffsetManager.INSTANCE.setWriteOffset(writeFileName, 0);
+ try {
+ if (outputStream != null) {
+ outputStream.close();
+ }
+ outputStream = new FileOutputStream(dataFile);
+ outputStream.getChannel().position(0);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ public synchronized void flush() {
+
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
new file mode 100644
index 000000000..775c6c9d6
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+import com.google.protobuf.CodedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import org.skywalking.apm.collector.agentstream.worker.segment.SegmentParse;
+import org.skywalking.apm.collector.core.util.CollectionUtils;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.StringUtils;
+import org.skywalking.apm.network.proto.UpstreamSegment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public enum SegmentBufferReader {
+ INSTANCE;
+
+ private final Logger logger = LoggerFactory.getLogger(SegmentBufferReader.class);
+ private InputStream inputStream;
+
+ public void initialize() {
+ Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(this::preRead, 3, 3, TimeUnit.SECONDS);
+ }
+
+ private void preRead() {
+ String readFileName = OffsetManager.INSTANCE.getReadFileName();
+ if (StringUtils.isNotEmpty(readFileName)) {
+ File readFile = new File(SegmentBufferConfig.BUFFER_PATH + readFileName);
+ if (readFile.exists()) {
+ deleteTheDataFilesBeforeReadFile(readFileName);
+ long readFileOffset = OffsetManager.INSTANCE.getReadFileOffset();
+ read(readFile, readFileOffset);
+ readEarliestCreateDataFile();
+ } else {
+ deleteTheDataFilesBeforeReadFile(readFileName);
+ readEarliestCreateDataFile();
+ }
+ } else {
+ readEarliestCreateDataFile();
+ }
+ }
+
+ private void deleteTheDataFilesBeforeReadFile(String readFileName) {
+ File[] dataFiles = new File(SegmentBufferConfig.BUFFER_PATH).listFiles(new PrefixFileNameFilter());
+
+ long readFileCreateTime = getFileCreateTime(readFileName);
+ for (File dataFile : dataFiles) {
+ long fileCreateTime = getFileCreateTime(dataFile.getName());
+ if (fileCreateTime < readFileCreateTime) {
+ dataFile.delete();
+ } else if (fileCreateTime == readFileCreateTime) {
+ break;
+ }
+ }
+ }
+
+ private long getFileCreateTime(String fileName) {
+ fileName = fileName.replace(SegmentBufferManager.DATA_FILE_PREFIX + "_", Const.EMPTY_STRING);
+ fileName = fileName.replace("." + Const.FILE_SUFFIX, Const.EMPTY_STRING);
+ return Long.valueOf(fileName);
+ }
+
+ private void readEarliestCreateDataFile() {
+ String readFileName = OffsetManager.INSTANCE.getReadFileName();
+ File[] dataFiles = new File(SegmentBufferConfig.BUFFER_PATH).listFiles(new PrefixFileNameFilter());
+
+ if (CollectionUtils.isNotEmpty(dataFiles)) {
+ if (dataFiles[0].getName().equals(readFileName)) {
+ return;
+ }
+ }
+
+ for (File dataFile : dataFiles) {
+ logger.debug("Reading segment buffer data file, file name: {}", dataFile.getAbsolutePath());
+ OffsetManager.INSTANCE.setReadOffset(dataFile.getName(), 0);
+ if (!read(dataFile, 0)) {
+ break;
+ }
+ }
+ }
+
+ private boolean read(File readFile, long readFileOffset) {
+ try {
+ inputStream = new FileInputStream(readFile);
+ inputStream.skip(readFileOffset);
+
+ String writeFileName = OffsetManager.INSTANCE.getWriteFileName();
+ long endPoint = readFile.length();
+ if (writeFileName.equals(readFile.getName())) {
+ endPoint = OffsetManager.INSTANCE.getWriteFileOffset();
+ }
+
+ while (readFile.length() > readFileOffset && readFileOffset < endPoint) {
+ UpstreamSegment upstreamSegment = UpstreamSegment.parser().parseDelimitedFrom(inputStream);
+ SegmentParse parse = new SegmentParse();
+ if (!parse.parse(upstreamSegment, SegmentParse.Source.Buffer)) {
+ return false;
+ }
+
+ final int serialized = upstreamSegment.getSerializedSize();
+ readFileOffset = readFileOffset + CodedOutputStream.computeUInt32SizeNoTag(serialized) + serialized;
+ logger.debug("read segment buffer from file: {}, offset: {}, file length: {}", readFile.getName(), readFileOffset, readFile.length());
+ OffsetManager.INSTANCE.setReadOffset(readFileOffset);
+ }
+
+ inputStream.close();
+ if (!writeFileName.equals(readFile.getName())) {
+ readFile.delete();
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ return false;
+ }
+ return true;
+ }
+
+ class PrefixFileNameFilter implements FilenameFilter {
+ @Override public boolean accept(File dir, String name) {
+ if (name.startsWith(SegmentBufferManager.DATA_FILE_PREFIX)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
index db928bfba..6b2209a73 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
@@ -24,6 +24,7 @@ import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener
import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.LocalSpanListener;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -32,14 +33,13 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
-public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListener, LocalSpanListener,FirstSpanListener {
+public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListener, LocalSpanListener, FirstSpanListener {
private final Logger logger = LoggerFactory.getLogger(SegmentCostSpanListener.class);
@@ -48,39 +48,42 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
private long timeBucket;
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime());
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
SegmentCostDataDefine.SegmentCost segmentCost = new SegmentCostDataDefine.SegmentCost();
segmentCost.setSegmentId(segmentId);
segmentCost.setApplicationId(applicationId);
- segmentCost.setCost(spanObject.getEndTime() - spanObject.getStartTime());
- segmentCost.setStartTime(spanObject.getStartTime());
- segmentCost.setEndTime(spanObject.getEndTime());
+ segmentCost.setCost(spanDecorator.getEndTime() - spanDecorator.getStartTime());
+ segmentCost.setStartTime(spanDecorator.getStartTime());
+ segmentCost.setEndTime(spanDecorator.getEndTime());
segmentCost.setId(segmentId);
- if (spanObject.getOperationNameId() == 0) {
- segmentCost.setServiceName(spanObject.getOperationName());
+ if (spanDecorator.getOperationNameId() == 0) {
+ segmentCost.setServiceName(spanDecorator.getOperationName());
} else {
- segmentCost.setServiceName(ServiceNameCache.get(spanObject.getOperationNameId()));
+ segmentCost.setServiceName(ServiceNameCache.get(spanDecorator.getOperationNameId()));
}
segmentCosts.add(segmentCost);
- isError = isError || spanObject.getIsError();
+ isError = isError || spanDecorator.getIsError();
}
@Override
- public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- isError = isError || spanObject.getIsError();
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ isError = isError || spanDecorator.getIsError();
}
@Override
- public void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- isError = isError || spanObject.getIsError();
+ public void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) {
+ isError = isError || spanDecorator.getIsError();
}
@Override
- public void parseLocal(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- isError = isError || spanObject.getIsError();
+ public void parseLocal(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ isError = isError || spanDecorator.getIsError();
}
@Override public void build() {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java
new file mode 100644
index 000000000..9a88718cc
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+/**
+ * @author pengys5
+ */
+public interface IdExchanger {
+ boolean exchange(T standardBuilder, int applicationId);
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java
new file mode 100644
index 000000000..17f86a0a6
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+import org.skywalking.apm.network.proto.RefType;
+import org.skywalking.apm.network.proto.TraceSegmentReference;
+import org.skywalking.apm.network.proto.UniqueId;
+
+/**
+ * @author pengys5
+ */
+public class ReferenceDecorator implements StandardBuilder {
+ private boolean isOrigin = true;
+ private StandardBuilder standardBuilder;
+ private TraceSegmentReference referenceObject;
+ private TraceSegmentReference.Builder referenceBuilder;
+
+ public ReferenceDecorator(TraceSegmentReference referenceObject, StandardBuilder standardBuilder) {
+ this.referenceObject = referenceObject;
+ this.standardBuilder = standardBuilder;
+ }
+
+ public ReferenceDecorator(TraceSegmentReference.Builder referenceBuilder, StandardBuilder standardBuilder) {
+ this.referenceBuilder = referenceBuilder;
+ this.standardBuilder = standardBuilder;
+ this.isOrigin = false;
+ }
+
+ public RefType getRefType() {
+ if (isOrigin) {
+ return referenceObject.getRefType();
+ } else {
+ return referenceBuilder.getRefType();
+ }
+ }
+
+ public int getRefTypeValue() {
+ if (isOrigin) {
+ return referenceObject.getRefTypeValue();
+ } else {
+ return referenceBuilder.getRefTypeValue();
+ }
+ }
+
+ public int getEntryServiceId() {
+ if (isOrigin) {
+ return referenceObject.getEntryServiceId();
+ } else {
+ return referenceBuilder.getEntryServiceId();
+ }
+ }
+
+ public void setEntryServiceId(int value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ referenceBuilder.setEntryServiceId(value);
+ }
+ }
+
+ public String getEntryServiceName() {
+ if (isOrigin) {
+ return referenceObject.getEntryServiceName();
+ } else {
+ return referenceBuilder.getEntryServiceName();
+ }
+ }
+
+ public void setEntryServiceName(String value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ referenceBuilder.setEntryServiceName(value);
+ }
+ }
+
+ public int getEntryApplicationInstanceId() {
+ if (isOrigin) {
+ return referenceObject.getEntryApplicationInstanceId();
+ } else {
+ return referenceBuilder.getEntryApplicationInstanceId();
+ }
+ }
+
+ public int getParentApplicationInstanceId() {
+ if (isOrigin) {
+ return referenceObject.getParentApplicationInstanceId();
+ } else {
+ return referenceBuilder.getParentApplicationInstanceId();
+ }
+ }
+
+ public int getParentServiceId() {
+ if (isOrigin) {
+ return referenceObject.getParentServiceId();
+ } else {
+ return referenceBuilder.getParentServiceId();
+ }
+ }
+
+ public void setParentServiceId(int value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ referenceBuilder.setParentServiceId(value);
+ }
+ }
+
+ public int getParentSpanId() {
+ if (isOrigin) {
+ return referenceObject.getParentSpanId();
+ } else {
+ return referenceBuilder.getParentSpanId();
+ }
+ }
+
+ public String getParentServiceName() {
+ if (isOrigin) {
+ return referenceObject.getParentServiceName();
+ } else {
+ return referenceBuilder.getParentServiceName();
+ }
+ }
+
+ public void setParentServiceName(String value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ referenceBuilder.setParentServiceName(value);
+ }
+ }
+
+ public UniqueId getParentTraceSegmentId() {
+ if (isOrigin) {
+ return referenceObject.getParentTraceSegmentId();
+ } else {
+ return referenceBuilder.getParentTraceSegmentId();
+ }
+ }
+
+ public int getNetworkAddressId() {
+ if (isOrigin) {
+ return referenceObject.getNetworkAddressId();
+ } else {
+ return referenceBuilder.getNetworkAddressId();
+ }
+ }
+
+ public void setNetworkAddressId(int value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ referenceBuilder.setNetworkAddressId(value);
+ }
+ }
+
+ public String getNetworkAddress() {
+ if (isOrigin) {
+ return referenceObject.getNetworkAddress();
+ } else {
+ return referenceBuilder.getNetworkAddress();
+ }
+ }
+
+ public void setNetworkAddress(String value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ referenceBuilder.setNetworkAddress(value);
+ }
+ }
+
+ @Override public void toBuilder() {
+ this.isOrigin = false;
+ referenceBuilder = referenceObject.toBuilder();
+ standardBuilder.toBuilder();
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
new file mode 100644
index 000000000..683ba5ff3
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+import org.skywalking.apm.collector.cache.ApplicationCache;
+import org.skywalking.apm.collector.cache.InstanceCache;
+import org.skywalking.apm.collector.cache.ServiceIdCache;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public class ReferenceIdExchanger implements IdExchanger {
+
+ private final Logger logger = LoggerFactory.getLogger(ReferenceIdExchanger.class);
+
+ private static ReferenceIdExchanger exchanger;
+
+ public static ReferenceIdExchanger getInstance() {
+ if (exchanger == null) {
+ exchanger = new ReferenceIdExchanger();
+ }
+ return exchanger;
+ }
+
+ @Override public boolean exchange(ReferenceDecorator standardBuilder, int applicationId) {
+ if (standardBuilder.getEntryServiceId() == 0 && StringUtils.isNotEmpty(standardBuilder.getEntryServiceName())) {
+ int entryServiceId = ServiceIdCache.get(InstanceCache.get(standardBuilder.getEntryApplicationInstanceId()), standardBuilder.getEntryServiceName());
+ if (entryServiceId == 0) {
+ return false;
+ } else {
+ standardBuilder.toBuilder();
+ standardBuilder.setEntryServiceId(entryServiceId);
+ standardBuilder.setEntryServiceName(Const.EMPTY_STRING);
+ }
+ }
+
+ if (standardBuilder.getParentServiceId() == 0 && StringUtils.isNotEmpty(standardBuilder.getParentServiceName())) {
+ int parentServiceId = ServiceIdCache.get(InstanceCache.get(standardBuilder.getParentApplicationInstanceId()), standardBuilder.getParentServiceName());
+ if (parentServiceId == 0) {
+ return false;
+ } else {
+ standardBuilder.toBuilder();
+ standardBuilder.setParentServiceId(parentServiceId);
+ standardBuilder.setParentServiceName(Const.EMPTY_STRING);
+ }
+ }
+
+ if (standardBuilder.getNetworkAddressId() == 0 && StringUtils.isNotEmpty(standardBuilder.getNetworkAddress())) {
+ int networkAddressId = ApplicationCache.get(standardBuilder.getNetworkAddress());
+ if (networkAddressId == 0) {
+ return false;
+ } else {
+ standardBuilder.toBuilder();
+ standardBuilder.setNetworkAddressId(networkAddressId);
+ standardBuilder.setNetworkAddress(Const.EMPTY_STRING);
+ }
+ }
+ return true;
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java
new file mode 100644
index 000000000..ca10618cd
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+import org.skywalking.apm.network.proto.TraceSegmentObject;
+import org.skywalking.apm.network.proto.UniqueId;
+
+/**
+ * @author pengys5
+ */
+public class SegmentDecorator implements StandardBuilder {
+ private boolean isOrigin = true;
+ private final TraceSegmentObject segmentObject;
+ private TraceSegmentObject.Builder segmentBuilder;
+
+ public SegmentDecorator(TraceSegmentObject segmentObject) {
+ this.segmentObject = segmentObject;
+ }
+
+ public int getApplicationId() {
+ return segmentObject.getApplicationId();
+ }
+
+ public int getApplicationInstanceId() {
+ return segmentObject.getApplicationInstanceId();
+ }
+
+ public UniqueId getTraceSegmentId() {
+ return segmentObject.getTraceSegmentId();
+ }
+
+ public int getSpansCount() {
+ return segmentObject.getSpansCount();
+ }
+
+ public SpanDecorator getSpans(int index) {
+ if (isOrigin) {
+ return new SpanDecorator(segmentObject.getSpans(index), this);
+ } else {
+ return new SpanDecorator(segmentBuilder.getSpansBuilder(index), this);
+ }
+ }
+
+ public int getRefsCount() {
+ return segmentObject.getRefsCount();
+ }
+
+ public ReferenceDecorator getRefs(int index) {
+ if (isOrigin) {
+ return new ReferenceDecorator(segmentObject.getRefs(index), this);
+ } else {
+ return new ReferenceDecorator(segmentBuilder.getRefsBuilder(index), this);
+ }
+ }
+
+ public byte[] toByteArray() {
+ if (isOrigin) {
+ return segmentObject.toByteArray();
+ } else {
+ return segmentBuilder.build().toByteArray();
+ }
+ }
+
+ @Override public void toBuilder() {
+ if (!isOrigin) {
+ this.isOrigin = false;
+ this.segmentBuilder = segmentObject.toBuilder();
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java
new file mode 100644
index 000000000..c46d59c66
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+import org.skywalking.apm.collector.agentstream.worker.segment.buffer.SegmentBufferManager;
+import org.skywalking.apm.collector.core.queue.EndOfBatchCommand;
+import org.skywalking.apm.collector.storage.define.DataDefine;
+import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker;
+import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
+import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
+import org.skywalking.apm.collector.stream.worker.Role;
+import org.skywalking.apm.collector.stream.worker.WorkerException;
+import org.skywalking.apm.collector.stream.worker.impl.FlushAndSwitch;
+import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
+import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
+import org.skywalking.apm.network.proto.UpstreamSegment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public class SegmentStandardizationWorker extends AbstractLocalAsyncWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(SegmentStandardizationWorker.class);
+
+ public SegmentStandardizationWorker(Role role, ClusterWorkerContext clusterContext) {
+ super(role, clusterContext);
+ }
+
+ @Override public void preStart() throws ProviderNotFoundException {
+ super.preStart();
+ SegmentBufferManager.INSTANCE.initialize();
+ }
+
+ @Override protected void onWork(Object message) throws WorkerException {
+ if (message instanceof FlushAndSwitch) {
+ SegmentBufferManager.INSTANCE.flush();
+ } else if (message instanceof EndOfBatchCommand) {
+ } else if (message instanceof UpstreamSegment) {
+ UpstreamSegment upstreamSegment = (UpstreamSegment)message;
+ SegmentBufferManager.INSTANCE.writeBuffer(upstreamSegment);
+ } else {
+ logger.error("unhandled message, message instance must UpstreamSegment, but is %s", message.getClass().toString());
+ }
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+ @Override
+ public Role role() {
+ return SegmentStandardizationWorker.WorkerRole.INSTANCE;
+ }
+
+ @Override
+ public SegmentStandardizationWorker workerInstance(ClusterWorkerContext clusterContext) {
+ return new SegmentStandardizationWorker(role(), clusterContext);
+ }
+
+ @Override public int queueSize() {
+ return 1024;
+ }
+ }
+
+ public enum WorkerRole implements Role {
+ INSTANCE;
+
+ @Override
+ public String roleName() {
+ return SegmentStandardizationWorker.class.getSimpleName();
+ }
+
+ @Override
+ public WorkerSelector workerSelector() {
+ return new ForeverFirstSelector();
+ }
+
+ @Override public DataDefine dataDefine() {
+ return null;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java
new file mode 100644
index 000000000..08319ea3e
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+import org.skywalking.apm.network.proto.SpanLayer;
+import org.skywalking.apm.network.proto.SpanObject;
+import org.skywalking.apm.network.proto.SpanType;
+
+/**
+ * @author pengys5
+ */
+public class SpanDecorator implements StandardBuilder {
+ private boolean isOrigin = true;
+ private StandardBuilder standardBuilder;
+ private SpanObject spanObject;
+ private SpanObject.Builder spanBuilder;
+
+ public SpanDecorator(SpanObject spanObject, StandardBuilder standardBuilder) {
+ this.spanObject = spanObject;
+ this.standardBuilder = standardBuilder;
+ }
+
+ public SpanDecorator(SpanObject.Builder spanBuilder, StandardBuilder standardBuilder) {
+ this.spanBuilder = spanBuilder;
+ this.standardBuilder = standardBuilder;
+ this.isOrigin = false;
+ }
+
+ public int getSpanId() {
+ if (isOrigin) {
+ return spanObject.getSpanId();
+ } else {
+ return spanBuilder.getSpanId();
+ }
+ }
+
+ public int getParentSpanId() {
+ if (isOrigin) {
+ return spanObject.getParentSpanId();
+ } else {
+ return spanBuilder.getParentSpanId();
+ }
+ }
+
+ public SpanType getSpanType() {
+ if (isOrigin) {
+ return spanObject.getSpanType();
+ } else {
+ return spanBuilder.getSpanType();
+ }
+ }
+
+ public int getSpanTypeValue() {
+ if (isOrigin) {
+ return spanObject.getSpanTypeValue();
+ } else {
+ return spanBuilder.getSpanTypeValue();
+ }
+ }
+
+ public SpanLayer getSpanLayer() {
+ if (isOrigin) {
+ return spanObject.getSpanLayer();
+ } else {
+ return spanBuilder.getSpanLayer();
+ }
+ }
+
+ public int getSpanLayerValue() {
+ if (isOrigin) {
+ return spanObject.getSpanLayerValue();
+ } else {
+ return spanBuilder.getSpanLayerValue();
+ }
+ }
+
+ public long getStartTime() {
+ if (isOrigin) {
+ return spanObject.getStartTime();
+ } else {
+ return spanBuilder.getStartTime();
+ }
+ }
+
+ public long getEndTime() {
+ if (isOrigin) {
+ return spanObject.getEndTime();
+ } else {
+ return spanBuilder.getEndTime();
+ }
+ }
+
+ public int getComponentId() {
+ if (isOrigin) {
+ return spanObject.getComponentId();
+ } else {
+ return spanBuilder.getComponentId();
+ }
+ }
+
+ public String getComponent() {
+ if (isOrigin) {
+ return spanObject.getComponent();
+ } else {
+ return spanBuilder.getComponent();
+ }
+ }
+
+ public int getPeerId() {
+ if (isOrigin) {
+ return spanObject.getPeerId();
+ } else {
+ return spanBuilder.getPeerId();
+ }
+ }
+
+ public void setPeerId(int peerId) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ spanBuilder.setPeerId(peerId);
+ }
+ }
+
+ public String getPeer() {
+ if (isOrigin) {
+ return spanObject.getPeer();
+ } else {
+ return spanBuilder.getPeer();
+ }
+ }
+
+ public void setPeer(String peer) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ spanBuilder.setPeer(peer);
+ }
+ }
+
+ public int getOperationNameId() {
+ if (isOrigin) {
+ return spanObject.getOperationNameId();
+ } else {
+ return spanBuilder.getOperationNameId();
+ }
+ }
+
+ public void setOperationNameId(int value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ spanBuilder.setOperationNameId(value);
+ }
+ }
+
+ public String getOperationName() {
+ if (isOrigin) {
+ return spanObject.getOperationName();
+ } else {
+ return spanBuilder.getOperationName();
+ }
+ }
+
+ public void setOperationName(String value) {
+ if (isOrigin) {
+ toBuilder();
+ } else {
+ spanBuilder.setOperationName(value);
+ }
+ }
+
+ public boolean getIsError() {
+ if (isOrigin) {
+ return spanObject.getIsError();
+ } else {
+ return spanBuilder.getIsError();
+ }
+ }
+
+ @Override public void toBuilder() {
+ this.isOrigin = false;
+ spanBuilder = spanObject.toBuilder();
+ standardBuilder.toBuilder();
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
new file mode 100644
index 000000000..2ab1c056f
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+import org.skywalking.apm.collector.cache.ApplicationCache;
+import org.skywalking.apm.collector.cache.ServiceIdCache;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.StringUtils;
+
+/**
+ * @author pengys5
+ */
+public class SpanIdExchanger implements IdExchanger {
+
+ private static SpanIdExchanger exchanger;
+
+ public static SpanIdExchanger getInstance() {
+ if (exchanger == null) {
+ exchanger = new SpanIdExchanger();
+ }
+ return exchanger;
+ }
+
+ @Override public boolean exchange(SpanDecorator standardBuilder, int applicationId) {
+ if (standardBuilder.getPeerId() == 0 && StringUtils.isNotEmpty(standardBuilder.getPeer())) {
+ int peerId = ApplicationCache.get(standardBuilder.getPeer());
+ if (peerId == 0) {
+ return false;
+ } else {
+ standardBuilder.toBuilder();
+ standardBuilder.setPeerId(peerId);
+ standardBuilder.setPeer(Const.EMPTY_STRING);
+ }
+ }
+
+ if (standardBuilder.getOperationNameId() == 0 && StringUtils.isNotEmpty(standardBuilder.getOperationName())) {
+ int operationNameId = ServiceIdCache.get(applicationId, standardBuilder.getOperationName());
+ if (operationNameId == 0) {
+ return false;
+ } else {
+ standardBuilder.toBuilder();
+ standardBuilder.setOperationNameId(operationNameId);
+ standardBuilder.setOperationName(Const.EMPTY_STRING);
+ }
+ }
+ return true;
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java
new file mode 100644
index 000000000..2ab7eb43f
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+
+/**
+ * @author pengys5
+ */
+public interface StandardBuilder {
+ void toBuilder();
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
index b5ba0add2..b33b2ffc0 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
@@ -21,7 +21,8 @@ package org.skywalking.apm.collector.agentstream.worker.service.entry;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
-import org.skywalking.apm.collector.cache.ServiceNameCache;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -30,8 +31,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
-import org.skywalking.apm.network.proto.TraceSegmentReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,29 +45,25 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
private boolean hasReference = false;
private int applicationId;
private int entryServiceId;
- private String entryServiceName;
private boolean hasEntry = false;
@Override
- public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
this.applicationId = applicationId;
- this.entryServiceId = spanObject.getOperationNameId();
- if (spanObject.getOperationNameId() == 0) {
- this.entryServiceName = spanObject.getOperationName();
- } else {
- this.entryServiceName = ServiceNameCache.get(this.entryServiceId);
- }
+ this.entryServiceId = spanDecorator.getOperationNameId();
this.hasEntry = true;
}
- @Override public void parseRef(TraceSegmentReference reference, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
hasReference = true;
}
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime());
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
@@ -76,10 +71,9 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
if (!hasReference && hasEntry) {
ServiceEntryDataDefine.ServiceEntry serviceEntry = new ServiceEntryDataDefine.ServiceEntry();
- serviceEntry.setId(applicationId + Const.ID_SPLIT + entryServiceName);
+ serviceEntry.setId(applicationId + Const.ID_SPLIT + entryServiceId);
serviceEntry.setApplicationId(applicationId);
serviceEntry.setEntryServiceId(entryServiceId);
- serviceEntry.setEntryServiceName(entryServiceName);
serviceEntry.setRegisterTime(timeBucket);
serviceEntry.setNewestTime(timeBucket);
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
index 421b2b379..d75d55c31 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
@@ -23,7 +23,8 @@ import java.util.List;
import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
-import org.skywalking.apm.collector.cache.InstanceCache;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -32,8 +33,6 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.SpanObject;
-import org.skywalking.apm.network.proto.TraceSegmentReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,9 +43,8 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
private final Logger logger = LoggerFactory.getLogger(ServiceReferenceSpanListener.class);
- private List referenceServices = new LinkedList<>();
+ private List referenceServices = new LinkedList<>();
private int serviceId = 0;
- private String serviceName = "";
private long startTime = 0;
private long endTime = 0;
private boolean isError = false;
@@ -54,26 +52,23 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
private boolean hasEntry = false;
@Override
- public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime());
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
- @Override public void parseRef(TraceSegmentReference reference, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
String segmentId) {
- referenceServices.add(reference);
+ referenceServices.add(referenceDecorator);
}
@Override
- public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) {
- serviceId = spanObject.getOperationNameId();
- if (spanObject.getOperationNameId() == 0) {
- serviceName = String.valueOf(applicationId) + Const.ID_SPLIT + spanObject.getOperationName();
- } else {
- serviceName = Const.EMPTY_STRING;
- }
- startTime = spanObject.getStartTime();
- endTime = spanObject.getEndTime();
- isError = spanObject.getIsError();
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ String segmentId) {
+ serviceId = spanDecorator.getOperationNameId();
+ startTime = spanDecorator.getStartTime();
+ endTime = spanDecorator.getEndTime();
+ isError = spanDecorator.getIsError();
this.hasEntry = true;
}
@@ -105,71 +100,39 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
referenceServices.forEach(reference -> {
ServiceReferenceDataDefine.ServiceReference serviceReference = new ServiceReferenceDataDefine.ServiceReference();
int entryServiceId = reference.getEntryServiceId();
- String entryServiceName = buildServiceName(reference.getEntryApplicationInstanceId(), reference.getEntryServiceId(), reference.getEntryServiceName());
-
int frontServiceId = reference.getParentServiceId();
- String frontServiceName = buildServiceName(reference.getParentApplicationInstanceId(), reference.getParentServiceId(), reference.getParentServiceName());
-
int behindServiceId = serviceId;
- String behindServiceName = serviceName;
-
calculateCost(serviceReference, startTime, endTime, isError);
- logger.debug("has reference, entryServiceId: {}, entryServiceName: {}", entryServiceId, entryServiceName);
- sendToAggregationWorker(context, serviceReference, entryServiceId, entryServiceName, frontServiceId, frontServiceName, behindServiceId, behindServiceName);
+ logger.debug("has reference, entryServiceId: {}", entryServiceId);
+ sendToAggregationWorker(context, serviceReference, entryServiceId, frontServiceId, behindServiceId);
});
} else {
ServiceReferenceDataDefine.ServiceReference serviceReference = new ServiceReferenceDataDefine.ServiceReference();
int entryServiceId = serviceId;
- String entryServiceName = serviceName;
-
int frontServiceId = Const.NONE_SERVICE_ID;
- String frontServiceName = Const.EMPTY_STRING;
-
int behindServiceId = serviceId;
- String behindServiceName = serviceName;
calculateCost(serviceReference, startTime, endTime, isError);
- sendToAggregationWorker(context, serviceReference, entryServiceId, entryServiceName, frontServiceId, frontServiceName, behindServiceId, behindServiceName);
+ sendToAggregationWorker(context, serviceReference, entryServiceId, frontServiceId, behindServiceId);
}
}
}
private void sendToAggregationWorker(StreamModuleContext context,
- ServiceReferenceDataDefine.ServiceReference serviceReference, int entryServiceId, String entryServiceName,
- int frontServiceId, String frontServiceName, int behindServiceId, String behindServiceName) {
-
+ ServiceReferenceDataDefine.ServiceReference serviceReference, int entryServiceId, int frontServiceId,
+ int behindServiceId) {
StringBuilder idBuilder = new StringBuilder();
idBuilder.append(timeBucket).append(Const.ID_SPLIT);
- if (entryServiceId == 0) {
- idBuilder.append(entryServiceName).append(Const.ID_SPLIT);
- serviceReference.setEntryServiceId(0);
- serviceReference.setEntryServiceName(entryServiceName);
- } else {
- idBuilder.append(entryServiceId).append(Const.ID_SPLIT);
- serviceReference.setEntryServiceId(entryServiceId);
- serviceReference.setEntryServiceName(Const.EMPTY_STRING);
- }
- if (frontServiceId == 0) {
- idBuilder.append(frontServiceName).append(Const.ID_SPLIT);
- serviceReference.setFrontServiceId(0);
- serviceReference.setFrontServiceName(frontServiceName);
- } else {
- idBuilder.append(frontServiceId).append(Const.ID_SPLIT);
- serviceReference.setFrontServiceId(frontServiceId);
- serviceReference.setFrontServiceName(Const.EMPTY_STRING);
- }
+ idBuilder.append(entryServiceId).append(Const.ID_SPLIT);
+ serviceReference.setEntryServiceId(entryServiceId);
- if (behindServiceId == 0) {
- idBuilder.append(behindServiceName);
- serviceReference.setBehindServiceId(0);
- serviceReference.setBehindServiceName(behindServiceName);
- } else {
- idBuilder.append(behindServiceId);
- serviceReference.setBehindServiceId(behindServiceId);
- serviceReference.setBehindServiceName(Const.EMPTY_STRING);
- }
+ idBuilder.append(frontServiceId).append(Const.ID_SPLIT);
+ serviceReference.setFrontServiceId(frontServiceId);
+
+ idBuilder.append(behindServiceId);
+ serviceReference.setBehindServiceId(behindServiceId);
serviceReference.setId(idBuilder.toString());
serviceReference.setTimeBucket(timeBucket);
@@ -180,13 +143,4 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
logger.error(e.getMessage(), e);
}
}
-
- private String buildServiceName(int instanceId, int serviceId, String serviceName) {
- if (serviceId == 0) {
- int applicationId = InstanceCache.get(instanceId);
- return String.valueOf(applicationId) + Const.ID_SPLIT + serviceName;
- } else {
- return Const.EMPTY_STRING;
- }
- }
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java
new file mode 100644
index 000000000..ab70f6288
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.util;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import org.skywalking.apm.collector.core.util.Const;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public enum FileUtils {
+ INSTANCE;
+
+ private final Logger logger = LoggerFactory.getLogger(FileUtils.class);
+
+ public String readLastLine(File file) {
+ RandomAccessFile randomAccessFile = null;
+ try {
+ randomAccessFile = new RandomAccessFile(file, "r");
+ long length = randomAccessFile.length();
+ if (length == 0) {
+ return Const.EMPTY_STRING;
+ } else {
+ long position = length - 1;
+ randomAccessFile.seek(position);
+ while (position >= 0) {
+ if (randomAccessFile.read() == '\n') {
+ return randomAccessFile.readLine();
+ }
+ randomAccessFile.seek(position);
+ if (position == 0) {
+ return randomAccessFile.readLine();
+ }
+ position--;
+ }
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ } finally {
+ if (randomAccessFile != null) {
+ try {
+ randomAccessFile.close();
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ }
+ return Const.EMPTY_STRING;
+ }
+
+ public void writeAppendToLast(File file, RandomAccessFile randomAccessFile, String value) {
+ if (randomAccessFile == null) {
+ try {
+ randomAccessFile = new RandomAccessFile(file, "rwd");
+ } catch (FileNotFoundException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ try {
+ long length = randomAccessFile.length();
+ randomAccessFile.seek(length);
+ randomAccessFile.writeBytes(System.lineSeparator());
+ randomAccessFile.writeBytes(value);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define
index 638630fa1..465adeac2 100644
--- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define
+++ b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define
@@ -15,6 +15,8 @@ org.skywalking.apm.collector.agentstream.worker.serviceref.ServiceReferencePersi
org.skywalking.apm.collector.agentstream.worker.segment.origin.SegmentPersistenceWorker$Factory
org.skywalking.apm.collector.agentstream.worker.segment.cost.SegmentCostPersistenceWorker$Factory
+org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentStandardizationWorker$Factory
+
org.skywalking.apm.collector.agentstream.worker.global.GlobalTracePersistenceWorker$Factory
org.skywalking.apm.collector.agentstream.worker.instance.performance.InstPerformancePersistenceWorker$Factory
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java
index 30bb96150..e23634e30 100644
--- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java
+++ b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java
@@ -21,6 +21,7 @@ package org.skywalking.apm.collector.agentstream.grpc.handler;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.stub.StreamObserver;
+import org.junit.Test;
import org.skywalking.apm.network.proto.Downstream;
import org.skywalking.apm.network.proto.KeyWithStringValue;
import org.skywalking.apm.network.proto.LogMessage;
@@ -45,6 +46,7 @@ public class TraceSegmentServiceHandlerTestCase {
private TraceSegmentServiceGrpc.TraceSegmentServiceStub stub;
+ @Test
public void testCollect() {
ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext(true).build();
stub = TraceSegmentServiceGrpc.newStub(channel);
@@ -70,7 +72,7 @@ public class TraceSegmentServiceHandlerTestCase {
streamObserver.onCompleted();
try {
- Thread.sleep(30000);
+ Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
index 3c6b63dc6..37217f203 100644
--- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
+++ b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
@@ -60,6 +60,8 @@ public class SegmentPost {
applicationEsDAO.save(consumerApplication);
ApplicationDataDefine.Application providerApplication = new ApplicationDataDefine.Application("3", "dubbox-provider", 3);
applicationEsDAO.save(providerApplication);
+// ApplicationDataDefine.Application peer = new ApplicationDataDefine.Application("4", "172.25.0.4:20880", 4);
+// applicationEsDAO.save(peer);
ServiceNameEsDAO serviceNameEsDAO = new ServiceNameEsDAO();
serviceNameEsDAO.setClient(client);
@@ -84,6 +86,7 @@ public class SegmentPost {
DIFF = 0;
Thread.sleep(1000);
+ break;
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/ExchangeMarkUtils.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java
similarity index 76%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/ExchangeMarkUtils.java
rename to apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java
index e67314a79..36cb156ac 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/ExchangeMarkUtils.java
+++ b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java
@@ -16,17 +16,16 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.util;
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+import org.junit.Test;
/**
* @author pengys5
*/
-public enum ExchangeMarkUtils {
- INSTANCE;
+public class OffsetManagerTestCase {
- private static final String MARK_TAG = "M";
-
- public String buildMarkedID(int id) {
- return MARK_TAG + id;
+ @Test
+ public void test() {
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java
new file mode 100644
index 000000000..bb7331059
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+
+import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentStandardizationWorker;
+import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
+import org.skywalking.apm.collector.stream.worker.WorkerException;
+import org.skywalking.apm.network.proto.SpanLayer;
+import org.skywalking.apm.network.proto.SpanObject;
+import org.skywalking.apm.network.proto.SpanType;
+import org.skywalking.apm.network.proto.TraceSegmentObject;
+import org.skywalking.apm.network.proto.UniqueId;
+import org.skywalking.apm.network.proto.UpstreamSegment;
+import org.skywalking.apm.network.trace.component.ComponentsDefine;
+
+/**
+ * @author pengys5
+ */
+public class SegmentBufferWriteWorkerTestCase {
+
+ public static void main(String[] args) throws WorkerException, ProviderNotFoundException {
+ SegmentBufferConfig.BUFFER_PATH = "/Users/pengys5/code/sky-walking/sky-walking/apm-collector/buffer/";
+
+ SegmentStandardizationWorker worker = new SegmentStandardizationWorker(null, null);
+ worker.preStart();
+ worker.allocateJob(buildSegment());
+ worker.allocateJob(buildSegment());
+ worker.allocateJob(buildSegment());
+ worker.allocateJob(buildSegment());
+ worker.allocateJob(buildSegment());
+ }
+
+ private static UpstreamSegment buildSegment() {
+ long now = System.currentTimeMillis();
+
+ int id = 1;
+ UniqueId.Builder builder = UniqueId.newBuilder();
+ builder.addIdParts(id);
+ builder.addIdParts(id);
+ builder.addIdParts(id);
+ UniqueId segmentId = builder.build();
+
+ UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder();
+ upstream.addGlobalTraceIds(segmentId);
+
+ TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder();
+ segmentBuilder.setApplicationId(1);
+ segmentBuilder.setApplicationInstanceId(1);
+ segmentBuilder.setTraceSegmentId(segmentId);
+
+ SpanObject.Builder entrySpan = SpanObject.newBuilder();
+ entrySpan.setSpanId(0);
+ entrySpan.setSpanType(SpanType.Entry);
+ entrySpan.setSpanLayer(SpanLayer.Http);
+ entrySpan.setParentSpanId(-1);
+ entrySpan.setStartTime(now);
+ entrySpan.setEndTime(now + 3000);
+ entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId());
+ entrySpan.setOperationNameId(1);
+ entrySpan.setIsError(false);
+ segmentBuilder.addSpans(entrySpan);
+
+ SpanObject.Builder exitSpan = SpanObject.newBuilder();
+ exitSpan.setSpanId(1);
+ exitSpan.setSpanType(SpanType.Exit);
+ exitSpan.setSpanLayer(SpanLayer.Database);
+ exitSpan.setParentSpanId(0);
+ exitSpan.setStartTime(now);
+ exitSpan.setEndTime(now + 3000);
+ exitSpan.setComponentId(ComponentsDefine.MONGODB.getId());
+ exitSpan.setOperationNameId(2);
+ exitSpan.setIsError(false);
+ exitSpan.setPeer("localhost:8888");
+ segmentBuilder.addSpans(exitSpan);
+
+ upstream.setSegment(segmentBuilder.build().toByteString());
+ return upstream.build();
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml b/apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml
new file mode 100644
index 000000000..d36a4408f
--- /dev/null
+++ b/apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java
index d003e210f..c7cf02009 100644
--- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java
+++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java
@@ -19,6 +19,7 @@
package org.skywalking.apm.collector.boot;
import org.skywalking.apm.collector.core.CollectorException;
+import org.skywalking.apm.collector.core.config.SystemConfigParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,6 +32,7 @@ public class CollectorBootStartUp {
public static void main(String[] args) throws CollectorException {
logger.info("collector starting...");
+ SystemConfigParser.INSTANCE.parse();
CollectorStarter starter = new CollectorStarter();
starter.start();
logger.info("collector start successful.");
diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java
index afc1f0cd3..6af1db391 100644
--- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java
+++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java
@@ -53,6 +53,9 @@ public class CollectorStarter implements Starter {
ServerHolder serverHolder = new ServerHolder();
for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) {
+ if (moduleGroupDefine.groupConfigParser() != null) {
+ moduleGroupDefine.groupConfigParser().parse(configuration.get(moduleGroupDefine.name()));
+ }
moduleGroupDefine.moduleInstaller().injectConfiguration(configuration.get(moduleGroupDefine.name()), moduleDefineMap.get(moduleGroupDefine.name()));
moduleGroupDefine.moduleInstaller().injectServerHolder(serverHolder);
moduleGroupDefine.moduleInstaller().preInstall();
diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml
index c9e94f239..18014b05d 100644
--- a/apm-collector/apm-collector-boot/src/main/resources/application.yml
+++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml
@@ -15,6 +15,9 @@ agent_stream:
host: localhost
port: 12800
context_path: /
+ config:
+ buffer_offset_max_file_size: 1k
+ buffer_segment_max_file_size: 10k
ui:
jetty:
host: localhost
diff --git a/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml b/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml
index 16e66109e..a79b45677 100644
--- a/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml
+++ b/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml
@@ -17,7 +17,7 @@
~ Project repository: https://github.com/OpenSkywalking/skywalking
-->
-
+
@@ -27,7 +27,8 @@
-
+
+
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
index 0dade5deb..8bf3476ad 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
@@ -22,28 +22,31 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.skywalking.apm.collector.cache.dao.IApplicationDAO;
import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public class ApplicationCache {
+ private static final Logger logger = LoggerFactory.getLogger(ApplicationCache.class);
+
private static Cache CODE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build();
public static int get(String applicationCode) {
+ IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
+
int applicationId = 0;
try {
- applicationId = CODE_CACHE.get(applicationCode, () -> {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- return dao.getApplicationId(applicationCode);
- });
+ applicationId = CODE_CACHE.get(applicationCode, () -> dao.getApplicationId(applicationCode));
} catch (Throwable e) {
- return applicationId;
+ logger.error(e.getMessage(), e);
}
if (applicationId == 0) {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
applicationId = dao.getApplicationId(applicationCode);
if (applicationId != 0) {
CODE_CACHE.put(applicationCode, applicationId);
@@ -55,22 +58,20 @@ public class ApplicationCache {
private static Cache ID_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
public static String get(int applicationId) {
- try {
- return ID_CACHE.get(applicationId, () -> {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- return dao.getApplicationCode(applicationId);
- });
- } catch (Throwable e) {
- return Const.EXCEPTION;
- }
- }
+ IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- public static String getForUI(int applicationId) {
- String applicationCode = get(applicationId);
- if (applicationCode.equals("Unknown")) {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
+ String applicationCode = Const.EMPTY_STRING;
+ try {
+ applicationCode = ID_CACHE.get(applicationId, () -> dao.getApplicationCode(applicationId));
+ } catch (Throwable e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ if (StringUtils.isEmpty(applicationCode)) {
applicationCode = dao.getApplicationCode(applicationId);
- ID_CACHE.put(applicationId, applicationCode);
+ if (StringUtils.isNotEmpty(applicationCode)) {
+ CODE_CACHE.put(applicationCode, applicationId);
+ }
}
return applicationCode;
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
index b1010ca94..92511a268 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
@@ -22,22 +22,34 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.skywalking.apm.collector.cache.dao.IInstanceDAO;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public class InstanceCache {
- private static Cache CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build();
+ private static final Logger logger = LoggerFactory.getLogger(InstanceCache.class);
+
+ private static Cache INSTANCE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build();
public static int get(int applicationInstanceId) {
+ IInstanceDAO dao = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
+
+ int applicationId = 0;
try {
- return CACHE.get(applicationInstanceId, () -> {
- IInstanceDAO dao = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
- return dao.getApplicationId(applicationInstanceId);
- });
+ applicationId = INSTANCE_CACHE.get(applicationInstanceId, () -> dao.getApplicationId(applicationInstanceId));
} catch (Throwable e) {
- return 0;
+ logger.error(e.getMessage(), e);
}
+
+ if (applicationId == 0) {
+ applicationId = dao.getApplicationId(applicationInstanceId);
+ if (applicationId != 0) {
+ INSTANCE_CACHE.put(applicationInstanceId, applicationId);
+ }
+ }
+ return applicationId;
}
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
index b7ebd4e7c..1688f5166 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
@@ -23,32 +23,34 @@ import com.google.common.cache.CacheBuilder;
import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public class ServiceIdCache {
+ private static final Logger logger = LoggerFactory.getLogger(ServiceIdCache.class);
+
//TODO size configuration
- private static Cache CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
+ private static Cache SERVICE_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
public static int get(int applicationId, String serviceName) {
- try {
- return CACHE.get(applicationId + Const.ID_SPLIT + serviceName, () -> {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- return dao.getServiceId(applicationId, serviceName);
- });
- } catch (Throwable e) {
- return 0;
- }
- }
+ IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
+
+ int serviceId = 0;
+ try {
+ serviceId = SERVICE_CACHE.get(applicationId + Const.ID_SPLIT + serviceName, () -> dao.getServiceId(applicationId, serviceName));
+ } catch (Throwable e) {
+ logger.error(e.getMessage(), e);
+ }
- public static int getForUI(int applicationId, String serviceName) {
- int serviceId = get(applicationId, serviceName);
if (serviceId == 0) {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
serviceId = dao.getServiceId(applicationId, serviceName);
- CACHE.put(applicationId + Const.ID_SPLIT + serviceName, serviceId);
+ if (serviceId != 0) {
+ SERVICE_CACHE.put(applicationId + Const.ID_SPLIT + serviceName, serviceId);
+ }
}
return serviceId;
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
index 0d4b7c572..1ba962f6e 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
@@ -22,34 +22,38 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public class ServiceNameCache {
+ private static final Logger logger = LoggerFactory.getLogger(ServiceNameCache.class);
+
//TODO size configuration
private static Cache CACHE = CacheBuilder.newBuilder().maximumSize(10000).build();
public static String get(int serviceId) {
- try {
- return CACHE.get(serviceId, () -> {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- return dao.getServiceName(serviceId);
- });
- } catch (Throwable e) {
- return Const.EXCEPTION;
- }
- }
+ IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- public static String getForUI(int serviceId) {
- String serviceName = get(serviceId);
- if (serviceName.equals("Unknown")) {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- serviceName = dao.getServiceName(serviceId);
- CACHE.put(serviceId, serviceName);
+ String serviceName = Const.EMPTY_STRING;
+ try {
+ serviceName = CACHE.get(serviceId, () -> dao.getServiceName(serviceId));
+ } catch (Throwable e) {
+ logger.error(e.getMessage(), e);
}
+
+ if (StringUtils.isEmpty(serviceName)) {
+ serviceName = dao.getServiceName(serviceId);
+ if (StringUtils.isNotEmpty(serviceName)) {
+ CACHE.put(serviceId, serviceName);
+ }
+ }
+
return serviceName;
}
}
diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java
index 78627ed9e..0873d9677 100644
--- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java
+++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java
@@ -19,6 +19,7 @@
package org.skywalking.apm.collector.cluster;
import org.skywalking.apm.collector.core.cluster.ClusterModuleContext;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -46,4 +47,8 @@ public class ClusterModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return null;
+ }
}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java
new file mode 100644
index 000000000..a308c663b
--- /dev/null
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.core.config;
+
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public interface GroupConfigParser {
+ String NODE_NAME = "config";
+
+ void parse(Map config);
+}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfig.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfig.java
new file mode 100644
index 000000000..742b856f2
--- /dev/null
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfig.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.core.config;
+
+/**
+ * @author pengys5
+ */
+public class SystemConfig {
+ public static String DATA_PATH = "../data";
+}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java
new file mode 100644
index 000000000..82aa62989
--- /dev/null
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.core.config;
+
+import org.skywalking.apm.collector.core.util.StringUtils;
+
+/**
+ * @author pengys5
+ */
+public enum SystemConfigParser {
+ INSTANCE;
+
+ private static final String DATA_PATH = "data.path";
+
+ public void parse() {
+ if (!StringUtils.isEmpty(System.getProperty(DATA_PATH))) {
+ SystemConfig.DATA_PATH = System.getProperty(DATA_PATH);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java
index e918347c0..223bd427d 100644
--- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java
@@ -36,11 +36,11 @@ public abstract class CommonModuleInstaller implements ModuleInstaller {
this.moduleDefineMap = moduleDefineMap;
}
- protected final Map getModuleConfig() {
+ final Map getModuleConfig() {
return moduleConfig;
}
- protected final Map getModuleDefineMap() {
+ final Map getModuleDefineMap() {
return moduleDefineMap;
}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.java
index 739418ac2..48ed3bae3 100644
--- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.java
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.core.module;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
/**
@@ -29,4 +30,6 @@ public interface ModuleGroupDefine {
Context groupContext();
ModuleInstaller moduleInstaller();
+
+ GroupConfigParser groupConfigParser();
}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleCommonModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java
similarity index 95%
rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleCommonModuleInstaller.java
rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java
index ab4f3a310..89899f6ef 100644
--- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleCommonModuleInstaller.java
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java
@@ -37,11 +37,11 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
-public abstract class MultipleCommonModuleInstaller extends CommonModuleInstaller {
+public abstract class MultipleModuleInstaller extends CommonModuleInstaller {
- private final Logger logger = LoggerFactory.getLogger(MultipleCommonModuleInstaller.class);
+ private final Logger logger = LoggerFactory.getLogger(MultipleModuleInstaller.class);
- public MultipleCommonModuleInstaller() {
+ public MultipleModuleInstaller() {
moduleDefines = new LinkedList<>();
}
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java
index 95788cd3f..21f31856b 100644
--- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java
@@ -31,4 +31,5 @@ public class Const {
public static final String UNKNOWN = "Unknown";
public static final String EXCEPTION = "Exception";
public static final String EMPTY_STRING = "";
+ public static final String FILE_SUFFIX = "sw";
}
diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java
index 69b663b1b..d207e7753 100644
--- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java
+++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.queue;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -45,4 +46,8 @@ public class QueueModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return null;
+ }
}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java
index e04244f67..84731ae82 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.storage;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -45,4 +46,8 @@ public class StorageModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return null;
+ }
}
diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java
index d08084dbd..dd590dd69 100644
--- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java
+++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.stream;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -45,4 +46,8 @@ public class StreamModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return null;
+ }
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java
index 4bdaf092e..9ac9de5ad 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java
@@ -18,6 +18,7 @@
package org.skywalking.apm.collector.ui;
+import org.skywalking.apm.collector.core.config.GroupConfigParser;
import org.skywalking.apm.collector.core.framework.Context;
import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
import org.skywalking.apm.collector.core.module.ModuleInstaller;
@@ -28,10 +29,10 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller;
public class UIModuleGroupDefine implements ModuleGroupDefine {
public static final String GROUP_NAME = "ui";
- private final UICommonModuleInstaller installer;
+ private final UIModuleInstaller installer;
public UIModuleGroupDefine() {
- installer = new UICommonModuleInstaller();
+ installer = new UIModuleInstaller();
}
@Override public String name() {
@@ -45,4 +46,8 @@ public class UIModuleGroupDefine implements ModuleGroupDefine {
@Override public ModuleInstaller moduleInstaller() {
return installer;
}
+
+ @Override public GroupConfigParser groupConfigParser() {
+ return null;
+ }
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UICommonModuleInstaller.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java
similarity index 87%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UICommonModuleInstaller.java
rename to apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java
index 090a30245..19e516d6a 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UICommonModuleInstaller.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java
@@ -20,12 +20,12 @@ package org.skywalking.apm.collector.ui;
import java.util.List;
import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller;
+import org.skywalking.apm.collector.core.module.MultipleModuleInstaller;
/**
* @author pengys5
*/
-public class UICommonModuleInstaller extends MultipleCommonModuleInstaller {
+public class UIModuleInstaller extends MultipleModuleInstaller {
@Override public String groupName() {
return UIModuleGroupDefine.GROUP_NAME;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
index 04d0c190d..4401ce9cd 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
@@ -112,7 +112,7 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
JsonObject application = new JsonObject();
application.addProperty("applicationId", applicationId);
- application.addProperty("applicationCode", ApplicationCache.getForUI(applicationId));
+ application.addProperty("applicationCode", ApplicationCache.get(applicationId));
application.addProperty("instanceCount", instanceCount.getValue());
applications.add(application);
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java
index c0866c8a9..1b57d9440 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java
@@ -106,7 +106,7 @@ public class NodeComponentEsDAO extends EsDAO implements INodeComponentDAO {
int peerId = peerIdBucket.getKeyAsNumber().intValue();
if (peerId != 0) {
- String peer = ApplicationCache.getForUI(peerId);
+ String peer = ApplicationCache.get(peerId);
JsonObject nodeComponentObj = new JsonObject();
nodeComponentObj.addProperty("componentName", componentName);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java
index 8e3c4eea3..70ee47a59 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java
@@ -58,11 +58,11 @@ public class NodeMappingEsDAO extends EsDAO implements INodeMappingDAO {
JsonArray nodeMappingArray = new JsonArray();
for (Terms.Bucket applicationIdBucket : applicationIdTerms.getBuckets()) {
int applicationId = applicationIdBucket.getKeyAsNumber().intValue();
- String applicationCode = ApplicationCache.getForUI(applicationId);
+ String applicationCode = ApplicationCache.get(applicationId);
Terms addressIdTerms = applicationIdBucket.getAggregations().get(NodeMappingTable.COLUMN_ADDRESS_ID);
for (Terms.Bucket addressIdBucket : addressIdTerms.getBuckets()) {
int addressId = addressIdBucket.getKeyAsNumber().intValue();
- String address = ApplicationCache.getForUI(addressId);
+ String address = ApplicationCache.get(addressId);
if (addressId != 0) {
JsonObject nodeMappingObj = new JsonObject();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java
index 4599a6979..2a7f7c0d4 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java
@@ -72,13 +72,13 @@ public class NodeReferenceEsDAO extends EsDAO implements INodeReferenceDAO {
Terms frontApplicationIdTerms = searchResponse.getAggregations().get(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID);
for (Terms.Bucket frontApplicationIdBucket : frontApplicationIdTerms.getBuckets()) {
int applicationId = frontApplicationIdBucket.getKeyAsNumber().intValue();
- String applicationCode = ApplicationCache.getForUI(applicationId);
+ String applicationCode = ApplicationCache.get(applicationId);
Terms behindApplicationIdTerms = frontApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID);
for (Terms.Bucket behindApplicationIdBucket : behindApplicationIdTerms.getBuckets()) {
int behindApplicationId = behindApplicationIdBucket.getKeyAsNumber().intValue();
if (behindApplicationId != 0) {
- String behindApplicationCode = ApplicationCache.getForUI(behindApplicationId);
+ String behindApplicationCode = ApplicationCache.get(behindApplicationId);
Sum s1LTE = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_S1_LTE);
Sum s3LTE = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_S3_LTE);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
index d2ca4b451..64a20fef8 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
@@ -75,7 +75,7 @@ public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO {
for (SearchHit searchHit : searchHits.getHits()) {
int applicationId = ((Number)searchHit.getSource().get(ServiceEntryTable.COLUMN_APPLICATION_ID)).intValue();
int entryServiceId = ((Number)searchHit.getSource().get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID)).intValue();
- String applicationCode = ApplicationCache.getForUI(applicationId);
+ String applicationCode = ApplicationCache.get(applicationId);
String entryServiceName = (String)searchHit.getSource().get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME);
JsonObject row = new JsonObject();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
index 51c7ab034..75a4b3755 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
@@ -146,7 +146,7 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
String frontServiceName = frontServiceBucket.getKeyAsString();
if (StringUtils.isNotEmpty(frontServiceName)) {
String[] serviceNames = frontServiceName.split(Const.ID_SPLIT);
- int frontServiceId = ServiceIdCache.getForUI(Integer.parseInt(serviceNames[0]), serviceNames[1]);
+ int frontServiceId = ServiceIdCache.get(Integer.parseInt(serviceNames[0]), serviceNames[1]);
parseSubAggregate(serviceReferenceMap, frontServiceBucket, frontServiceId);
}
}
@@ -179,11 +179,11 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
Sum summary = behindServiceIdBucket.getAggregations().get(ServiceReferenceTable.COLUMN_SUMMARY);
Sum costSum = behindServiceIdBucket.getAggregations().get(ServiceReferenceTable.COLUMN_COST_SUMMARY);
- String frontServiceName = ServiceNameCache.getForUI(frontServiceId);
+ String frontServiceName = ServiceNameCache.get(frontServiceId);
if (StringUtils.isNotEmpty(frontServiceName)) {
frontServiceName = frontServiceName.split(Const.ID_SPLIT)[1];
}
- String behindServiceName = ServiceNameCache.getForUI(behindServiceId);
+ String behindServiceName = ServiceNameCache.get(behindServiceId);
if (StringUtils.isNotEmpty(frontServiceName)) {
behindServiceName = behindServiceName.split(Const.ID_SPLIT)[1];
}
@@ -216,9 +216,9 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
Sum summary = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_SUMMARY);
Sum costSum = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_COST_SUMMARY);
- String frontServiceName = ServiceNameCache.getForUI(frontServiceId);
+ String frontServiceName = ServiceNameCache.get(frontServiceId);
String[] serviceNames = behindServiceName.split(Const.ID_SPLIT);
- int behindServiceId = ServiceIdCache.getForUI(Integer.parseInt(serviceNames[0]), serviceNames[1]);
+ int behindServiceId = ServiceIdCache.get(Integer.parseInt(serviceNames[0]), serviceNames[1]);
behindServiceName = serviceNames[1];
JsonObject serviceReference = new JsonObject();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
index 3739c5b41..ef7d82c95 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
@@ -50,7 +50,7 @@ public class InstanceHealthService {
response.add("instances", instances);
instanceList.forEach(instance -> {
- response.addProperty("applicationCode", ApplicationCache.getForUI(applicationId));
+ response.addProperty("applicationCode", ApplicationCache.get(applicationId));
response.addProperty("applicationId", applicationId);
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
index 22decd310..4be2bad26 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
@@ -96,7 +96,7 @@ public class SpanService {
if (spanObject.getPeerId() == 0) {
peerJson.addProperty("value", spanObject.getPeer());
} else {
- peerJson.addProperty("value", ApplicationCache.getForUI(spanObject.getPeerId()));
+ peerJson.addProperty("value", ApplicationCache.get(spanObject.getPeerId()));
}
tagsArray.add(peerJson);
From cdd9e88a8d89b76601852cb16ddf92746d348261 Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Thu, 19 Oct 2017 22:41:38 +0800
Subject: [PATCH 3/7] Change the method which called by H2 Dao implements.
---
.../src/main/resources/application.yml | 18 +-
.../apm/collector/client/h2/H2Client.java | 18 +-
.../core/module/SingleModuleInstaller.java | 4 +-
.../storage/StorageModuleDefine.java | 4 -
.../StorageElasticSearchModuleDefine.java | 4 +
.../collector/storage/h2/StorageH2Config.java | 28 ---
.../storage/h2/StorageH2ConfigParser.java | 45 ----
.../storage/h2/StorageH2ModuleDefine.java | 8 +-
.../ui/dao/IServiceReferenceDAO.java | 7 +-
.../apm/collector/ui/dao/InstanceH2DAO.java | 24 +-
.../collector/ui/dao/NodeComponentH2DAO.java | 18 +-
.../collector/ui/dao/NodeMappingH2DAO.java | 19 +-
.../collector/ui/dao/NodeReferenceH2DAO.java | 6 +-
.../collector/ui/dao/ServiceEntryH2DAO.java | 11 +-
.../ui/dao/ServiceReferenceEsDAO.java | 141 +----------
.../ui/dao/ServiceReferenceH2DAO.java | 227 ++++--------------
.../ui/service/ServiceTreeService.java | 75 +++++-
17 files changed, 196 insertions(+), 461 deletions(-)
delete mode 100644 apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java
delete mode 100644 apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java
diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml
index 02d49d094..85021ee37 100644
--- a/apm-collector/apm-collector-boot/src/main/resources/application.yml
+++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml
@@ -27,16 +27,10 @@ collector_inside:
grpc:
host: localhost
port: 11800
-storage:
- elasticsearch:
- cluster_name: CollectorDBCluster
- cluster_transport_sniffer: true
- cluster_nodes: localhost:9300
- index_shards_number: 2
- index_replicas_number: 0
-# uncomment to enable h2 storage
#storage:
-# h2:
-# url: jdbc:h2:~/collector
-# user_name: sa
-# password: sa
\ No newline at end of file
+# elasticsearch:
+# cluster_name: CollectorDBCluster
+# cluster_transport_sniffer: true
+# cluster_nodes: localhost:9300
+# index_shards_number: 2
+# index_replicas_number: 0
\ No newline at end of file
diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java
index 8ab7c47d8..0a28d0880 100644
--- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java
+++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java
@@ -18,11 +18,15 @@
package org.skywalking.apm.collector.client.h2;
-import java.sql.*;
-
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
import org.h2.jdbcx.JdbcConnectionPool;
import org.h2.util.IOUtils;
import org.skywalking.apm.collector.core.client.Client;
+import org.skywalking.apm.collector.core.config.SystemConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,21 +44,15 @@ public class H2Client implements Client {
private String password;
public H2Client() {
- this.url = "jdbc:h2:mem:collector";
+ this.url = "jdbc:h2:" + SystemConfig.DATA_PATH + "/h2";
this.userName = "";
this.password = "";
}
- public H2Client(String url, String userName, String password) {
- this.url = url;
- this.userName = userName;
- this.password = password;
- }
-
@Override public void initialize() throws H2ClientException {
try {
cp = JdbcConnectionPool.
- create(this.url, this.userName, this.password);
+ create(this.url, this.userName, this.password);
conn = cp.getConnection();
} catch (Exception e) {
throw new H2ClientException(e.getMessage(), e);
diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java
index 4cc1e39f1..691f40e92 100644
--- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java
+++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java
@@ -76,7 +76,9 @@ public abstract class SingleModuleInstaller extends CommonModuleInstaller {
throw new ClusterModuleException("single module, but configure multiple default module");
}
this.moduleDefine = moduleDefineEntry.getValue();
- this.moduleDefine.configParser().parse(null);
+ if (this.moduleDefine.configParser() != null) {
+ this.moduleDefine.configParser().parse(null);
+ }
hasDefaultModule = true;
}
}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java
index 1fa83a89d..6f22a30ae 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java
@@ -68,10 +68,6 @@ public abstract class StorageModuleDefine extends ModuleDefine implements Cluste
return null;
}
- @Override public final boolean defaultModule() {
- return true;
- }
-
public abstract StorageInstaller storageInstaller();
public abstract void injectClientIntoDAO(Client client) throws DefineException;
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java
index 06f8b2c81..c2e5e87f9 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java
@@ -46,6 +46,10 @@ public class StorageElasticSearchModuleDefine extends StorageModuleDefine {
return MODULE_NAME;
}
+ @Override public final boolean defaultModule() {
+ return false;
+ }
+
@Override protected ModuleConfigParser configParser() {
return new StorageElasticSearchConfigParser();
}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java
deleted file mode 100644
index a467b9cf4..000000000
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.storage.h2;
-
-/**
- * @author clevertension
- */
-public class StorageH2Config {
- public static String URL;
- public static String USER_NAME;
- public static String PASSWORD;
-}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java
deleted file mode 100644
index 85a08c426..000000000
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.storage.h2;
-
-import java.util.Map;
-import org.skywalking.apm.collector.core.config.ConfigParseException;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.util.ObjectUtils;
-import org.skywalking.apm.collector.core.util.StringUtils;
-
-/**
- * @author pengys5
- */
-public class StorageH2ConfigParser implements ModuleConfigParser {
- private static final String URL = "url";
- public static final String USER_NAME = "user_name";
- public static final String PASSWORD = "password";
- @Override public void parse(Map config) throws ConfigParseException {
- if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(URL))) {
- StorageH2Config.URL = (String)config.get(URL);
- }
- if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(USER_NAME))) {
- StorageH2Config.USER_NAME = (String)config.get(USER_NAME);
- }
- if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(PASSWORD))) {
- StorageH2Config.PASSWORD = (String)config.get(PASSWORD);
- }
- }
-}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java
index 9faae085f..2de18e33a 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java
@@ -46,12 +46,16 @@ public class StorageH2ModuleDefine extends StorageModuleDefine {
return MODULE_NAME;
}
+ @Override public final boolean defaultModule() {
+ return true;
+ }
+
@Override protected ModuleConfigParser configParser() {
- return new StorageH2ConfigParser();
+ return null;
}
@Override protected Client createClient() {
- return new H2Client(StorageH2Config.URL, StorageH2Config.USER_NAME, StorageH2Config.PASSWORD);
+ return new H2Client();
}
@Override public StorageInstaller storageInstaller() {
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
index f2bee52da..cc67f7ac4 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
@@ -18,13 +18,14 @@
package org.skywalking.apm.collector.ui.dao;
-import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import java.util.Map;
/**
* @author pengys5
*/
public interface IServiceReferenceDAO {
- JsonArray load(int entryServiceId, long startTime, long endTime);
+ Map load(int entryServiceId, long startTime, long endTime);
- JsonArray load(String entryServiceName, int entryApplicationId, long startTime, long endTime);
+ Map load(String entryServiceName, int entryApplicationId, long startTime, long endTime);
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
index 6b3c72fc0..f94c1f1ef 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
@@ -18,11 +18,13 @@
package org.skywalking.apm.collector.ui.dao;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
-
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -30,13 +32,9 @@ import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
import org.skywalking.apm.collector.storage.define.register.InstanceTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-
/**
* @author pengys5, clevertension
*/
@@ -54,7 +52,7 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
long fiveMinuteBefore = System.currentTimeMillis() - 5 * 60 * 1000;
fiveMinuteBefore = TimeBucketUtils.INSTANCE.getSecondTimeBucket(fiveMinuteBefore);
String sql = SqlBuilder.buildSql(GET_LAST_HEARTBEAT_TIME_SQL, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.TABLE, InstanceTable.COLUMN_HEARTBEAT_TIME);
- Object[] params = new Object[]{fiveMinuteBefore};
+ Object[] params = new Object[] {fiveMinuteBefore};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
return rs.getLong(1);
@@ -71,8 +69,8 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
long fiveMinuteBefore = System.currentTimeMillis() - 5 * 60 * 1000;
fiveMinuteBefore = TimeBucketUtils.INSTANCE.getSecondTimeBucket(fiveMinuteBefore);
String sql = SqlBuilder.buildSql(GET_INST_LAST_HEARTBEAT_TIME_SQL, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.TABLE,
- InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_INSTANCE_ID);
- Object[] params = new Object[]{fiveMinuteBefore, applicationInstanceId};
+ InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_INSTANCE_ID);
+ Object[] params = new Object[] {fiveMinuteBefore, applicationInstanceId};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
return rs.getLong(1);
@@ -88,15 +86,15 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
H2Client client = getClient();
JsonArray applications = new JsonArray();
String sql = SqlBuilder.buildSql(GET_APPLICATIONS_SQL, InstanceTable.COLUMN_INSTANCE_ID,
- InstanceTable.TABLE, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_APPLICATION_ID);
- Object[] params = new Object[]{startTime, endTime};
+ InstanceTable.TABLE, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_APPLICATION_ID);
+ Object[] params = new Object[] {startTime, endTime};
try (ResultSet rs = client.executeQuery(sql, params)) {
while (rs.next()) {
Integer applicationId = rs.getInt(InstanceTable.COLUMN_APPLICATION_ID);
logger.debug("applicationId: {}", applicationId);
JsonObject application = new JsonObject();
application.addProperty("applicationId", applicationId);
- application.addProperty("applicationCode", ApplicationCache.getForUI(applicationId));
+ application.addProperty("applicationCode", ApplicationCache.get(applicationId));
application.addProperty("instanceCount", rs.getInt("cnt"));
applications.add(application);
}
@@ -110,7 +108,7 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
public InstanceDataDefine.Instance getInstance(int instanceId) {
H2Client client = getClient();
String sql = SqlBuilder.buildSql(GET_INSTANCE_SQL, InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID);
- Object[] params = new Object[]{instanceId};
+ Object[] params = new Object[] {instanceId};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance();
@@ -134,7 +132,7 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
List instanceList = new LinkedList<>();
H2Client client = getClient();
String sql = SqlBuilder.buildSql(GET_INSTANCES_SQL, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, InstanceTable.COLUMN_HEARTBEAT_TIME);
- Object[] params = new Object[]{applicationId, timeBucket};
+ Object[] params = new Object[] {applicationId, timeBucket};
try (ResultSet rs = client.executeQuery(sql, params)) {
while (rs.next()) {
InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java
index 5fd855025..54a86ca49 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java
@@ -18,49 +18,49 @@
package org.skywalking.apm.collector.ui.dao;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
import java.sql.ResultSet;
import java.sql.SQLException;
-
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.node.NodeComponentTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.skywalking.apm.network.trace.component.ComponentsDefine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-
/**
* @author pengys5, clevertension
*/
public class NodeComponentH2DAO extends H2DAO implements INodeComponentDAO {
private final Logger logger = LoggerFactory.getLogger(NodeComponentH2DAO.class);
private static final String AGGREGATE_COMPONENT_SQL = "select {0}, {1}, {2} from {3} where {4} >= ? and {4} <= ? group by {0}, {1}, {2} limit 100";
+
@Override public JsonArray load(long startTime, long endTime) {
JsonArray nodeComponentArray = new JsonArray();
nodeComponentArray.addAll(aggregationComponent(startTime, endTime));
return nodeComponentArray;
}
+
private JsonArray aggregationComponent(long startTime, long endTime) {
H2Client client = getClient();
JsonArray nodeComponentArray = new JsonArray();
String sql = SqlBuilder.buildSql(AGGREGATE_COMPONENT_SQL, NodeComponentTable.COLUMN_COMPONENT_ID,
- NodeComponentTable.COLUMN_PEER, NodeComponentTable.COLUMN_PEER_ID,
- NodeComponentTable.TABLE, NodeComponentTable.COLUMN_TIME_BUCKET);
- Object[] params = new Object[]{startTime, endTime};
+ NodeComponentTable.COLUMN_PEER, NodeComponentTable.COLUMN_PEER_ID,
+ NodeComponentTable.TABLE, NodeComponentTable.COLUMN_TIME_BUCKET);
+ Object[] params = new Object[] {startTime, endTime};
try (ResultSet rs = client.executeQuery(sql, params)) {
while (rs.next()) {
int peerId = rs.getInt(NodeComponentTable.COLUMN_PEER_ID);
int componentId = rs.getInt(NodeComponentTable.COLUMN_COMPONENT_ID);
String componentName = ComponentsDefine.getInstance().getComponentName(componentId);
if (peerId != 0) {
- String peer = ApplicationCache.getForUI(peerId);
+ String peer = ApplicationCache.get(peerId);
nodeComponentArray.add(buildNodeComponent(peer, componentName));
}
String peer = rs.getString(NodeComponentTable.COLUMN_PEER);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java
index 7febe8065..78ae8cf1c 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java
@@ -18,43 +18,42 @@
package org.skywalking.apm.collector.ui.dao;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
import java.sql.ResultSet;
import java.sql.SQLException;
-
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.node.NodeMappingTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-
/**
* @author pengys5, clevertension
*/
public class NodeMappingH2DAO extends H2DAO implements INodeMappingDAO {
private final Logger logger = LoggerFactory.getLogger(NodeMappingH2DAO.class);
private static final String NODE_MAPPING_SQL = "select {0}, {1}, {2} from {3} where {4} >= ? and {4} <= ? group by {0}, {1}, {2} limit 100";
+
@Override public JsonArray load(long startTime, long endTime) {
H2Client client = getClient();
JsonArray nodeMappingArray = new JsonArray();
String sql = SqlBuilder.buildSql(NODE_MAPPING_SQL, NodeMappingTable.COLUMN_APPLICATION_ID,
- NodeMappingTable.COLUMN_ADDRESS_ID, NodeMappingTable.COLUMN_ADDRESS,
- NodeMappingTable.TABLE, NodeMappingTable.COLUMN_TIME_BUCKET);
+ NodeMappingTable.COLUMN_ADDRESS_ID, NodeMappingTable.COLUMN_ADDRESS,
+ NodeMappingTable.TABLE, NodeMappingTable.COLUMN_TIME_BUCKET);
- Object[] params = new Object[]{startTime, endTime};
+ Object[] params = new Object[] {startTime, endTime};
try (ResultSet rs = client.executeQuery(sql, params)) {
while (rs.next()) {
int applicationId = rs.getInt(NodeMappingTable.COLUMN_APPLICATION_ID);
- String applicationCode = ApplicationCache.getForUI(applicationId);
+ String applicationCode = ApplicationCache.get(applicationId);
int addressId = rs.getInt(NodeMappingTable.COLUMN_ADDRESS_ID);
if (addressId != 0) {
- String address = ApplicationCache.getForUI(addressId);
+ String address = ApplicationCache.get(addressId);
JsonObject nodeMappingObj = new JsonObject();
nodeMappingObj.addProperty("applicationCode", applicationCode);
nodeMappingObj.addProperty("address", address);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java
index 52cdf9a41..007882c44 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java
@@ -21,13 +21,13 @@ package org.skywalking.apm.collector.ui.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,10 +54,10 @@ public class NodeReferenceH2DAO extends H2DAO implements INodeReferenceDAO {
try (ResultSet rs = client.executeQuery(sql, params)) {
while (rs.next()) {
int applicationId = rs.getInt(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID);
- String applicationCode = ApplicationCache.getForUI(applicationId);
+ String applicationCode = ApplicationCache.get(applicationId);
int behindApplicationId = rs.getInt(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID);
if (behindApplicationId != 0) {
- String behindApplicationCode = ApplicationCache.getForUI(behindApplicationId);
+ String behindApplicationCode = ApplicationCache.get(behindApplicationId);
JsonObject nodeRefResSumObj = new JsonObject();
nodeRefResSumObj.addProperty("front", applicationCode);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
index dcf71a00a..664b9ca88 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
@@ -18,11 +18,13 @@
package org.skywalking.apm.collector.ui.dao;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-
+import org.skywalking.apm.collector.cache.ApplicationCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
@@ -30,19 +32,16 @@ import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.service.ServiceEntryTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.ui.cache.ApplicationCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-
/**
* @author pengys5
*/
public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO {
private final Logger logger = LoggerFactory.getLogger(SegmentH2DAO.class);
private static final String GET_SERVICE_ENTRY_SQL = "select * from {0} where {1} >= ? and {2} <= ?";
+
@Override public JsonObject load(int applicationId, String entryServiceName, long startTime, long endTime, int from,
int size) {
H2Client client = getClient();
@@ -77,7 +76,7 @@ public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO {
while (rs.next()) {
int appId = rs.getInt(ServiceEntryTable.COLUMN_APPLICATION_ID);
int entryServiceId = rs.getInt(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID);
- String applicationCode = ApplicationCache.getForUI(applicationId);
+ String applicationCode = ApplicationCache.get(applicationId);
String entryServiceName1 = rs.getString(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME);
JsonObject row = new JsonObject();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
index 75a4b3755..4a76bc848 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
@@ -18,9 +18,7 @@
package org.skywalking.apm.collector.ui.dao;
-import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import org.elasticsearch.action.search.SearchRequestBuilder;
@@ -35,7 +33,6 @@ import org.skywalking.apm.collector.cache.ServiceIdCache;
import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.core.util.ObjectUtils;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
@@ -49,7 +46,8 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
private final Logger logger = LoggerFactory.getLogger(ServiceReferenceEsDAO.class);
- @Override public JsonArray load(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
+ @Override
+ public Map load(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ServiceReferenceTable.TABLE);
searchRequestBuilder.setTypes(ServiceReferenceTable.TABLE_TYPE);
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
@@ -72,7 +70,7 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
return load(searchRequestBuilder);
}
- @Override public JsonArray load(int entryServiceId, long startTime, long endTime) {
+ @Override public Map load(int entryServiceId, long startTime, long endTime) {
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ServiceReferenceTable.TABLE);
searchRequestBuilder.setTypes(ServiceReferenceTable.TABLE_TYPE);
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
@@ -93,35 +91,9 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
return load(searchRequestBuilder);
}
- private JsonArray load(SearchRequestBuilder searchRequestBuilder) {
+ private Map load(SearchRequestBuilder searchRequestBuilder) {
searchRequestBuilder.addAggregation(AggregationBuilders.terms(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID).field(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID).size(100)
.subAggregation(AggregationBuilders.terms(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID).field(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID).size(100)
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S1_LTE).field(ServiceReferenceTable.COLUMN_S1_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S3_LTE).field(ServiceReferenceTable.COLUMN_S3_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_LTE).field(ServiceReferenceTable.COLUMN_S5_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_GT).field(ServiceReferenceTable.COLUMN_S5_GT))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_ERROR).field(ServiceReferenceTable.COLUMN_ERROR))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_SUMMARY).field(ServiceReferenceTable.COLUMN_SUMMARY))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_COST_SUMMARY).field(ServiceReferenceTable.COLUMN_COST_SUMMARY)))
- .subAggregation(AggregationBuilders.terms(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME).field(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME).size(100)
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S1_LTE).field(ServiceReferenceTable.COLUMN_S1_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S3_LTE).field(ServiceReferenceTable.COLUMN_S3_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_LTE).field(ServiceReferenceTable.COLUMN_S5_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_GT).field(ServiceReferenceTable.COLUMN_S5_GT))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_ERROR).field(ServiceReferenceTable.COLUMN_ERROR))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_SUMMARY).field(ServiceReferenceTable.COLUMN_SUMMARY))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_COST_SUMMARY).field(ServiceReferenceTable.COLUMN_COST_SUMMARY))));
-
- searchRequestBuilder.addAggregation(AggregationBuilders.terms(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME).field(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME).size(100)
- .subAggregation(AggregationBuilders.terms(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID).field(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID).size(100)
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S1_LTE).field(ServiceReferenceTable.COLUMN_S1_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S3_LTE).field(ServiceReferenceTable.COLUMN_S3_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_LTE).field(ServiceReferenceTable.COLUMN_S5_LTE))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_GT).field(ServiceReferenceTable.COLUMN_S5_GT))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_ERROR).field(ServiceReferenceTable.COLUMN_ERROR))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_SUMMARY).field(ServiceReferenceTable.COLUMN_SUMMARY))
- .subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_COST_SUMMARY).field(ServiceReferenceTable.COLUMN_COST_SUMMARY)))
- .subAggregation(AggregationBuilders.terms(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME).field(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME).size(100)
.subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S1_LTE).field(ServiceReferenceTable.COLUMN_S1_LTE))
.subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S3_LTE).field(ServiceReferenceTable.COLUMN_S3_LTE))
.subAggregation(AggregationBuilders.sum(ServiceReferenceTable.COLUMN_S5_LTE).field(ServiceReferenceTable.COLUMN_S5_LTE))
@@ -141,27 +113,7 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
}
}
- Terms frontServiceNameTerms = searchResponse.getAggregations().get(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME);
- for (Terms.Bucket frontServiceBucket : frontServiceNameTerms.getBuckets()) {
- String frontServiceName = frontServiceBucket.getKeyAsString();
- if (StringUtils.isNotEmpty(frontServiceName)) {
- String[] serviceNames = frontServiceName.split(Const.ID_SPLIT);
- int frontServiceId = ServiceIdCache.get(Integer.parseInt(serviceNames[0]), serviceNames[1]);
- parseSubAggregate(serviceReferenceMap, frontServiceBucket, frontServiceId);
- }
- }
-
- JsonArray serviceReferenceArray = new JsonArray();
- JsonObject rootServiceReference = findRoot(serviceReferenceMap);
- if (ObjectUtils.isNotEmpty(rootServiceReference)) {
- serviceReferenceArray.add(rootServiceReference);
- String id = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
- serviceReferenceMap.remove(id);
-
- int rootServiceId = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
- sortAsTree(rootServiceId, serviceReferenceArray, serviceReferenceMap);
- }
- return serviceReferenceArray;
+ return serviceReferenceMap;
}
private void parseSubAggregate(Map serviceReferenceMap,
@@ -200,88 +152,9 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR), (long)error.getValue());
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY), (long)summary.getValue());
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY), (long)costSum.getValue());
- merge(serviceReferenceMap, serviceReference);
- }
- }
- Terms behindServiceNameTerms = frontServiceBucket.getAggregations().get(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME);
- for (Terms.Bucket behindServiceNameBucket : behindServiceNameTerms.getBuckets()) {
- String behindServiceName = behindServiceNameBucket.getKeyAsString();
- if (StringUtils.isNotEmpty(behindServiceName)) {
- Sum s1LteSum = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_S1_LTE);
- Sum s3LteSum = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_S3_LTE);
- Sum s5LteSum = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_S5_LTE);
- Sum s5GtSum = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_S5_GT);
- Sum error = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_ERROR);
- Sum summary = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_SUMMARY);
- Sum costSum = behindServiceNameBucket.getAggregations().get(ServiceReferenceTable.COLUMN_COST_SUMMARY);
-
- String frontServiceName = ServiceNameCache.get(frontServiceId);
- String[] serviceNames = behindServiceName.split(Const.ID_SPLIT);
- int behindServiceId = ServiceIdCache.get(Integer.parseInt(serviceNames[0]), serviceNames[1]);
- behindServiceName = serviceNames[1];
-
- JsonObject serviceReference = new JsonObject();
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID), frontServiceId);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME), frontServiceName);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID), behindServiceId);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME), behindServiceName);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE), (long)s1LteSum.getValue());
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE), (long)s3LteSum.getValue());
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE), (long)s5LteSum.getValue());
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_GT), (long)s5GtSum.getValue());
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR), (long)error.getValue());
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY), (long)summary.getValue());
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY), (long)costSum.getValue());
- merge(serviceReferenceMap, serviceReference);
- }
- }
- }
-
- private void merge(Map serviceReferenceMap, JsonObject serviceReference) {
- String id = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
-
- if (serviceReferenceMap.containsKey(id)) {
- JsonObject reference = serviceReferenceMap.get(id);
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_GT));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY));
- } else {
- serviceReferenceMap.put(id, serviceReference);
- }
- }
-
- private void add(JsonObject oldReference, JsonObject newReference, String key) {
- long oldValue = oldReference.get(key).getAsLong();
- long newValue = newReference.get(key).getAsLong();
- oldReference.addProperty(key, oldValue + newValue);
- }
-
- private JsonObject findRoot(Map serviceReferenceMap) {
- for (JsonObject serviceReference : serviceReferenceMap.values()) {
- int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt();
- if (frontServiceId == 1) {
- return serviceReference;
- }
- }
- return null;
- }
-
- private void sortAsTree(int serviceId, JsonArray serviceReferenceArray,
- Map serviceReferenceMap) {
- Iterator iterator = serviceReferenceMap.values().iterator();
- while (iterator.hasNext()) {
- JsonObject serviceReference = iterator.next();
- int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt();
- if (serviceId == frontServiceId) {
- serviceReferenceArray.add(serviceReference);
-
- int behindServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
- sortAsTree(behindServiceId, serviceReferenceArray, serviceReferenceMap);
+ String id = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
+ serviceReferenceMap.put(id, serviceReference);
}
}
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
index 37a818e0a..24b224594 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
@@ -18,29 +18,24 @@
package org.skywalking.apm.collector.ui.dao;
+import com.google.gson.JsonObject;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
-
+import org.skywalking.apm.collector.cache.ServiceIdCache;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.core.util.ObjectUtils;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.ui.cache.ServiceIdCache;
-import org.skywalking.apm.collector.ui.cache.ServiceNameCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-
/**
* @author pengys5, clevertension
*/
@@ -48,115 +43,69 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO
private final Logger logger = LoggerFactory.getLogger(ServiceReferenceH2DAO.class);
private static final String GET_SRV_REF_LOAD1 = "select {4}, {5}, {6}, {7}, sum({8}) as cnt1, sum({9}) as cnt2, sum({10}) as cnt3" +
- ",sum({11}) as cnt4, sum({12}) cnt5, sum({13}) as cnt6, sum({14}) as cnt7 from {0} where {1} >= ? and {1} <= ? and {2} = ? and {3} = ? group by {4}, {5}, {6}, {7}";
+ ",sum({11}) as cnt4, sum({12}) cnt5, sum({13}) as cnt6, sum({14}) as cnt7 from {0} where {1} >= ? and {1} <= ? and {2} = ? and {3} = ? group by {4}, {5}, {6}, {7}";
private static final String GET_SRV_REF_LOAD2 = "select {3}, {4}, {5}, {6}, sum({7}) as cnt1, sum({8}) as cnt2, sum({9}) as cnt3" +
- ",sum({10}) as cnt4, sum({11}) cnt5, sum({12}) as cnt6, sum({13}) as cnt7 from {0} where {1} >= ? and {1} <= ? and {2} = ? group by {3}, {4}, {5}, {6}";
+ ",sum({10}) as cnt4, sum({11}) cnt5, sum({12}) as cnt6, sum({13}) as cnt7 from {0} where {1} >= ? and {1} <= ? and {2} = ? group by {3}, {4}, {5}, {6}";
- @Override public JsonArray load(int entryServiceId, long startTime, long endTime) {
+ @Override
+ public Map load(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
H2Client client = getClient();
- String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE,
+ String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD2, ServiceReferenceTable.TABLE,
+ ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
+ ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
+ ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
+ ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
+ ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
+ ServiceReferenceTable.COLUMN_COST_SUMMARY);
+
+ Object[] params = new Object[] {startTime, endTime, entryServiceName};
+ entryServiceName = entryApplicationId + Const.ID_SPLIT + entryServiceName;
+ int entryServiceId = ServiceIdCache.get(entryApplicationId, entryServiceName);
+ if (entryServiceId != 0) {
+ sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE,
ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
ServiceReferenceTable.COLUMN_COST_SUMMARY);
- String entryServiceName = ServiceNameCache.get(entryServiceId);
- Object[] params = new Object[]{startTime, endTime, entryServiceId, entryServiceName};
- try (ResultSet rs = client.executeQuery(sql, params)) {
- if (rs.next()) {
- Map serviceReferenceMap = new LinkedHashMap<>();
-
- int frontServiceId = rs.getInt(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID);
- if (frontServiceId != 0) {
- parseSubAggregate(serviceReferenceMap, rs, frontServiceId);
- }
-
- String frontServiceName = rs.getString(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME);
- if (StringUtils.isNotEmpty(frontServiceName)) {
- String[] serviceNames = frontServiceName.split(Const.ID_SPLIT);
- int frontServiceId1 = ServiceIdCache.getForUI(Integer.parseInt(serviceNames[0]), serviceNames[1]);
- parseSubAggregate(serviceReferenceMap, rs, frontServiceId1);
- }
-
- JsonArray serviceReferenceArray = new JsonArray();
- JsonObject rootServiceReference = findRoot(serviceReferenceMap);
- if (ObjectUtils.isNotEmpty(rootServiceReference)) {
- serviceReferenceArray.add(rootServiceReference);
- String id = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
- serviceReferenceMap.remove(id);
-
- int rootServiceId = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
- sortAsTree(rootServiceId, serviceReferenceArray, serviceReferenceMap);
- }
- return serviceReferenceArray;
- }
- } catch (SQLException | H2ClientException e) {
- logger.error(e.getMessage(), e);
+ params = new Object[] {startTime, endTime, entryServiceId, entryServiceName};
}
- return null;
+
+ return load(client, params, sql);
}
- @Override public JsonArray load(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
+ @Override public Map load(int entryServiceId, long startTime, long endTime) {
H2Client client = getClient();
- String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD2, ServiceReferenceTable.TABLE,
- ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
- ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
- ServiceReferenceTable.COLUMN_COST_SUMMARY);
- entryServiceName = entryApplicationId + Const.ID_SPLIT + entryServiceName;
- Object[] params = new Object[]{startTime, endTime, entryServiceName};
- int entryServiceId = ServiceIdCache.get(entryApplicationId, entryServiceName);
- if (entryServiceId != 0) {
- sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE,
- ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
- ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
- ServiceReferenceTable.COLUMN_COST_SUMMARY);
- params = new Object[]{startTime, endTime, entryServiceId, entryServiceName};
- }
+ String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE,
+ ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
+ ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
+ ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
+ ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
+ ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
+ ServiceReferenceTable.COLUMN_COST_SUMMARY);
+ String entryServiceName = ServiceNameCache.get(entryServiceId);
+ Object[] params = new Object[] {startTime, endTime, entryServiceId, entryServiceName};
+
+ return load(client, params, sql);
+ }
+
+ private Map load(H2Client client, Object[] params, String sql) {
+ Map serviceReferenceMap = new LinkedHashMap<>();
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
- Map serviceReferenceMap = new LinkedHashMap<>();
-
int frontServiceId = rs.getInt(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID);
- if (frontServiceId != 0) {
- parseSubAggregate(serviceReferenceMap, rs, frontServiceId);
- }
-
- String frontServiceName = rs.getString(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME);
- if (StringUtils.isNotEmpty(frontServiceName)) {
- String[] serviceNames = frontServiceName.split(Const.ID_SPLIT);
- int frontServiceId1 = ServiceIdCache.getForUI(Integer.parseInt(serviceNames[0]), serviceNames[1]);
- parseSubAggregate(serviceReferenceMap, rs, frontServiceId1);
- }
-
- JsonArray serviceReferenceArray = new JsonArray();
- JsonObject rootServiceReference = findRoot(serviceReferenceMap);
- if (ObjectUtils.isNotEmpty(rootServiceReference)) {
- serviceReferenceArray.add(rootServiceReference);
- String id = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
- serviceReferenceMap.remove(id);
-
- int rootServiceId = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
- sortAsTree(rootServiceId, serviceReferenceArray, serviceReferenceMap);
- }
- return serviceReferenceArray;
+ parseSubAggregate(serviceReferenceMap, rs, frontServiceId);
}
} catch (SQLException | H2ClientException e) {
logger.error(e.getMessage(), e);
}
- return null;
+ return serviceReferenceMap;
}
- private void parseSubAggregate(Map serviceReferenceMap,
- ResultSet rs,
- int frontServiceId) {
+ private void parseSubAggregate(Map serviceReferenceMap, ResultSet rs,
+ int frontServiceId) {
try {
int behindServiceId = rs.getInt(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID);
if (behindServiceId != 0) {
@@ -168,11 +117,11 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO
long summary = rs.getLong("cnt3");
long costSum = rs.getLong("cnt3");
- String frontServiceName = ServiceNameCache.getForUI(frontServiceId);
+ String frontServiceName = ServiceNameCache.get(frontServiceId);
if (StringUtils.isNotEmpty(frontServiceName)) {
frontServiceName = frontServiceName.split(Const.ID_SPLIT)[1];
}
- String behindServiceName = ServiceNameCache.getForUI(behindServiceId);
+ String behindServiceName = ServiceNameCache.get(behindServiceId);
if (StringUtils.isNotEmpty(frontServiceName)) {
behindServiceName = behindServiceName.split(Const.ID_SPLIT)[1];
}
@@ -189,92 +138,12 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR), error);
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY), summary);
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY), costSum);
- merge(serviceReferenceMap, serviceReference);
+
+ String id = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
+ serviceReferenceMap.put(id, serviceReference);
}
} catch (SQLException e) {
logger.error(e.getMessage(), e);
}
-
- try {
- String behindServiceName = rs.getString(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME);
- if (StringUtils.isNotEmpty(behindServiceName)) {
- long s1LteSum = rs.getLong("cnt1");
- long s3LteSum = rs.getLong("cnt2");
- long s5LteSum = rs.getLong("cnt3");
- long s5GtSum = rs.getLong("cnt3");
- long error = rs.getLong("cnt3");
- long summary = rs.getLong("cnt3");
- long costSum = rs.getLong("cnt3");
-
- String frontServiceName = ServiceNameCache.getForUI(frontServiceId);
- String[] serviceNames = behindServiceName.split(Const.ID_SPLIT);
- int behindServiceId = ServiceIdCache.getForUI(Integer.parseInt(serviceNames[0]), serviceNames[1]);
- behindServiceName = serviceNames[1];
-
- JsonObject serviceReference = new JsonObject();
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID), frontServiceId);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME), frontServiceName);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID), behindServiceId);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME), behindServiceName);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE), s1LteSum);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE), s3LteSum);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE), s5LteSum);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_GT), s5GtSum);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR), error);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY), summary);
- serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY), costSum);
- merge(serviceReferenceMap, serviceReference);
- }
- } catch (SQLException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
- private void merge(Map serviceReferenceMap, JsonObject serviceReference) {
- String id = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
-
- if (serviceReferenceMap.containsKey(id)) {
- JsonObject reference = serviceReferenceMap.get(id);
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_GT));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY));
- add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY));
- } else {
- serviceReferenceMap.put(id, serviceReference);
- }
- }
-
- private void add(JsonObject oldReference, JsonObject newReference, String key) {
- long oldValue = oldReference.get(key).getAsLong();
- long newValue = newReference.get(key).getAsLong();
- oldReference.addProperty(key, oldValue + newValue);
- }
-
- private JsonObject findRoot(Map serviceReferenceMap) {
- for (JsonObject serviceReference : serviceReferenceMap.values()) {
- int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt();
- if (frontServiceId == 1) {
- return serviceReference;
- }
- }
- return null;
- }
-
- private void sortAsTree(int serviceId, JsonArray serviceReferenceArray,
- Map serviceReferenceMap) {
- Iterator iterator = serviceReferenceMap.values().iterator();
- while (iterator.hasNext()) {
- JsonObject serviceReference = iterator.next();
- int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt();
- if (serviceId == frontServiceId) {
- serviceReferenceArray.add(serviceReference);
-
- int behindServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
- sortAsTree(behindServiceId, serviceReferenceArray, serviceReferenceMap);
- }
- }
}
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
index 53c09692a..5ca0938d4 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
@@ -20,7 +20,13 @@ package org.skywalking.apm.collector.ui.service;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
+import java.util.Iterator;
+import java.util.Map;
+import org.skywalking.apm.collector.core.util.ColumnNameUtils;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
+import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable;
import org.skywalking.apm.collector.ui.dao.IServiceEntryDAO;
import org.skywalking.apm.collector.ui.dao.IServiceReferenceDAO;
@@ -37,11 +43,76 @@ public class ServiceTreeService {
public JsonArray loadServiceTree(int entryServiceId, long startTime, long endTime) {
IServiceReferenceDAO serviceReferenceDAO = (IServiceReferenceDAO)DAOContainer.INSTANCE.get(IServiceReferenceDAO.class.getName());
- return serviceReferenceDAO.load(entryServiceId, startTime, endTime);
+ Map serviceReferenceMap = serviceReferenceDAO.load(entryServiceId, startTime, endTime);
+ return buildTreeData(serviceReferenceMap);
}
public JsonArray loadServiceTree(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
IServiceReferenceDAO serviceReferenceDAO = (IServiceReferenceDAO)DAOContainer.INSTANCE.get(IServiceReferenceDAO.class.getName());
- return serviceReferenceDAO.load(entryServiceName, entryApplicationId, startTime, endTime);
+ Map serviceReferenceMap = serviceReferenceDAO.load(entryServiceName, entryApplicationId, startTime, endTime);
+ return buildTreeData(serviceReferenceMap);
+ }
+
+ private JsonArray buildTreeData(Map serviceReferenceMap) {
+ JsonArray serviceReferenceArray = new JsonArray();
+ JsonObject rootServiceReference = findRoot(serviceReferenceMap);
+ if (ObjectUtils.isNotEmpty(rootServiceReference)) {
+ serviceReferenceArray.add(rootServiceReference);
+ String id = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
+ serviceReferenceMap.remove(id);
+
+ int rootServiceId = rootServiceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
+ sortAsTree(rootServiceId, serviceReferenceArray, serviceReferenceMap);
+ }
+
+ return serviceReferenceArray;
+ }
+
+ private JsonObject findRoot(Map serviceReferenceMap) {
+ for (JsonObject serviceReference : serviceReferenceMap.values()) {
+ int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt();
+ if (frontServiceId == 1) {
+ return serviceReference;
+ }
+ }
+ return null;
+ }
+
+ private void sortAsTree(int serviceId, JsonArray serviceReferenceArray,
+ Map serviceReferenceMap) {
+ Iterator iterator = serviceReferenceMap.values().iterator();
+ while (iterator.hasNext()) {
+ JsonObject serviceReference = iterator.next();
+ int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt();
+ if (serviceId == frontServiceId) {
+ serviceReferenceArray.add(serviceReference);
+
+ int behindServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt();
+ sortAsTree(behindServiceId, serviceReferenceArray, serviceReferenceMap);
+ }
+ }
+ }
+
+ private void merge(Map serviceReferenceMap, JsonObject serviceReference) {
+ String id = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)) + Const.ID_SPLIT + serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID));
+
+ if (serviceReferenceMap.containsKey(id)) {
+ JsonObject reference = serviceReferenceMap.get(id);
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE));
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE));
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE));
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_GT));
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_ERROR));
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_SUMMARY));
+ add(reference, serviceReference, ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_COST_SUMMARY));
+ } else {
+ serviceReferenceMap.put(id, serviceReference);
+ }
+ }
+
+ private void add(JsonObject oldReference, JsonObject newReference, String key) {
+ long oldValue = oldReference.get(key).getAsLong();
+ long newValue = newReference.get(key).getAsLong();
+ oldReference.addProperty(key, oldValue + newValue);
}
}
\ No newline at end of file
From dd595806769b9ca7f64c313ceedfe23fe4d1c0b7 Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Sat, 21 Oct 2017 00:14:32 +0800
Subject: [PATCH 4/7] Fixed the bugs from the change of cache module created
and segment standardizing.
---
.../segment/cost/SegmentCostSpanListener.java | 2 +-
.../segment/origin/dao/SegmentH2DAO.java | 7 +-
.../entry/ServiceEntrySpanListener.java | 4 +
.../service/entry/dao/ServiceEntryH2DAO.java | 8 +-
.../agentstream/mock/SegmentPost.java | 61 ++++++++------
.../src/main/resources/application.yml | 4 +-
.../apm/collector/cache/ServiceNameCache.java | 13 +++
.../collector/cache/dao/ApplicationEsDAO.java | 5 +-
.../collector/cache/dao/ApplicationH2DAO.java | 2 +-
.../collector/cache/dao/ServiceNameEsDAO.java | 5 +-
.../collector/cache/dao/ServiceNameH2DAO.java | 15 ++--
.../apm/collector/client/h2/H2Client.java | 21 ++---
.../service/ServiceEntryDataDefine.java | 4 +-
.../collector/storage/h2/StorageH2Config.java | 28 +++++++
.../storage/h2/StorageH2ConfigParser.java | 51 ++++++++++++
.../storage/h2/StorageH2ModuleDefine.java | 4 +-
.../collector/ui/dao/GlobalTraceH2DAO.java | 2 +-
.../ui/dao/IServiceReferenceDAO.java | 2 -
.../apm/collector/ui/dao/SegmentH2DAO.java | 24 +++---
.../collector/ui/dao/ServiceEntryH2DAO.java | 2 +-
.../ui/dao/ServiceReferenceEsDAO.java | 38 +--------
.../ui/dao/ServiceReferenceH2DAO.java | 66 +++------------
.../ui/jetty/UIJettyModuleDefine.java | 2 -
.../ServiceTreeGetByNameHandler.java | 80 -------------------
.../ui/service/ServiceTreeService.java | 6 --
25 files changed, 202 insertions(+), 254 deletions(-)
create mode 100644 apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java
create mode 100644 apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java
delete mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByNameHandler.java
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
index 6b2209a73..90be7b639 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
@@ -62,7 +62,7 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
if (spanDecorator.getOperationNameId() == 0) {
segmentCost.setServiceName(spanDecorator.getOperationName());
} else {
- segmentCost.setServiceName(ServiceNameCache.get(spanDecorator.getOperationNameId()));
+ segmentCost.setServiceName(ServiceNameCache.getSplitServiceName(ServiceNameCache.get(spanDecorator.getOperationNameId())));
}
segmentCosts.add(segmentCost);
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java
index 8a1ead97b..60e04854e 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java
@@ -18,10 +18,8 @@
package org.skywalking.apm.collector.agentstream.worker.segment.origin.dao;
-import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
-
import org.skywalking.apm.collector.agentstream.worker.segment.cost.dao.SegmentCostH2DAO;
import org.skywalking.apm.collector.core.stream.Data;
import org.skywalking.apm.collector.storage.define.DataDefine;
@@ -38,14 +36,16 @@ import org.slf4j.LoggerFactory;
*/
public class SegmentH2DAO extends H2DAO implements ISegmentDAO, IPersistenceDAO {
private final Logger logger = LoggerFactory.getLogger(SegmentCostH2DAO.class);
+
@Override public Data get(String id, DataDefine dataDefine) {
return null;
}
+
@Override public H2SqlEntity prepareBatchInsert(Data data) {
Map source = new HashMap<>();
H2SqlEntity entity = new H2SqlEntity();
source.put("id", data.getDataString(0));
- source.put(SegmentTable.COLUMN_DATA_BINARY, Base64.getEncoder().encode(data.getDataBytes(0)));
+ source.put(SegmentTable.COLUMN_DATA_BINARY, data.getDataBytes(0));
logger.debug("segment source: {}", source.toString());
String sql = SqlBuilder.buildBatchInsertSql(SegmentTable.TABLE, source.keySet());
@@ -53,6 +53,7 @@ public class SegmentH2DAO extends H2DAO implements ISegmentDAO, IPersistenceDAO<
entity.setParams(source.values().toArray(new Object[0]));
return entity;
}
+
@Override public H2SqlEntity prepareBatchUpdate(Data data) {
return null;
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
index b33b2ffc0..c93edd9fb 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
@@ -23,6 +23,7 @@ import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener
import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
+import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
@@ -45,6 +46,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
private boolean hasReference = false;
private int applicationId;
private int entryServiceId;
+ private String entryServiceName;
private boolean hasEntry = false;
@Override
@@ -52,6 +54,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
String segmentId) {
this.applicationId = applicationId;
this.entryServiceId = spanDecorator.getOperationNameId();
+ this.entryServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(entryServiceId));
this.hasEntry = true;
}
@@ -74,6 +77,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
serviceEntry.setId(applicationId + Const.ID_SPLIT + entryServiceId);
serviceEntry.setApplicationId(applicationId);
serviceEntry.setEntryServiceId(entryServiceId);
+ serviceEntry.setEntryServiceName(entryServiceName);
serviceEntry.setRegisterTime(timeBucket);
serviceEntry.setNewestTime(timeBucket);
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java
index 6f91ba64c..27140ae12 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java
@@ -24,7 +24,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.stream.Data;
@@ -42,10 +41,11 @@ import org.slf4j.LoggerFactory;
*/
public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO, IPersistenceDAO {
private final Logger logger = LoggerFactory.getLogger(ServiceEntryH2DAO.class);
- private static final String GET_SERIVCE_ENTRY_SQL = "select * from {0} where {1} = ?";
+ private static final String GET_SERVICE_ENTRY_SQL = "select * from {0} where {1} = ?";
+
@Override public Data get(String id, DataDefine dataDefine) {
H2Client client = getClient();
- String sql = SqlBuilder.buildSql(ServiceEntryTable.TABLE, "id");
+ String sql = SqlBuilder.buildSql(GET_SERVICE_ENTRY_SQL, ServiceEntryTable.TABLE, "id");
Object[] params = new Object[] {id};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
@@ -62,6 +62,7 @@ public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO, IPersi
}
return null;
}
+
@Override public H2SqlEntity prepareBatchInsert(Data data) {
H2SqlEntity entity = new H2SqlEntity();
Map source = new HashMap<>();
@@ -76,6 +77,7 @@ public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO, IPersi
entity.setParams(source.values().toArray(new Object[0]));
return entity;
}
+
@Override public H2SqlEntity prepareBatchUpdate(Data data) {
H2SqlEntity entity = new H2SqlEntity();
Map source = new HashMap<>();
diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
index 37217f203..3675883b1 100644
--- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
+++ b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
@@ -22,16 +22,21 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.io.IOException;
-import org.skywalking.apm.collector.agentregister.worker.application.dao.ApplicationEsDAO;
-import org.skywalking.apm.collector.agentregister.worker.instance.dao.InstanceEsDAO;
-import org.skywalking.apm.collector.agentregister.worker.servicename.dao.ServiceNameEsDAO;
+import org.skywalking.apm.collector.agentregister.worker.application.dao.IApplicationDAO;
+import org.skywalking.apm.collector.agentregister.worker.instance.dao.IInstanceDAO;
+import org.skywalking.apm.collector.agentregister.worker.servicename.dao.IServiceNameDAO;
import org.skywalking.apm.collector.agentstream.HttpClientTools;
import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.core.CollectorException;
+import org.skywalking.apm.collector.core.config.SystemConfig;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
+import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
+import org.skywalking.apm.collector.storage.elasticsearch.StorageElasticSearchModuleDefine;
+import org.skywalking.apm.collector.storage.h2.StorageH2ModuleDefine;
/**
* @author pengys5
@@ -39,41 +44,47 @@ import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefin
public class SegmentPost {
public static void main(String[] args) throws IOException, InterruptedException, CollectorException {
- ElasticSearchClient client = new ElasticSearchClient("CollectorDBCluster", true, "127.0.0.1:9300");
- client.initialize();
+ SystemConfig.DATA_PATH = "/Users/pengys5/code/sky-walking/sky-walking/apm-collector/data";
+
+ ElasticSearchClient elasticSearchClient = new ElasticSearchClient("CollectorDBCluster", true, "127.0.0.1:9300");
+ elasticSearchClient.initialize();
+ StorageElasticSearchModuleDefine storageElasticSearchModuleDefine = new StorageElasticSearchModuleDefine();
+ storageElasticSearchModuleDefine.injectClientIntoDAO(elasticSearchClient);
+
+ H2Client h2Client = new H2Client("jdbc:h2:tcp://localhost/~/test", "sa", "");
+ h2Client.initialize();
+ StorageH2ModuleDefine storageH2ModuleDefine = new StorageH2ModuleDefine();
+ storageH2ModuleDefine.injectClientIntoDAO(h2Client);
+
long now = TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis());
- InstanceEsDAO instanceEsDAO = new InstanceEsDAO();
- instanceEsDAO.setClient(client);
-
+ IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
InstanceDataDefine.Instance consumerInstance = new InstanceDataDefine.Instance("2", 2, "dubbox-consumer", now, 2, now, osInfo("consumer").toString());
- instanceEsDAO.save(consumerInstance);
+ instanceDAO.save(consumerInstance);
InstanceDataDefine.Instance providerInstance = new InstanceDataDefine.Instance("3", 3, "dubbox-provider", now, 3, now, osInfo("provider").toString());
- instanceEsDAO.save(providerInstance);
+ instanceDAO.save(providerInstance);
- ApplicationEsDAO applicationEsDAO = new ApplicationEsDAO();
- applicationEsDAO.setClient(client);
+ IApplicationDAO applicationDAO = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
ApplicationDataDefine.Application userApplication = new ApplicationDataDefine.Application("1", "User", 1);
- applicationEsDAO.save(userApplication);
+ applicationDAO.save(userApplication);
ApplicationDataDefine.Application consumerApplication = new ApplicationDataDefine.Application("2", "dubbox-consumer", 2);
- applicationEsDAO.save(consumerApplication);
+ applicationDAO.save(consumerApplication);
ApplicationDataDefine.Application providerApplication = new ApplicationDataDefine.Application("3", "dubbox-provider", 3);
- applicationEsDAO.save(providerApplication);
-// ApplicationDataDefine.Application peer = new ApplicationDataDefine.Application("4", "172.25.0.4:20880", 4);
-// applicationEsDAO.save(peer);
+ applicationDAO.save(providerApplication);
+ ApplicationDataDefine.Application peer = new ApplicationDataDefine.Application("4", "172.25.0.4:20880", 4);
+ applicationDAO.save(peer);
- ServiceNameEsDAO serviceNameEsDAO = new ServiceNameEsDAO();
- serviceNameEsDAO.setClient(client);
+ IServiceNameDAO serviceNameDAO = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
ServiceNameDataDefine.ServiceName serviceName1 = new ServiceNameDataDefine.ServiceName("1", "", 0, 1);
- serviceNameEsDAO.save(serviceName1);
+ serviceNameDAO.save(serviceName1);
ServiceNameDataDefine.ServiceName serviceName2 = new ServiceNameDataDefine.ServiceName("2", "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", 2, 2);
- serviceNameEsDAO.save(serviceName2);
+ serviceNameDAO.save(serviceName2);
ServiceNameDataDefine.ServiceName serviceName3 = new ServiceNameDataDefine.ServiceName("3", "/dubbox-case/case/dubbox-rest", 2, 3);
- serviceNameEsDAO.save(serviceName3);
+ serviceNameDAO.save(serviceName3);
ServiceNameDataDefine.ServiceName serviceName4 = new ServiceNameDataDefine.ServiceName("4", "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", 3, 4);
- serviceNameEsDAO.save(serviceName4);
+ serviceNameDAO.save(serviceName4);
while (true) {
JsonElement consumer = JsonFileReader.INSTANCE.read("json/segment/normal/dubbox-consumer.json");
@@ -124,4 +135,8 @@ public class SegmentPost {
return osInfoJson;
}
+
+ private void newDao() {
+
+ }
}
diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml
index 85021ee37..e6d654a9d 100644
--- a/apm-collector/apm-collector-boot/src/main/resources/application.yml
+++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml
@@ -16,8 +16,8 @@ agent_stream:
port: 12800
context_path: /
config:
- buffer_offset_max_file_size: 1k
- buffer_segment_max_file_size: 10k
+ buffer_offset_max_file_size: 10M
+ buffer_segment_max_file_size: 500M
ui:
jetty:
host: localhost
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
index 1ba962f6e..cf5ed591d 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
@@ -56,4 +56,17 @@ public class ServiceNameCache {
return serviceName;
}
+
+ public static String getSplitServiceName(String serviceName) {
+ if (StringUtils.isNotEmpty(serviceName)) {
+ String[] serviceNames = serviceName.split(Const.ID_SPLIT);
+ if (serviceNames.length == 2) {
+ return serviceNames[1];
+ } else {
+ return Const.EMPTY_STRING;
+ }
+ } else {
+ return Const.EMPTY_STRING;
+ }
+ }
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
index cab8fe255..c019fccaa 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
@@ -51,8 +51,7 @@ public class ApplicationEsDAO extends EsDAO implements IApplicationDAO {
SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
if (searchResponse.getHits().totalHits > 0) {
SearchHit searchHit = searchResponse.getHits().iterator().next();
- int applicationId = (int)searchHit.getSource().get(ApplicationTable.COLUMN_APPLICATION_ID);
- return applicationId;
+ return (int)searchHit.getSource().get(ApplicationTable.COLUMN_APPLICATION_ID);
}
return 0;
}
@@ -66,6 +65,6 @@ public class ApplicationEsDAO extends EsDAO implements IApplicationDAO {
if (getResponse.isExists()) {
return (String)getResponse.getSource().get(ApplicationTable.COLUMN_APPLICATION_CODE);
}
- return Const.UNKNOWN;
+ return Const.EMPTY_STRING;
}
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
index ab9c13406..dbf9d70c9 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
@@ -57,6 +57,6 @@ public class ApplicationH2DAO extends H2DAO implements IApplicationDAO {
} catch (SQLException | H2ClientException e) {
logger.error(e.getMessage(), e);
}
- return Const.UNKNOWN;
+ return Const.EMPTY_STRING;
}
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
index 41663de48..83a922b7a 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
@@ -44,7 +44,7 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
int applicationId = ((Number)getResponse.getSource().get(ServiceNameTable.COLUMN_APPLICATION_ID)).intValue();
return applicationId + Const.ID_SPLIT + serviceName;
}
- return Const.UNKNOWN;
+ return Const.EMPTY_STRING;
}
@Override public int getServiceId(int applicationId, String serviceName) {
@@ -61,8 +61,7 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
SearchResponse searchResponse = searchRequestBuilder.get();
if (searchResponse.getHits().totalHits > 0) {
SearchHit searchHit = searchResponse.getHits().iterator().next();
- int serviceId = (int)searchHit.getSource().get(ServiceNameTable.COLUMN_SERVICE_ID);
- return serviceId;
+ return (int)searchHit.getSource().get(ServiceNameTable.COLUMN_SERVICE_ID);
}
return 0;
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
index 8de1635c2..9584be027 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
@@ -33,23 +33,27 @@ import org.slf4j.LoggerFactory;
* @author pengys5, clevertension
*/
public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
+
private final Logger logger = LoggerFactory.getLogger(ServiceNameH2DAO.class);
- private static final String GET_SERVICE_NAME_SQL = "select {0} from {1} where {2} = ?";
+
+ private static final String GET_SERVICE_NAME_SQL = "select {0},{1} from {2} where {3} = ?";
private static final String GET_SERVICE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ? limit 1";
@Override public String getServiceName(int serviceId) {
H2Client client = getClient();
- String sql = SqlBuilder.buildSql(GET_SERVICE_NAME_SQL, ServiceNameTable.COLUMN_SERVICE_NAME,
+ String sql = SqlBuilder.buildSql(GET_SERVICE_NAME_SQL, ServiceNameTable.COLUMN_APPLICATION_ID, ServiceNameTable.COLUMN_SERVICE_NAME,
ServiceNameTable.TABLE, ServiceNameTable.COLUMN_SERVICE_ID);
Object[] params = new Object[] {serviceId};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
- return rs.getString(ServiceNameTable.COLUMN_SERVICE_NAME);
+ String serviceName = rs.getString(ServiceNameTable.COLUMN_SERVICE_NAME);
+ int applicationId = rs.getInt(ServiceNameTable.COLUMN_APPLICATION_ID);
+ return applicationId + Const.ID_SPLIT + serviceName;
}
} catch (SQLException | H2ClientException e) {
logger.error(e.getMessage(), e);
}
- return Const.UNKNOWN;
+ return Const.EMPTY_STRING;
}
@Override public int getServiceId(int applicationId, String serviceName) {
@@ -59,8 +63,7 @@ public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
Object[] params = new Object[] {applicationId, serviceName};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
- int serviceId = rs.getInt(ServiceNameTable.COLUMN_SERVICE_ID);
- return serviceId;
+ return rs.getInt(ServiceNameTable.COLUMN_SERVICE_ID);
}
} catch (SQLException | H2ClientException e) {
logger.error(e.getMessage(), e);
diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java
index 0a28d0880..8b0b9f22e 100644
--- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java
+++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java
@@ -19,14 +19,13 @@
package org.skywalking.apm.collector.client.h2;
import java.sql.Connection;
+import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import org.h2.jdbcx.JdbcConnectionPool;
import org.h2.util.IOUtils;
import org.skywalking.apm.collector.core.client.Client;
-import org.skywalking.apm.collector.core.config.SystemConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,32 +36,34 @@ public class H2Client implements Client {
private final Logger logger = LoggerFactory.getLogger(H2Client.class);
- private JdbcConnectionPool cp;
private Connection conn;
private String url;
private String userName;
private String password;
public H2Client() {
- this.url = "jdbc:h2:" + SystemConfig.DATA_PATH + "/h2";
+ this.url = "jdbc:h2:mem:collector";
this.userName = "";
this.password = "";
}
+ public H2Client(String url, String userName, String password) {
+ this.url = url;
+ this.userName = userName;
+ this.password = password;
+ }
+
@Override public void initialize() throws H2ClientException {
try {
- cp = JdbcConnectionPool.
- create(this.url, this.userName, this.password);
- conn = cp.getConnection();
+ Class.forName("org.h2.Driver");
+ conn = DriverManager.
+ getConnection(this.url, this.userName, this.password);
} catch (Exception e) {
throw new H2ClientException(e.getMessage(), e);
}
}
@Override public void shutdown() {
- if (cp != null) {
- cp.dispose();
- }
IOUtils.closeSilently(conn);
}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
index 2773286af..f16d4025b 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
@@ -38,9 +38,9 @@ public class ServiceEntryDataDefine extends DataDefine {
@Override protected void attributeDefine() {
addAttribute(0, new Attribute(ServiceEntryTable.COLUMN_ID, AttributeType.STRING, new NonOperation()));
- addAttribute(1, new Attribute(ServiceEntryTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new NonOperation()));
+ addAttribute(1, new Attribute(ServiceEntryTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation()));
addAttribute(2, new Attribute(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, AttributeType.INTEGER, new CoverOperation()));
- addAttribute(3, new Attribute(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, AttributeType.STRING, new NonOperation()));
+ addAttribute(3, new Attribute(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, AttributeType.STRING, new CoverOperation()));
addAttribute(4, new Attribute(ServiceEntryTable.COLUMN_REGISTER_TIME, AttributeType.LONG, new NonOperation()));
addAttribute(5, new Attribute(ServiceEntryTable.COLUMN_NEWEST_TIME, AttributeType.LONG, new CoverOperation()));
}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java
new file mode 100644
index 000000000..a467b9cf4
--- /dev/null
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.storage.h2;
+
+/**
+ * @author clevertension
+ */
+public class StorageH2Config {
+ public static String URL;
+ public static String USER_NAME;
+ public static String PASSWORD;
+}
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java
new file mode 100644
index 000000000..074c531fe
--- /dev/null
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.storage.h2;
+
+import java.util.Map;
+import org.skywalking.apm.collector.core.config.ConfigParseException;
+import org.skywalking.apm.collector.core.config.SystemConfig;
+import org.skywalking.apm.collector.core.module.ModuleConfigParser;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
+import org.skywalking.apm.collector.core.util.StringUtils;
+
+/**
+ * @author pengys5
+ */
+public class StorageH2ConfigParser implements ModuleConfigParser {
+ private static final String URL = "url";
+ public static final String USER_NAME = "user_name";
+ public static final String PASSWORD = "password";
+
+ @Override public void parse(Map config) throws ConfigParseException {
+ if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(URL))) {
+ StorageH2Config.URL = (String)config.get(URL);
+ } else {
+ StorageH2Config.URL = "jdbc:h2:" + SystemConfig.DATA_PATH + "/h2";
+ }
+ if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(USER_NAME))) {
+ StorageH2Config.USER_NAME = (String)config.get(USER_NAME);
+ } else {
+ StorageH2Config.USER_NAME = "sa";
+ }
+ if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(PASSWORD))) {
+ StorageH2Config.PASSWORD = (String)config.get(PASSWORD);
+ }
+ }
+}
\ No newline at end of file
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java
index 2de18e33a..e4ea3a81c 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java
@@ -51,11 +51,11 @@ public class StorageH2ModuleDefine extends StorageModuleDefine {
}
@Override protected ModuleConfigParser configParser() {
- return null;
+ return new StorageH2ConfigParser();
}
@Override protected Client createClient() {
- return new H2Client();
+ return new H2Client(StorageH2Config.URL, StorageH2Config.USER_NAME, StorageH2Config.PASSWORD);
}
@Override public StorageInstaller storageInstaller() {
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java
index 6920d915a..7b00d09ea 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java
@@ -66,7 +66,7 @@ public class GlobalTraceH2DAO extends H2DAO implements IGlobalTraceDAO {
while (rs.next()) {
String segmentId = rs.getString(GlobalTraceTable.COLUMN_SEGMENT_ID);
logger.debug("segmentId: {}, global trace id: {}", segmentId, globalTraceId);
- segmentIds.add(globalTraceId);
+ segmentIds.add(segmentId);
}
} catch (SQLException | H2ClientException e) {
logger.error(e.getMessage(), e);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
index cc67f7ac4..3f267af65 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
@@ -26,6 +26,4 @@ import java.util.Map;
*/
public interface IServiceReferenceDAO {
Map load(int entryServiceId, long startTime, long endTime);
-
- Map load(String entryServiceName, int entryApplicationId, long startTime, long endTime);
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java
index 079e2dc12..4421167b1 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java
@@ -18,13 +18,11 @@
package org.skywalking.apm.collector.ui.dao;
+import com.google.protobuf.InvalidProtocolBufferException;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Base64;
-
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
-import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.segment.SegmentTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
@@ -32,29 +30,25 @@ import org.skywalking.apm.network.proto.TraceSegmentObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.protobuf.InvalidProtocolBufferException;
-
/**
* @author pengys5, clevertension
*/
public class SegmentH2DAO extends H2DAO implements ISegmentDAO {
private final Logger logger = LoggerFactory.getLogger(SegmentH2DAO.class);
private static final String GET_SEGMENT_SQL = "select {0} from {1} where {2} = ?";
+
@Override public TraceSegmentObject load(String segmentId) {
H2Client client = getClient();
String sql = SqlBuilder.buildSql(GET_SEGMENT_SQL, SegmentTable.COLUMN_DATA_BINARY,
- SegmentTable.TABLE, "id");
- Object[] params = new Object[]{segmentId};
+ SegmentTable.TABLE, "id");
+ Object[] params = new Object[] {segmentId};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
- String dataBinaryBase64 = rs.getString(SegmentTable.COLUMN_DATA_BINARY);
- if (StringUtils.isNotEmpty(dataBinaryBase64)) {
- byte[] dataBinary = Base64.getDecoder().decode(dataBinaryBase64);
- try {
- return TraceSegmentObject.parseFrom(dataBinary);
- } catch (InvalidProtocolBufferException e) {
- logger.error(e.getMessage(), e);
- }
+ byte[] dataBinary = rs.getBytes(SegmentTable.COLUMN_DATA_BINARY);
+ try {
+ return TraceSegmentObject.parseFrom(dataBinary);
+ } catch (InvalidProtocolBufferException e) {
+ logger.error(e.getMessage(), e);
}
}
} catch (SQLException | H2ClientException e) {
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
index 664b9ca88..4017b306a 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
@@ -76,7 +76,7 @@ public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO {
while (rs.next()) {
int appId = rs.getInt(ServiceEntryTable.COLUMN_APPLICATION_ID);
int entryServiceId = rs.getInt(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID);
- String applicationCode = ApplicationCache.get(applicationId);
+ String applicationCode = ApplicationCache.get(appId);
String entryServiceName1 = rs.getString(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME);
JsonObject row = new JsonObject();
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
index 4a76bc848..00e24144c 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
@@ -29,11 +29,9 @@ import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
-import org.skywalking.apm.collector.cache.ServiceIdCache;
import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
import org.slf4j.Logger;
@@ -46,30 +44,6 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
private final Logger logger = LoggerFactory.getLogger(ServiceReferenceEsDAO.class);
- @Override
- public Map load(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
- SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ServiceReferenceTable.TABLE);
- searchRequestBuilder.setTypes(ServiceReferenceTable.TABLE_TYPE);
- searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
-
- BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
- boolQuery.must().add(QueryBuilders.rangeQuery(ServiceReferenceTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime));
- boolQuery.must().add(QueryBuilders.rangeQuery(ServiceReferenceTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime));
-
- int entryServiceId = ServiceIdCache.get(entryApplicationId, entryServiceName);
- BoolQueryBuilder entryBoolQuery = QueryBuilders.boolQuery();
- if (entryServiceId != 0) {
- entryBoolQuery.should().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, entryServiceId));
- }
- entryBoolQuery.should().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, entryApplicationId + Const.ID_SPLIT + entryServiceName));
- boolQuery.must(entryBoolQuery);
-
- searchRequestBuilder.setQuery(boolQuery);
- searchRequestBuilder.setSize(0);
-
- return load(searchRequestBuilder);
- }
-
@Override public Map load(int entryServiceId, long startTime, long endTime) {
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ServiceReferenceTable.TABLE);
searchRequestBuilder.setTypes(ServiceReferenceTable.TABLE_TYPE);
@@ -79,7 +53,7 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
boolQuery.must().add(QueryBuilders.rangeQuery(ServiceReferenceTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime));
boolQuery.must().add(QueryBuilders.rangeQuery(ServiceReferenceTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime));
- String entryServiceName = ServiceNameCache.get(entryServiceId);
+ String entryServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(entryServiceId));
BoolQueryBuilder entryBoolQuery = QueryBuilders.boolQuery();
entryBoolQuery.should().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, entryServiceId));
entryBoolQuery.should().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, entryServiceName));
@@ -131,14 +105,8 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
Sum summary = behindServiceIdBucket.getAggregations().get(ServiceReferenceTable.COLUMN_SUMMARY);
Sum costSum = behindServiceIdBucket.getAggregations().get(ServiceReferenceTable.COLUMN_COST_SUMMARY);
- String frontServiceName = ServiceNameCache.get(frontServiceId);
- if (StringUtils.isNotEmpty(frontServiceName)) {
- frontServiceName = frontServiceName.split(Const.ID_SPLIT)[1];
- }
- String behindServiceName = ServiceNameCache.get(behindServiceId);
- if (StringUtils.isNotEmpty(frontServiceName)) {
- behindServiceName = behindServiceName.split(Const.ID_SPLIT)[1];
- }
+ String frontServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(frontServiceId));
+ String behindServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(behindServiceId));
JsonObject serviceReference = new JsonObject();
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID), frontServiceId);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
index 24b224594..4a4a693eb 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
@@ -23,13 +23,11 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.Map;
-import org.skywalking.apm.collector.cache.ServiceIdCache;
import org.skywalking.apm.collector.cache.ServiceNameCache;
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.core.util.ColumnNameUtils;
import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable;
import org.skywalking.apm.collector.storage.h2.SqlBuilder;
import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
@@ -42,50 +40,18 @@ import org.slf4j.LoggerFactory;
public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO {
private final Logger logger = LoggerFactory.getLogger(ServiceReferenceH2DAO.class);
- private static final String GET_SRV_REF_LOAD1 = "select {4}, {5}, {6}, {7}, sum({8}) as cnt1, sum({9}) as cnt2, sum({10}) as cnt3" +
- ",sum({11}) as cnt4, sum({12}) cnt5, sum({13}) as cnt6, sum({14}) as cnt7 from {0} where {1} >= ? and {1} <= ? and {2} = ? and {3} = ? group by {4}, {5}, {6}, {7}";
- private static final String GET_SRV_REF_LOAD2 = "select {3}, {4}, {5}, {6}, sum({7}) as cnt1, sum({8}) as cnt2, sum({9}) as cnt3" +
- ",sum({10}) as cnt4, sum({11}) cnt5, sum({12}) as cnt6, sum({13}) as cnt7 from {0} where {1} >= ? and {1} <= ? and {2} = ? group by {3}, {4}, {5}, {6}";
-
- @Override
- public Map load(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
- H2Client client = getClient();
- String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD2, ServiceReferenceTable.TABLE,
- ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
- ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
- ServiceReferenceTable.COLUMN_COST_SUMMARY);
-
- Object[] params = new Object[] {startTime, endTime, entryServiceName};
- entryServiceName = entryApplicationId + Const.ID_SPLIT + entryServiceName;
- int entryServiceId = ServiceIdCache.get(entryApplicationId, entryServiceName);
- if (entryServiceId != 0) {
- sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE,
- ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
- ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
- ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
- ServiceReferenceTable.COLUMN_COST_SUMMARY);
- params = new Object[] {startTime, endTime, entryServiceId, entryServiceName};
- }
-
- return load(client, params, sql);
- }
+ private static final String GET_SRV_REF_LOAD1 = "select {3}, {4}, sum({5}) as {5}, sum({6}) as {6}, sum({7}) as {7}" +
+ ",sum({8}) as {8}, sum({9}) as {9}, sum({10}) as {10}, sum({11}) as {11} from {0} where {1} >= ? and {1} <= ? and {2} = ? group by {3}, {4}";
@Override public Map load(int entryServiceId, long startTime, long endTime) {
H2Client client = getClient();
String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE,
- ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME,
+ ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID,
ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID,
- ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME,
ServiceReferenceTable.COLUMN_S1_LTE, ServiceReferenceTable.COLUMN_S3_LTE, ServiceReferenceTable.COLUMN_S5_LTE,
ServiceReferenceTable.COLUMN_S5_GT, ServiceReferenceTable.COLUMN_ERROR, ServiceReferenceTable.COLUMN_SUMMARY,
ServiceReferenceTable.COLUMN_COST_SUMMARY);
- String entryServiceName = ServiceNameCache.get(entryServiceId);
- Object[] params = new Object[] {startTime, endTime, entryServiceId, entryServiceName};
+ Object[] params = new Object[] {startTime, endTime, entryServiceId};
return load(client, params, sql);
}
@@ -109,22 +75,16 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO
try {
int behindServiceId = rs.getInt(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID);
if (behindServiceId != 0) {
- long s1LteSum = rs.getLong("cnt1");
- long s3LteSum = rs.getLong("cnt2");
- long s5LteSum = rs.getLong("cnt3");
- long s5GtSum = rs.getLong("cnt3");
- long error = rs.getLong("cnt3");
- long summary = rs.getLong("cnt3");
- long costSum = rs.getLong("cnt3");
+ long s1LteSum = rs.getLong(ServiceReferenceTable.COLUMN_S1_LTE);
+ long s3LteSum = rs.getLong(ServiceReferenceTable.COLUMN_S3_LTE);
+ long s5LteSum = rs.getLong(ServiceReferenceTable.COLUMN_S5_LTE);
+ long s5GtSum = rs.getLong(ServiceReferenceTable.COLUMN_S5_GT);
+ long error = rs.getLong(ServiceReferenceTable.COLUMN_ERROR);
+ long summary = rs.getLong(ServiceReferenceTable.COLUMN_SUMMARY);
+ long costSum = rs.getLong(ServiceReferenceTable.COLUMN_COST_SUMMARY);
- String frontServiceName = ServiceNameCache.get(frontServiceId);
- if (StringUtils.isNotEmpty(frontServiceName)) {
- frontServiceName = frontServiceName.split(Const.ID_SPLIT)[1];
- }
- String behindServiceName = ServiceNameCache.get(behindServiceId);
- if (StringUtils.isNotEmpty(frontServiceName)) {
- behindServiceName = behindServiceName.split(Const.ID_SPLIT)[1];
- }
+ String frontServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(frontServiceId));
+ String behindServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(behindServiceId));
JsonObject serviceReference = new JsonObject();
serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID), frontServiceId);
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
index a0ab797a8..1103e391e 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
@@ -39,7 +39,6 @@ import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetr
import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceOsInfoGetHandler;
import org.skywalking.apm.collector.ui.jetty.handler.servicetree.EntryServiceGetHandler;
import org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetByIdHandler;
-import org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetByNameHandler;
import org.skywalking.apm.collector.ui.jetty.handler.time.AllInstanceLastTimeGetHandler;
import org.skywalking.apm.collector.ui.jetty.handler.time.OneInstanceLastTimeGetHandler;
@@ -89,7 +88,6 @@ public class UIJettyModuleDefine extends UIModuleDefine {
handlers.add(new InstanceMetricGetRangeTimeBucketHandler());
handlers.add(new EntryServiceGetHandler());
handlers.add(new ServiceTreeGetByIdHandler());
- handlers.add(new ServiceTreeGetByNameHandler());
return handlers;
}
}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByNameHandler.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByNameHandler.java
deleted file mode 100644
index 41b36dee4..000000000
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByNameHandler.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.ui.jetty.handler.servicetree;
-
-import com.google.gson.JsonElement;
-import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
-import org.skywalking.apm.collector.server.jetty.JettyHandler;
-import org.skywalking.apm.collector.ui.service.ServiceTreeService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author pengys5
- */
-public class ServiceTreeGetByNameHandler extends JettyHandler {
-
- private final Logger logger = LoggerFactory.getLogger(ServiceTreeGetByNameHandler.class);
-
- @Override public String pathSpec() {
- return "/service/tree/entryServiceName";
- }
-
- private ServiceTreeService service = new ServiceTreeService();
-
- @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
- if (!req.getParameterMap().containsKey("entryServiceName") || !req.getParameterMap().containsKey("entryApplicationId") || !req.getParameterMap().containsKey("startTime") || !req.getParameterMap().containsKey("endTime")) {
- throw new ArgumentsParseException("must contains parameters: entryServiceName, entryApplicationId, startTime, endTime");
- }
-
- String entryServiceName = req.getParameter("entryServiceName");
- String entryApplicationIdStr = req.getParameter("entryApplicationId");
- String startTimeStr = req.getParameter("startTime");
- String endTimeStr = req.getParameter("endTime");
- logger.debug("service entry get entryServiceName: {}, startTime: {}, endTime: {}", entryServiceName, startTimeStr, endTimeStr);
-
- int entryApplicationId;
- try {
- entryApplicationId = Integer.parseInt(entryApplicationIdStr);
- } catch (NumberFormatException e) {
- throw new ArgumentsParseException("entry application id must be integer");
- }
-
- long startTime;
- try {
- startTime = Long.parseLong(startTimeStr);
- } catch (NumberFormatException e) {
- throw new ArgumentsParseException("start time must be long");
- }
-
- long endTime;
- try {
- endTime = Long.parseLong(endTimeStr);
- } catch (NumberFormatException e) {
- throw new ArgumentsParseException("end time must be long");
- }
-
- return service.loadServiceTree(entryServiceName, entryApplicationId, startTime, endTime);
- }
-
- @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
index 5ca0938d4..ef966e3d1 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
+++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
@@ -47,12 +47,6 @@ public class ServiceTreeService {
return buildTreeData(serviceReferenceMap);
}
- public JsonArray loadServiceTree(String entryServiceName, int entryApplicationId, long startTime, long endTime) {
- IServiceReferenceDAO serviceReferenceDAO = (IServiceReferenceDAO)DAOContainer.INSTANCE.get(IServiceReferenceDAO.class.getName());
- Map serviceReferenceMap = serviceReferenceDAO.load(entryServiceName, entryApplicationId, startTime, endTime);
- return buildTreeData(serviceReferenceMap);
- }
-
private JsonArray buildTreeData(Map serviceReferenceMap) {
JsonArray serviceReferenceArray = new JsonArray();
JsonObject rootServiceReference = findRoot(serviceReferenceMap);
From 5ae51d2fc37ae53aa56e450fe85104451eadf919 Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Sat, 21 Oct 2017 09:03:22 +0800
Subject: [PATCH 5/7] Fixed check style error.
---
.../agentstream/worker/segment/buffer/OffsetManager.java | 6 +-----
.../worker/segment/buffer/SegmentBufferReader.java | 6 +-----
.../segment/standardization/ReferenceIdExchanger.java | 8 ++++----
.../worker/segment/standardization/SpanIdExchanger.java | 8 ++++----
4 files changed, 10 insertions(+), 18 deletions(-)
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
index e895b52c0..c2e64b34d 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
@@ -142,11 +142,7 @@ public enum OffsetManager {
class PrefixFileNameFilter implements FilenameFilter {
@Override public boolean accept(File dir, String name) {
- if (name.startsWith(OFFSET_FILE_PREFIX)) {
- return true;
- } else {
- return false;
- }
+ return name.startsWith(OFFSET_FILE_PREFIX);
}
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
index 775c6c9d6..3fd3f7db6 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
@@ -141,11 +141,7 @@ public enum SegmentBufferReader {
class PrefixFileNameFilter implements FilenameFilter {
@Override public boolean accept(File dir, String name) {
- if (name.startsWith(SegmentBufferManager.DATA_FILE_PREFIX)) {
- return true;
- } else {
- return false;
- }
+ return name.startsWith(SegmentBufferManager.DATA_FILE_PREFIX);
}
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
index 683ba5ff3..10b43955c 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
@@ -33,13 +33,13 @@ public class ReferenceIdExchanger implements IdExchanger {
private final Logger logger = LoggerFactory.getLogger(ReferenceIdExchanger.class);
- private static ReferenceIdExchanger exchanger;
+ private static ReferenceIdExchanger EXCHANGER;
public static ReferenceIdExchanger getInstance() {
- if (exchanger == null) {
- exchanger = new ReferenceIdExchanger();
+ if (EXCHANGER == null) {
+ EXCHANGER = new ReferenceIdExchanger();
}
- return exchanger;
+ return EXCHANGER;
}
@Override public boolean exchange(ReferenceDecorator standardBuilder, int applicationId) {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
index 2ab1c056f..b06a1c540 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
@@ -28,13 +28,13 @@ import org.skywalking.apm.collector.core.util.StringUtils;
*/
public class SpanIdExchanger implements IdExchanger {
- private static SpanIdExchanger exchanger;
+ private static SpanIdExchanger EXCHANGER;
public static SpanIdExchanger getInstance() {
- if (exchanger == null) {
- exchanger = new SpanIdExchanger();
+ if (EXCHANGER == null) {
+ EXCHANGER = new SpanIdExchanger();
}
- return exchanger;
+ return EXCHANGER;
}
@Override public boolean exchange(SpanDecorator standardBuilder, int applicationId) {
From 60f94213df5d8dd542251b150130488cba31b393 Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Sat, 21 Oct 2017 09:40:43 +0800
Subject: [PATCH 6/7] Fixed the suggest of review.
---
.../servicename/ServiceNameService.java | 4 +--
.../ApplicationRegisterSerialWorker.java | 3 +-
.../ServiceNameRegisterSerialWorker.java | 3 +-
.../agentstream/mock/SegmentPost.java | 4 ---
.../segment/buffer/OffsetManagerTestCase.java | 31 -------------------
.../apm/collector/cache/ApplicationCache.java | 6 ++--
.../apm/collector/cache/InstanceCache.java | 4 +--
.../apm/collector/cache/ServiceIdCache.java | 4 +--
.../apm/collector/cache/ServiceNameCache.java | 4 +--
...nEsDAO.java => ApplicationEsCacheDAO.java} | 4 +--
...nH2DAO.java => ApplicationH2CacheDAO.java} | 23 +++++++++-----
...tionDAO.java => IApplicationCacheDAO.java} | 2 +-
...nstanceDAO.java => IInstanceCacheDAO.java} | 2 +-
...NameDAO.java => IServiceNameCacheDAO.java} | 2 +-
...anceEsDAO.java => InstanceEsCacheDAO.java} | 4 +--
...anceH2DAO.java => InstanceH2CacheDAO.java} | 4 +--
...eEsDAO.java => ServiceNameEsCacheDAO.java} | 2 +-
...eH2DAO.java => ServiceNameH2CacheDAO.java} | 4 +--
.../apm/collector/storage/h2/dao/H2DAO.java | 9 +++---
19 files changed, 47 insertions(+), 72 deletions(-)
delete mode 100644 apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{ApplicationEsDAO.java => ApplicationEsCacheDAO.java} (96%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{ApplicationH2DAO.java => ApplicationH2CacheDAO.java} (68%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{IApplicationDAO.java => IApplicationCacheDAO.java} (95%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{IInstanceDAO.java => IInstanceCacheDAO.java} (95%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{IServiceNameDAO.java => IServiceNameCacheDAO.java} (95%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{InstanceEsDAO.java => InstanceEsCacheDAO.java} (93%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{InstanceH2DAO.java => InstanceH2CacheDAO.java} (95%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{ServiceNameEsDAO.java => ServiceNameEsCacheDAO.java} (97%)
rename apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/{ServiceNameH2DAO.java => ServiceNameH2CacheDAO.java} (96%)
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
index 2afb23346..fa0a0de23 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
@@ -19,7 +19,7 @@
package org.skywalking.apm.collector.agentregister.servicename;
import org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameRegisterRemoteWorker;
-import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
+import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO;
import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
@@ -38,7 +38,7 @@ public class ServiceNameService {
private final Logger logger = LoggerFactory.getLogger(ServiceNameService.class);
public int getOrCreate(int applicationId, String serviceName) {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
+ IServiceNameCacheDAO dao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName());
int serviceId = dao.getServiceId(applicationId, serviceName);
if (serviceId == 0) {
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
index 79829571d..fcfd356e2 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
@@ -20,6 +20,7 @@ package org.skywalking.apm.collector.agentregister.worker.application;
import org.skywalking.apm.collector.agentregister.worker.IdAutoIncrement;
import org.skywalking.apm.collector.agentregister.worker.application.dao.IApplicationDAO;
+import org.skywalking.apm.collector.cache.dao.IApplicationCacheDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.skywalking.apm.collector.storage.define.DataDefine;
@@ -55,7 +56,7 @@ public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker {
ApplicationDataDefine.Application application = (ApplicationDataDefine.Application)message;
logger.debug("register application, application code: {}", application.getApplicationCode());
- org.skywalking.apm.collector.cache.dao.IApplicationDAO cacheDao = (org.skywalking.apm.collector.cache.dao.IApplicationDAO)DAOContainer.INSTANCE.get(org.skywalking.apm.collector.cache.dao.IApplicationDAO.class.getName());
+ IApplicationCacheDAO cacheDao = (IApplicationCacheDAO)DAOContainer.INSTANCE.get(IApplicationCacheDAO.class.getName());
int applicationId = cacheDao.getApplicationId(application.getApplicationCode());
IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
index 59bcd0280..396542d39 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
@@ -20,6 +20,7 @@ package org.skywalking.apm.collector.agentregister.worker.servicename;
import org.skywalking.apm.collector.agentregister.worker.IdAutoIncrement;
import org.skywalking.apm.collector.agentregister.worker.servicename.dao.IServiceNameDAO;
+import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.skywalking.apm.collector.storage.define.DataDefine;
@@ -55,7 +56,7 @@ public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker {
ServiceNameDataDefine.ServiceName serviceName = (ServiceNameDataDefine.ServiceName)message;
logger.debug("register service name: {}, application id: {}", serviceName.getServiceName(), serviceName.getApplicationId());
- org.skywalking.apm.collector.cache.dao.IServiceNameDAO cacheDao = (org.skywalking.apm.collector.cache.dao.IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
+ IServiceNameCacheDAO cacheDao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
int serviceId = cacheDao.getServiceId(serviceName.getApplicationId(), serviceName.getServiceName());
IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
index 3675883b1..f93be5463 100644
--- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
+++ b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
@@ -135,8 +135,4 @@ public class SegmentPost {
return osInfoJson;
}
-
- private void newDao() {
-
- }
}
diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java
deleted file mode 100644
index 36cb156ac..000000000
--- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManagerTestCase.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
-
-import org.junit.Test;
-
-/**
- * @author pengys5
- */
-public class OffsetManagerTestCase {
-
- @Test
- public void test() {
- }
-}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
index 8bf3476ad..fda776f3b 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java
@@ -20,7 +20,7 @@ package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.cache.dao.IApplicationDAO;
+import org.skywalking.apm.collector.cache.dao.IApplicationCacheDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
@@ -37,7 +37,7 @@ public class ApplicationCache {
private static Cache CODE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build();
public static int get(String applicationCode) {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
+ IApplicationCacheDAO dao = (IApplicationCacheDAO)DAOContainer.INSTANCE.get(IApplicationCacheDAO.class.getName());
int applicationId = 0;
try {
@@ -58,7 +58,7 @@ public class ApplicationCache {
private static Cache ID_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
public static String get(int applicationId) {
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
+ IApplicationCacheDAO dao = (IApplicationCacheDAO)DAOContainer.INSTANCE.get(IApplicationCacheDAO.class.getName());
String applicationCode = Const.EMPTY_STRING;
try {
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
index 92511a268..8095c609b 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java
@@ -20,7 +20,7 @@ package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.cache.dao.IInstanceDAO;
+import org.skywalking.apm.collector.cache.dao.IInstanceCacheDAO;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ public class InstanceCache {
private static Cache INSTANCE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build();
public static int get(int applicationInstanceId) {
- IInstanceDAO dao = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
+ IInstanceCacheDAO dao = (IInstanceCacheDAO)DAOContainer.INSTANCE.get(IInstanceCacheDAO.class.getName());
int applicationId = 0;
try {
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
index 1688f5166..4cb266093 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java
@@ -20,7 +20,7 @@ package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
+import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
import org.slf4j.Logger;
@@ -37,7 +37,7 @@ public class ServiceIdCache {
private static Cache SERVICE_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build();
public static int get(int applicationId, String serviceName) {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
+ IServiceNameCacheDAO dao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName());
int serviceId = 0;
try {
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
index cf5ed591d..16d1766b3 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java
@@ -20,7 +20,7 @@ package org.skywalking.apm.collector.cache;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import org.skywalking.apm.collector.cache.dao.IServiceNameDAO;
+import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.storage.dao.DAOContainer;
@@ -38,7 +38,7 @@ public class ServiceNameCache {
private static Cache CACHE = CacheBuilder.newBuilder().maximumSize(10000).build();
public static String get(int serviceId) {
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
+ IServiceNameCacheDAO dao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName());
String serviceName = Const.EMPTY_STRING;
try {
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsCacheDAO.java
similarity index 96%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsCacheDAO.java
index c019fccaa..cfd14a85b 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsCacheDAO.java
@@ -35,9 +35,9 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
-public class ApplicationEsDAO extends EsDAO implements IApplicationDAO {
+public class ApplicationEsCacheDAO extends EsDAO implements IApplicationCacheDAO {
- private final Logger logger = LoggerFactory.getLogger(ApplicationEsDAO.class);
+ private final Logger logger = LoggerFactory.getLogger(ApplicationEsCacheDAO.class);
@Override public int getApplicationId(String applicationCode) {
ElasticSearchClient client = getClient();
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2CacheDAO.java
similarity index 68%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2CacheDAO.java
index dbf9d70c9..a22acbc13 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2CacheDAO.java
@@ -32,23 +32,32 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5, clevertension
*/
-public class ApplicationH2DAO extends H2DAO implements IApplicationDAO {
+public class ApplicationH2CacheDAO extends H2DAO implements IApplicationCacheDAO {
- private final Logger logger = LoggerFactory.getLogger(ApplicationH2DAO.class);
- private static final String GET_APPLICATION_CODE_SQL = "select {0} from {1} where {2} = ?";
+ private final Logger logger = LoggerFactory.getLogger(ApplicationH2CacheDAO.class);
+ private static final String GET_APPLICATION_ID_OR_CODE_SQL = "select {0} from {1} where {2} = ?";
@Override
public int getApplicationId(String applicationCode) {
logger.info("get the application id with application code = {}", applicationCode);
- String sql = "select " + ApplicationTable.COLUMN_APPLICATION_ID + " from " +
- ApplicationTable.TABLE + " where " + ApplicationTable.COLUMN_APPLICATION_CODE + "='" + applicationCode + "'";
- return getIntValueBySQL(sql);
+ H2Client client = getClient();
+ String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_OR_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_ID, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_CODE);
+
+ Object[] params = new Object[] {applicationCode};
+ try (ResultSet rs = client.executeQuery(sql, params)) {
+ if (rs.next()) {
+ return rs.getInt(1);
+ }
+ } catch (SQLException | H2ClientException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return 0;
}
@Override public String getApplicationCode(int applicationId) {
logger.debug("get application code, applicationId: {}", applicationId);
H2Client client = getClient();
- String sql = SqlBuilder.buildSql(GET_APPLICATION_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_CODE, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID);
+ String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_OR_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_CODE, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID);
Object[] params = new Object[] {applicationId};
try (ResultSet rs = client.executeQuery(sql, params)) {
if (rs.next()) {
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationCacheDAO.java
similarity index 95%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationCacheDAO.java
index 4b0bb4525..54d1576ad 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationCacheDAO.java
@@ -21,7 +21,7 @@ package org.skywalking.apm.collector.cache.dao;
/**
* @author pengys5
*/
-public interface IApplicationDAO {
+public interface IApplicationCacheDAO {
int getApplicationId(String applicationCode);
String getApplicationCode(int applicationId);
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceCacheDAO.java
similarity index 95%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceCacheDAO.java
index 281f947f1..fcd34b8f5 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceCacheDAO.java
@@ -21,6 +21,6 @@ package org.skywalking.apm.collector.cache.dao;
/**
* @author pengys5
*/
-public interface IInstanceDAO {
+public interface IInstanceCacheDAO {
int getApplicationId(int applicationInstanceId);
}
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameCacheDAO.java
similarity index 95%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameCacheDAO.java
index eede2558c..bbf81981b 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameCacheDAO.java
@@ -21,7 +21,7 @@ package org.skywalking.apm.collector.cache.dao;
/**
* @author pengys5
*/
-public interface IServiceNameDAO {
+public interface IServiceNameCacheDAO {
String getServiceName(int serviceId);
int getServiceId(int applicationId, String serviceName);
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsCacheDAO.java
similarity index 93%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsCacheDAO.java
index abc9b4133..a878901f9 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsCacheDAO.java
@@ -27,9 +27,9 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
-public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
+public class InstanceEsCacheDAO extends EsDAO implements IInstanceCacheDAO {
- private final Logger logger = LoggerFactory.getLogger(InstanceEsDAO.class);
+ private final Logger logger = LoggerFactory.getLogger(InstanceEsCacheDAO.class);
@Override public int getApplicationId(int applicationInstanceId) {
GetResponse response = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(applicationInstanceId)).get();
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2CacheDAO.java
similarity index 95%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2CacheDAO.java
index 2b4ce8256..d1a884236 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2CacheDAO.java
@@ -31,9 +31,9 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
-public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
+public class InstanceH2CacheDAO extends H2DAO implements IInstanceCacheDAO {
- private final Logger logger = LoggerFactory.getLogger(InstanceH2DAO.class);
+ private final Logger logger = LoggerFactory.getLogger(InstanceH2CacheDAO.class);
private static final String GET_APPLICATION_ID_SQL = "select {0} from {1} where {2} = ?";
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsCacheDAO.java
similarity index 97%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsCacheDAO.java
index 83a922b7a..820b12020 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsDAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsCacheDAO.java
@@ -33,7 +33,7 @@ import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
/**
* @author pengys5
*/
-public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
+public class ServiceNameEsCacheDAO extends EsDAO implements IServiceNameCacheDAO {
@Override public String getServiceName(int serviceId) {
GetRequestBuilder getRequestBuilder = getClient().prepareGet(ServiceNameTable.TABLE, String.valueOf(serviceId));
diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2CacheDAO.java
similarity index 96%
rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
rename to apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2CacheDAO.java
index 9584be027..b3befc259 100644
--- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2DAO.java
+++ b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2CacheDAO.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5, clevertension
*/
-public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
+public class ServiceNameH2CacheDAO extends H2DAO implements IServiceNameCacheDAO {
- private final Logger logger = LoggerFactory.getLogger(ServiceNameH2DAO.class);
+ private final Logger logger = LoggerFactory.getLogger(ServiceNameH2CacheDAO.class);
private static final String GET_SERVICE_NAME_SQL = "select {0},{1} from {2} where {3} = ?";
private static final String GET_SERVICE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ? limit 1";
diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java
index 39dbc78e0..fd66357bf 100644
--- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java
+++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java
@@ -20,7 +20,6 @@ package org.skywalking.apm.collector.storage.h2.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
-
import org.skywalking.apm.collector.client.h2.H2Client;
import org.skywalking.apm.collector.client.h2.H2ClientException;
import org.skywalking.apm.collector.storage.dao.DAO;
@@ -32,17 +31,18 @@ import org.slf4j.LoggerFactory;
*/
public abstract class H2DAO extends DAO {
private final Logger logger = LoggerFactory.getLogger(H2DAO.class);
- public final int getMaxId(String tableName, String columnName) {
+
+ protected final int getMaxId(String tableName, String columnName) {
String sql = "select max(" + columnName + ") from " + tableName;
return getIntValueBySQL(sql);
}
- public final int getMinId(String tableName, String columnName) {
+ protected final int getMinId(String tableName, String columnName) {
String sql = "select min(" + columnName + ") from " + tableName;
return getIntValueBySQL(sql);
}
- public final int getIntValueBySQL(String sql) {
+ private int getIntValueBySQL(String sql) {
H2Client client = getClient();
try (ResultSet rs = client.executeQuery(sql, null)) {
if (rs.next()) {
@@ -58,5 +58,4 @@ public abstract class H2DAO extends DAO {
}
return 0;
}
-
}
From 6208b9cb44a0fc5c5c66d6ce5b6aef7870d85511 Mon Sep 17 00:00:00 2001
From: peng-yongsheng <8082209@qq.com>
Date: Sat, 21 Oct 2017 10:22:57 +0800
Subject: [PATCH 7/7] Change the file name.
---
.../agentstream/worker/segment/buffer/OffsetManager.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
index c2e64b34d..58afe2505 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
+++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
@@ -90,14 +90,14 @@ public enum OffsetManager {
String offsetRecord = offset.serialize();
if (!lastOffsetRecord.equals(offsetRecord)) {
if (offsetFile.length() >= BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE) {
- exchangeFile();
+ nextFile();
}
FileUtils.INSTANCE.writeAppendToLast(offsetFile, randomAccessFile, offsetRecord);
lastOffsetRecord = offsetRecord;
}
}
- private void exchangeFile() {
+ private void nextFile() {
String timeBucket = String.valueOf(TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()));
String offsetFileName = OFFSET_FILE_PREFIX + "_" + timeBucket + "." + Const.FILE_SUFFIX;
File newOffsetFile = new File(SegmentBufferConfig.BUFFER_PATH + offsetFileName);