From ca7619d06938777ec7d65510e052e4c4d391a042 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Tue, 25 Jul 2017 11:34:29 +0800 Subject: [PATCH] fix send duplicate jvm data issue --- .../org/skywalking/apm/agent/core/jvm/JVMService.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java index 6ac9a0a2b..3ed86e3a1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java @@ -83,7 +83,7 @@ public class JVMService implements BootService, Runnable { jvmBuilder.addAllGc(GCProvider.INSTANCE.getGCList()); JVMMetric jvmMetric = jvmBuilder.build(); - if (queue.offer(jvmMetric)) { + if (!queue.offer(jvmMetric)) { queue.poll(); queue.offer(jvmMetric); } @@ -107,10 +107,11 @@ public class JVMService implements BootService, Runnable { JVMMetrics.Builder builder = JVMMetrics.newBuilder(); LinkedList buffer = new LinkedList(); queue.drainTo(buffer); - builder.addAllMetrics(buffer); - - builder.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID); - stub.collect(builder.build()); + if (buffer.size() > 0) { + builder.addAllMetrics(buffer); + builder.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID); + stub.collect(builder.build()); + } } catch (Throwable t) { logger.error(t, "send JVM metrics to Collector fail."); }