Procházet zdrojové kódy

DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度;

xuxueli před 6 roky
rodič
revize
db7fdf194a

+ 6 - 5
doc/XXL-JOB官方文档.md Zobrazit soubor

1516
 - 5、注册监控线程优化,降低死锁几率;
1516
 - 5、注册监控线程优化,降低死锁几率;
1517
 - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
1517
 - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
1518
 - 7、任务列表交互优化,支持查看任务所属执行器的注册节点;
1518
 - 7、任务列表交互优化,支持查看任务所属执行器的注册节点;
1519
-- 8、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表;
1520
-- 9、[ING]父子任务参数传递;
1521
-- 10、[ING]执行器端口复用,复用容器端口提供通讯服务;
1522
-- 11、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口;
1523
-- 12、[ING]Cron在线生成工具;
1519
+- 8、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度;
1520
+- 9、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表;
1521
+- 10、[ING]父子任务参数传递;
1522
+- 11、[ING]执行器端口复用,复用容器端口提供通讯服务;
1523
+- 12、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口;
1524
+- 13、[ING]Cron在线生成工具;
1524
 
1525
 
1525
 
1526
 
1526
 ### TODO LIST
1527
 ### TODO LIST

+ 29 - 15
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java Zobrazit soubor

49
                 }
49
                 }
50
                 logger.info(">>>>>>>>> init xxl-job admin scheduler success.");
50
                 logger.info(">>>>>>>>> init xxl-job admin scheduler success.");
51
 
51
 
52
-                Connection conn = null;
53
                 while (!scheduleThreadToStop) {
52
                 while (!scheduleThreadToStop) {
54
 
53
 
55
                     // Scan Job
54
                     // Scan Job
56
                     long start = System.currentTimeMillis();
55
                     long start = System.currentTimeMillis();
56
+
57
+                    Connection conn = null;
58
+                    Boolean connAutoCommit = null;
57
                     PreparedStatement preparedStatement = null;
59
                     PreparedStatement preparedStatement = null;
60
+
58
                     boolean preReadSuc = true;
61
                     boolean preReadSuc = true;
59
                     try {
62
                     try {
60
-                        if (conn==null || conn.isClosed()) {
61
-                            conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
62
-                        }
63
+
64
+                        conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
65
+                        connAutoCommit = conn.getAutoCommit();
63
                         conn.setAutoCommit(false);
66
                         conn.setAutoCommit(false);
64
 
67
 
65
                         preparedStatement = conn.prepareStatement(  "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
68
                         preparedStatement = conn.prepareStatement(  "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
169
                     } finally {
172
                     } finally {
170
 
173
 
171
                         // commit
174
                         // commit
172
-                        try {
173
-                            conn.commit();
174
-                        } catch (SQLException e) {
175
-                            if (!scheduleThreadToStop) {
176
-                                logger.error(e.getMessage(), e);
175
+                        if (conn != null) {
176
+                            try {
177
+                                conn.commit();
178
+                            } catch (SQLException e) {
179
+                                if (!scheduleThreadToStop) {
180
+                                    logger.error(e.getMessage(), e);
181
+                                }
182
+                            }
183
+                            try {
184
+                                conn.setAutoCommit(connAutoCommit);
185
+                            } catch (SQLException e) {
186
+                                if (!scheduleThreadToStop) {
187
+                                    logger.error(e.getMessage(), e);
188
+                                }
189
+                            }
190
+                            try {
191
+                                conn.close();
192
+                            } catch (SQLException e) {
193
+                                if (!scheduleThreadToStop) {
194
+                                    logger.error(e.getMessage(), e);
195
+                                }
177
                             }
196
                             }
178
                         }
197
                         }
179
 
198
 
204
                     }
223
                     }
205
 
224
 
206
                 }
225
                 }
207
-                if (conn != null) {
208
-                    try {
209
-                        conn.close();
210
-                    } catch (SQLException e) {
211
-                    }
212
-                }
226
+
213
                 logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop");
227
                 logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop");
214
             }
228
             }
215
         });
229
         });

+ 2 - 2
xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js Zobrazit soubor

90
 	                	"render": function ( data, type, row ) {
90
 	                	"render": function ( data, type, row ) {
91
                             // status
91
                             // status
92
                             if (1 == data) {
92
                             if (1 == data) {
93
-                                return '<small class="label label-success" ><i class="fa fa-clock-o"></i>RUNNING</small>';
93
+                                return '<small class="label label-success" >RUNNING</small>';
94
                             } else {
94
                             } else {
95
-                                return '<small class="label label-default" ><i class="fa fa-clock-o"></i>STOP</small>';
95
+                                return '<small class="label label-default" >STOP</small>';
96
                             }
96
                             }
97
 	                		return data;
97
 	                		return data;
98
 	                	}
98
 	                	}