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) {