Sfoglia il codice sorgente

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

773899172@qq.com 6 anni fa
parent
commit
1b90a9ca52

+ 13 - 0
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Vedi File

@@ -91,6 +91,12 @@ public class XxlJobExecutor  {
91 91
             }
92 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 102
         // destory JobLogFileCleanThread
@@ -103,6 +109,13 @@ public class XxlJobExecutor  {
103 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 120
     // ---------------------- admin-client (rpc invoker) ----------------------
108 121
     private static List<AdminBiz> adminBizList;