From 59bda74e88ec95890cb13d54aefef38e27411c01 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 17 八月 2022 17:06:33 +0800
Subject: [PATCH] 处理获取消息体内容为空时造成的空指针异常
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
index 87adc3e..20203ca 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -40,9 +40,7 @@
public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler {
private Logger logger = LoggerFactory.getLogger(RecordInfoResponseMessageHandler.class);
- public static volatile List<String> threadNameList = new ArrayList();
private final String cmdType = "RecordInfo";
- private final static String CACHE_RECORDINFO_KEY = "CACHE_RECORDINFO_";
private ConcurrentLinkedQueue<HandlerCatchData> taskQueue = new ConcurrentLinkedQueue<>();
@@ -78,10 +76,14 @@
if (!taskQueueHandlerRun) {
taskQueueHandlerRun = true;
taskExecutor.execute(()->{
- try {
- while (!taskQueue.isEmpty()) {
+ while (!taskQueue.isEmpty()) {
+ try {
HandlerCatchData take = taskQueue.poll();
Element rootElementForCharset = getRootElement(take.getEvt(), take.getDevice().getCharset());
+ if (rootElement == null) {
+ logger.warn("[ 鍥芥爣褰曞儚 ] content cannot be null, {}", evt.getRequest());
+ continue;
+ }
String sn = getText(rootElementForCharset, "SN");
String channelId = getText(rootElementForCharset, "DeviceID");
RecordInfo recordInfo = new RecordInfo();
@@ -143,10 +145,11 @@
releaseRequest(take.getDevice().getDeviceId(), sn);
}
}
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ } finally {
+ taskQueueHandlerRun = false;
}
- taskQueueHandlerRun = false;
- }catch (DocumentException e) {
- throw new RuntimeException(e);
}
});
}
@@ -157,6 +160,8 @@
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
+ }finally {
+ taskQueueHandlerRun = false;
}
}
--
Gitblit v1.8.0