From 41840ce85164106f3b5a7485664828841104c5cd Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 3 Mar 2018 16:05:21 +0800 Subject: [PATCH] Fixed the bug which the memory max non heap metric value is -1 when using JDK 1.8. --- .../es/dao/ui/MemoryMetricEsUIDAO.java | 8 +++++++- .../h2/dao/ui/MemoryMetricH2UIDAO.java | 7 ++++++- .../collector/ui/service/ServerService.java | 20 +++++++++++-------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java index 66f2290d49..6e5e891d43 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java @@ -66,8 +66,14 @@ public class MemoryMetricEsUIDAO extends EsDAO implements IMemoryMetricUIDAO { long max = ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_MAX)).longValue(); long used = ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_USED)).longValue(); long times = ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_TIMES)).longValue(); + trend.getMetrics().add((int)(used / times)); - trend.getMaxMetrics().add((int)(max / times)); + + if (max < 0) { + trend.getMaxMetrics().add((int)(used / times)); + } else { + trend.getMaxMetrics().add((int)(max / times)); + } } else { trend.getMetrics().add(0); trend.getMaxMetrics().add(0); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java index bc84318cf6..87c733d83f 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java @@ -71,7 +71,12 @@ public class MemoryMetricH2UIDAO extends H2DAO implements IMemoryMetricUIDAO { long used = rs.getLong(MemoryMetricTable.COLUMN_USED); long times = rs.getLong(MemoryMetricTable.COLUMN_TIMES); trend.getMetrics().add((int)(used / times)); - trend.getMaxMetrics().add((int)(max / times)); + + if (max < 0) { + trend.getMaxMetrics().add((int)(used / times)); + } else { + trend.getMaxMetrics().add((int)(max / times)); + } } else { trend.getMetrics().add(0); trend.getMaxMetrics().add(0); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java index 93528977ac..667c1b864d 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java @@ -26,7 +26,6 @@ import java.util.LinkedList; import java.util.List; import org.apache.skywalking.apm.collector.cache.CacheModule; import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService; -import org.apache.skywalking.apm.collector.cache.service.InstanceCacheService; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.StringUtils; @@ -59,7 +58,6 @@ public class ServerService { private final ICpuMetricUIDAO cpuMetricUIDAO; private final IGCMetricUIDAO gcMetricUIDAO; private final IMemoryMetricUIDAO memoryMetricUIDAO; - private final InstanceCacheService instanceCacheService; private final ApplicationCacheService applicationCacheService; private final SecondBetweenService secondBetweenService; @@ -69,18 +67,18 @@ public class ServerService { this.cpuMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(ICpuMetricUIDAO.class); this.gcMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IGCMetricUIDAO.class); this.memoryMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IMemoryMetricUIDAO.class); - this.instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class); this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); this.secondBetweenService = new SecondBetweenService(moduleManager); } public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { List serverInfos = instanceUIDAO.searchServer(keyword, startSecondTimeBucket, endSecondTimeBucket); - serverInfos.forEach(serverInfo -> { - if (serverInfo.getId() == Const.NONE_INSTANCE_ID) { - serverInfos.remove(serverInfo); + + for (int i = serverInfos.size() - 1; i >= 0; i--) { + if (serverInfos.get(i).getId() == Const.NONE_INSTANCE_ID) { + serverInfos.remove(i); } - }); + } buildAppServerInfo(serverInfos); return serverInfos; @@ -164,6 +162,8 @@ public class ServerService { private void buildAppServerInfo(List serverInfos) { serverInfos.forEach(serverInfo -> { serverInfo.setApplicationCode(applicationCacheService.getApplicationById(serverInfo.getApplicationId()).getApplicationCode()); + StringBuilder nameBuilder = new StringBuilder(); + nameBuilder.append(serverInfo.getApplicationCode()); if (StringUtils.isNotEmpty(serverInfo.getOsInfo())) { JsonObject osInfoJson = gson.fromJson(serverInfo.getOsInfo(), JsonObject.class); if (osInfoJson.has("osName")) { @@ -180,10 +180,14 @@ public class ServerService { JsonArray ipv4Array = osInfoJson.get("ipv4s").getAsJsonArray(); List ipv4s = new LinkedList<>(); - ipv4Array.forEach(ipv4 -> ipv4s.add(ipv4.getAsString())); + ipv4Array.forEach(ipv4 -> { + ipv4s.add(ipv4.getAsString()); + nameBuilder.append(Const.ID_SPLIT).append(ipv4.getAsString()); + }); serverInfo.setIpv4(ipv4s); } } + serverInfo.setName(nameBuilder.toString()); }); } } -- GitLab