diff --git a/CHANGES.md b/CHANGES.md index 6f857f08a..e03ccab09 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 ed20408df..31f0533de 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 2d90e6644..e1935b0a7 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 3ab0f6d92..a713ebcaa 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