소스 검색

Merge pull request #607 from jiangeeq/master

调用destroy方法的时候,jobHandlerRepository也要清空
许雪里 6 년 전
부모
커밋
d0e8674fb6
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

@@ -92,6 +92,12 @@ public class XxlJobExecutor  {
             }
             jobThreadRepository.clear();
         }
+        if(jobHandlerRepository.size() >0 ){
+            for (Map.Entry<String, IJobHandler> item: jobHandlerRepository.entrySet()){
+                removeJobHandler(item.getKey(), "web container destroy and kill the jod handler");
+            }
+            jobHandlerRepository.clear();
+        }
 
 
         // destory JobLogFileCleanThread
@@ -104,6 +110,13 @@ public class XxlJobExecutor  {
         stopRpcProvider();
     }
 
+    private void removeJobHandler(String handlerId, String removeOldReason){
+        IJobHandler oldJobHandler = jobHandlerRepository.remove(handlerId);
+        if (oldJobHandler != null) {
+            oldJobHandler.destroy();
+        }
+    }
+
 
     // ---------------------- admin-client (rpc invoker) ----------------------
     private static List<AdminBiz> adminBizList;