diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/PreparedStatementParameterBuilder.java b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/PreparedStatementParameterBuilder.java index 1209b80c8..33bda2878 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/PreparedStatementParameterBuilder.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/PreparedStatementParameterBuilder.java @@ -44,8 +44,7 @@ public class PreparedStatementParameterBuilder { return EMPTY_LIST; } - String parameterString = getParameterString(); - return truncate(parameterString); + return getParameterString(); } private String getParameterString() { @@ -58,8 +57,13 @@ public class PreparedStatementParameterBuilder { } stringBuilder.append(parameter); first = false; + + // cut the string as soon as it reached the length limitation + if (maxLength > 0 && (stringBuilder.length() + EMPTY_LIST.length()) > maxLength) { + return format(stringBuilder).substring(0, maxLength) + "..."; + } } - return String.format("[%s]", stringBuilder.toString()); + return format(stringBuilder); } private int getMaxIndex() { @@ -67,12 +71,8 @@ public class PreparedStatementParameterBuilder { return Math.min(maxIdx, parameters.length); } - private String truncate(String parameterString) { - if (maxLength > 0 && parameterString.length() > maxLength) { - parameterString = parameterString.substring(0, maxLength) + "..."; - } - - return parameterString; + private String format(StringBuilder stringBuilder) { + return String.format("[%s]", stringBuilder.toString()); } }