Ver código fonte

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

773899172@qq.com 7 anos atrás
pai
commit
1b90a9ca52

+ 13 - 0
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Ver arquivo

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;