From 1297d2e1d250de39c452d9faf503db54d73e5bff Mon Sep 17 00:00:00 2001 From: raybi-asus <72775443+raybi-asus@users.noreply.github.com> Date: Thu, 17 Dec 2020 12:56:51 +0800 Subject: [PATCH] Add null-conditional operators on these 3 files (#6007) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add null conditional operators on these 3 files . To aviod some agent exception of Oracle jdbc. * Add a line in Java Agent section of CHANGES.md file Co-authored-by: 吴晟 Wu Sheng --- CHANGES.md | 1 + .../JDBCPreparedStatementIgnorableSetterInterceptor.java | 6 ++++-- .../jdbc/JDBCPreparedStatementNullSetterInterceptor.java | 6 ++++-- .../jdbc/JDBCPreparedStatementSetterInterceptor.java | 8 +++++--- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 6f857f08a3..e03ccab09a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -13,6 +13,7 @@ Release Notes. * Fix jdk-http and okhttp-3.x plugin did not overwrite the old trace header. * Support collecting logs of log4j, log4j2, and logback in the tracing context with a new `logger-plugin`. * Fix the unexpected RunningContext recreation in the Tomcat plugin. +* Fix the potential NPE when trace_sql_parameters is enabled. #### OAP-Backend * Make meter receiver support MAL. diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementIgnorableSetterInterceptor.java b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementIgnorableSetterInterceptor.java index ed20408df5..31f0533de5 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementIgnorableSetterInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementIgnorableSetterInterceptor.java @@ -31,8 +31,10 @@ public class JDBCPreparedStatementIgnorableSetterInterceptor implements Instance public final void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { final StatementEnhanceInfos statementEnhanceInfos = (StatementEnhanceInfos) objInst.getSkyWalkingDynamicField(); - final int index = (Integer) allArguments[0]; - statementEnhanceInfos.setParameter(index, Constants.SQL_PARAMETER_PLACEHOLDER); + if (statementEnhanceInfos != null) { + final int index = (Integer) allArguments[0]; + statementEnhanceInfos.setParameter(index, Constants.SQL_PARAMETER_PLACEHOLDER); + } } @Override diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementNullSetterInterceptor.java b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementNullSetterInterceptor.java index 2d90e66442..e1935b0a71 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementNullSetterInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementNullSetterInterceptor.java @@ -30,8 +30,10 @@ public class JDBCPreparedStatementNullSetterInterceptor implements InstanceMetho public final void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { final StatementEnhanceInfos statementEnhanceInfos = (StatementEnhanceInfos) objInst.getSkyWalkingDynamicField(); - final int index = (Integer) allArguments[0]; - statementEnhanceInfos.setParameter(index, "NULL"); + if (statementEnhanceInfos != null) { + final int index = (Integer) allArguments[0]; + statementEnhanceInfos.setParameter(index, "NULL"); + } } @Override diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementSetterInterceptor.java b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementSetterInterceptor.java index 3ab0f6d920..a713ebcaab 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementSetterInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/main/java/org/apache/skywalking/apm/plugin/jdbc/JDBCPreparedStatementSetterInterceptor.java @@ -30,9 +30,11 @@ public class JDBCPreparedStatementSetterInterceptor implements InstanceMethodsAr public final void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { final StatementEnhanceInfos statementEnhanceInfos = (StatementEnhanceInfos) objInst.getSkyWalkingDynamicField(); - final int index = (Integer) allArguments[0]; - final Object parameter = allArguments[1]; - statementEnhanceInfos.setParameter(index, parameter); + if (statementEnhanceInfos != null) { + final int index = (Integer) allArguments[0]; + final Object parameter = allArguments[1]; + statementEnhanceInfos.setParameter(index, parameter); + } } @Override -- GitLab