This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new e2f2cce  Fix NullPointerException with KafkaProducer.send(record) 
(#6487)
e2f2cce is described below

commit e2f2cce874edc7bd5c52fca32588f994cddca659
Author: Jingguo Yao <[email protected]>
AuthorDate: Fri Mar 5 11:12:23 2021 +0800

    Fix NullPointerException with KafkaProducer.send(record) (#6487)
    
    Resolves #6481
---
 CHANGES.md                                                        | 1 +
 .../apm/plugin/kafka/CallbackConstructorInterceptor.java          | 8 +++++---
 .../apache/skywalking/apm/plugin/kafka/CallbackInterceptor.java   | 5 ++++-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index d6ecd6a..05e9150 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -17,6 +17,7 @@ Release Notes.
 * Fix apm-dubbo-2.7.x-plugin memory leak due to some Dubbo RpcExceptions.
 * Fix lettuce-5.x-plugin get null host in redis sentinel mode.
 * Fix ClassCastException by making CallbackAdapterInterceptor to implement 
EnhancedInstance interface in the spring-kafka plugin.
+* Fix NullPointerException with KafkaProducer.send(record).
 
 #### OAP-Backend
 * Allow user-defined `JAVA_OPTS` in the startup script.
diff --git 
a/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackConstructorInterceptor.java
 
b/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackConstructorInterceptor.java
index 7c13d9e..82cd4dc 100644
--- 
a/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackConstructorInterceptor.java
+++ 
b/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackConstructorInterceptor.java
@@ -30,8 +30,10 @@ public class CallbackConstructorInterceptor implements 
InstanceConstructorInterc
     @Override
     public void onConstruct(EnhancedInstance objInst, Object[] allArguments) {
         Callback callback = (Callback) allArguments[0];
-        CallbackCache cache = new CallbackCache();
-        cache.setCallback(callback);
-        objInst.setSkyWalkingDynamicField(cache);
+        if (null != callback) {
+            CallbackCache cache = new CallbackCache();
+            cache.setCallback(callback);
+            objInst.setSkyWalkingDynamicField(cache);
+        }
     }
 }
diff --git 
a/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackInterceptor.java
 
b/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackInterceptor.java
index 888c330..03ac774 100644
--- 
a/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackInterceptor.java
+++ 
b/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackInterceptor.java
@@ -74,7 +74,10 @@ public class CallbackInterceptor implements 
InstanceMethodsAroundInterceptor {
     @Override
     public void handleMethodException(EnhancedInstance objInst, Method method, 
Object[] allArguments,
         Class<?>[] argumentsTypes, Throwable t) {
-        ContextManager.activeSpan().log(t);
+        CallbackCache cache = (CallbackCache) 
objInst.getSkyWalkingDynamicField();
+        if (null != cache) {
+            ContextManager.activeSpan().log(t);
+        }
     }
 
     private ContextSnapshot getSnapshot(CallbackCache cache) {

Reply via email to