From f3847972e35719a8090b7c7b20e68e5247212c8c Mon Sep 17 00:00:00 2001 From: goldon Date: Wed, 3 Jan 2018 14:14:40 +0800 Subject: [PATCH 1/2] Update StringUtil.java clean code --- .../main/java/org/apache/skywalking/apm/util/StringUtil.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringUtil.java b/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringUtil.java index 9e7aefe4e..e1ca37830 100644 --- a/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringUtil.java +++ b/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringUtil.java @@ -21,10 +21,7 @@ package org.apache.skywalking.apm.util; public final class StringUtil { public static boolean isEmpty(String str) { - if (str == null || "".equals(str) || str.length() == 0) { - return true; - } - return false; + return str == null || str.length() == 0; } public static String join(final char delimiter, final String... strings) { From 92b320ebc28d90e5a768a5fa25076db322033966 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Thu, 4 Jan 2018 10:29:22 +0800 Subject: [PATCH 2/2] Add warning log outputs, if too many spans created in one segment. --- .../apm/agent/core/context/TracingContext.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java index cbbad7f67..03a1900a7 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java @@ -35,6 +35,8 @@ import org.apache.skywalking.apm.agent.core.context.trace.WithPeerInfo; import org.apache.skywalking.apm.agent.core.dictionary.DictionaryManager; import org.apache.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.apache.skywalking.apm.agent.core.dictionary.PossibleFound; +import org.apache.skywalking.apm.agent.core.logging.api.ILog; +import org.apache.skywalking.apm.agent.core.logging.api.LogManager; import org.apache.skywalking.apm.agent.core.sampling.SamplingService; /** @@ -52,6 +54,9 @@ import org.apache.skywalking.apm.agent.core.sampling.SamplingService; * @author zhang xin */ public class TracingContext implements AbstractTracerContext { + private static final ILog logger = LogManager.getLogger(TracingContext.class); + private long lastWarningTimestamp = 0; + /** * @see {@link SamplingService} */ @@ -506,6 +511,16 @@ public class TracingContext implements AbstractTracerContext { } private boolean isLimitMechanismWorking() { - return spanIdGenerator >= Config.Agent.SPAN_LIMIT_PER_SEGMENT; + if (spanIdGenerator >= Config.Agent.SPAN_LIMIT_PER_SEGMENT) { + long currentTimeMillis = System.currentTimeMillis(); + if (currentTimeMillis - lastWarningTimestamp > 30 * 1000) { + logger.warn(new RuntimeException("Shadow tracing context. Thread dump"), "More than {} spans required to create", + Config.Agent.SPAN_LIMIT_PER_SEGMENT); + lastWarningTimestamp = currentTimeMillis; + } + return true; + } else { + return false; + } } }