浏览代码

调用destroy方法的时候,jobHandlerRepository也要清空

773899172@qq.com 6 年前
父节点
当前提交
1b90a9ca52
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java

+ 13 - 0
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java 查看文件

91
             }
91
             }
92
             jobThreadRepository.clear();
92
             jobThreadRepository.clear();
93
         }
93
         }
94
+        if(jobHandlerRepository.size() >0 ){
95
+            for (Map.Entry<String, IJobHandler> item: jobHandlerRepository.entrySet()){
96
+                removeJobHandler(item.getKey(), "web container destroy and kill the jod handler");
97
+            }
98
+            jobHandlerRepository.clear();
99
+        }
94
 
100
 
95
 
101
 
96
         // destory JobLogFileCleanThread
102
         // destory JobLogFileCleanThread
103
         stopRpcProvider();
109
         stopRpcProvider();
104
     }
110
     }
105
 
111
 
112
+    private void removeJobHandler(String handlerId, String removeOldReason){
113
+        IJobHandler oldJobHandler = jobHandlerRepository.remove(handlerId);
114
+        if (oldJobHandler != null) {
115
+            oldJobHandler.destroy();
116
+        }
117
+    }
118
+
106
 
119
 
107
     // ---------------------- admin-client (rpc invoker) ----------------------
120
     // ---------------------- admin-client (rpc invoker) ----------------------
108
     private static List<AdminBiz> adminBizList;
121
     private static List<AdminBiz> adminBizList;