ソースを参照

JobHandler#msg长度限制,修复异常情况下日志超长导致内存溢出的问题

xuxueli 6 年 前
コミット
c071a63f14
共有2 個のファイルを変更した4 個の追加1 個の削除を含む
  1. 1 1
      doc/XXL-JOB官方文档.md
  2. 3 0
      xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java

+ 1 - 1
doc/XXL-JOB官方文档.md ファイルの表示

@@ -1434,7 +1434,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
1434 1434
 - 18、调度日志排序逻辑调整为按照调度时间倒序,兼容TIDB等主键不连续日志存储组件;
1435 1435
 - 19、执行器优雅停机优化;
1436 1436
 - 20、连接池配置优化,增强连接有效性验证;
1437
-- 21、[迭代中]JobHandler执行结果日志长度限制:
1437
+- 21、JobHandler#msg长度限制,修复异常情况下日志超长导致内存溢出的问题;
1438 1438
 - 22、[迭代中]执行器端口复用:
1439 1439
 - 23、[迭代中]任务线程隔离:
1440 1440
     - 执行器测异步响应,不存在阻塞不需要隔离;

+ 3 - 0
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java ファイルの表示

@@ -154,6 +154,9 @@ public class JobThread extends Thread{
154 154
 
155 155
 					if (executeResult == null) {
156 156
 						executeResult = IJobHandler.FAIL;
157
+					} else {
158
+						executeResult.setMsg((executeResult!=null&&executeResult.getMsg().length()>50000)?executeResult.getMsg().substring(0, 50000).concat("..."):executeResult.getMsg());
159
+						executeResult.setContent(null);	// limit obj size
157 160
 					}
158 161
 					XxlJobLogger.log("<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:" + executeResult);
159 162