From 72546a75c35cfb6c259a247d003fd99423f60347 Mon Sep 17 00:00:00 2001 From: haoyann <1064645534@qq.com> Date: Sun, 28 Feb 2021 17:51:03 +0800 Subject: [PATCH] fix `DatabaseSlowStatementBuilder` statement maybe null (#6470) --- CHANGES.md | 1 + .../listener/MultiScopesAnalysisListener.java | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index aca21c8928..aa403b8d3c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -37,6 +37,7 @@ Release Notes. * Remove the experimental Zipkin span analyzer. * Upgrade the Zipkin Elasticsearch storage from 6 to 7. * Require Zipkin receiver must work with `zipkin-elasticsearch7` storage option. +* Fix `DatabaseSlowStatementBuilder` statement maybe null. #### UI * Update selector scroller to show in all pages. diff --git a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/MultiScopesAnalysisListener.java b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/MultiScopesAnalysisListener.java index 207e53f208..7aae0fab00 100644 --- a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/MultiScopesAnalysisListener.java +++ b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/trace/parser/listener/MultiScopesAnalysisListener.java @@ -206,12 +206,12 @@ public class MultiScopesAnalysisListener implements EntryAnalysisListener, ExitA for (KeyStringValuePair tag : span.getTagsList()) { if (SpanTags.DB_STATEMENT.equals(tag.getKey())) { String sqlStatement = tag.getValue(); - if (StringUtil.isEmpty(sqlStatement)) { - slowStatementBuilder.setStatement("[No statement]/" + span.getOperationName()); - } else if (sqlStatement.length() > config.getMaxSlowSQLLength()) { - slowStatementBuilder.setStatement(sqlStatement.substring(0, config.getMaxSlowSQLLength())); - } else { - slowStatementBuilder.setStatement(sqlStatement); + if (StringUtil.isNotEmpty(sqlStatement)) { + if (sqlStatement.length() > config.getMaxSlowSQLLength()) { + slowStatementBuilder.setStatement(sqlStatement.substring(0, config.getMaxSlowSQLLength())); + } else { + slowStatementBuilder.setStatement(sqlStatement); + } } } else if (SpanTags.DB_TYPE.equals(tag.getKey())) { String dbType = tag.getValue(); @@ -223,6 +223,11 @@ public class MultiScopesAnalysisListener implements EntryAnalysisListener, ExitA } } + if (StringUtil.isEmpty(slowStatementBuilder.getStatement())) { + String statement = StringUtil.isEmpty( + span.getOperationName()) ? "[No statement]" : "[No statement]/" + span.getOperationName(); + slowStatementBuilder.setStatement(statement); + } if (isSlowDBAccess) { dbSlowStatementBuilders.add(slowStatementBuilder); } -- GitLab