Ver Fonte

Merge pull request #1104 from WEIZIBIN/fix_graceful_shutdown_callback_lose

修复优雅停机时,中断线程后,任务状态没有同步到admin
许雪里 há 5 anos atrás
pai
commit
ebe88bd7ce

+ 15 - 0
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java

@@ -84,6 +84,12 @@ public class XxlJobExecutor  {
         initRpcProvider(ip, port, appName, accessToken);
     }
     public void destroy(){
+
+        List<JobThread> runningThreads = new ArrayList<>(jobThreadRepository.values());
+        if (logger.isInfoEnabled()) {
+            logger.info("running threads {}", runningThreads);
+        }
+
         // destory executor-server
         stopRpcProvider();
 
@@ -96,6 +102,15 @@ public class XxlJobExecutor  {
         }
         jobHandlerRepository.clear();
 
+        for (JobThread runningThread : runningThreads) {
+            try {
+                // wait for all job thread push result to callback queue
+                runningThread.join();
+            } catch (InterruptedException e) {
+                logger.warn("interrupted while stopping {}", runningThread);
+                break;
+            }
+        }
 
         // destory JobLogFileCleanThread
         JobLogFileCleanThread.getInstance().toStop();