diff --git "a/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" "b/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" index d2cc40d..096590b 100644 --- "a/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" +++ "b/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" @@ -1516,11 +1516,12 @@ - 5、注册监控线程优化,降低死锁几率; - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务; - 7、任务列表交互优化,支持查看任务所属执行器的注册节点; -- 8、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表; -- 9、[ING]父子任务参数传递; -- 10、[ING]执行器端口复用,复用容器端口提供通讯服务; -- 11、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口; -- 12、[ING]Cron在线生成工具; +- 8、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度; +- 9、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表; +- 10、[ING]父子任务参数传递; +- 11、[ING]执行器端口复用,复用容器端口提供通讯服务; +- 12、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口; +- 13、[ING]Cron在线生成工具; ### TODO LIST diff --git "a/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" "b/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" index d2cc40d..096590b 100644 --- "a/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" +++ "b/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" @@ -1516,11 +1516,12 @@ - 5、注册监控线程优化,降低死锁几率; - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务; - 7、任务列表交互优化,支持查看任务所属执行器的注册节点; -- 8、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表; -- 9、[ING]父子任务参数传递; -- 10、[ING]执行器端口复用,复用容器端口提供通讯服务; -- 11、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口; -- 12、[ING]Cron在线生成工具; +- 8、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度; +- 9、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表; +- 10、[ING]父子任务参数传递; +- 11、[ING]执行器端口复用,复用容器端口提供通讯服务; +- 12、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口; +- 13、[ING]Cron在线生成工具; ### TODO LIST diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java index cb4433c..0171376 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java @@ -49,17 +49,20 @@ } logger.info(">>>>>>>>> init xxl-job admin scheduler success."); - Connection conn = null; while (!scheduleThreadToStop) { // Scan Job long start = System.currentTimeMillis(); + + Connection conn = null; + Boolean connAutoCommit = null; PreparedStatement preparedStatement = null; + boolean preReadSuc = true; try { - if (conn==null || conn.isClosed()) { - conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection(); - } + + conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection(); + connAutoCommit = conn.getAutoCommit(); conn.setAutoCommit(false); preparedStatement = conn.prepareStatement( "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" ); @@ -169,11 +172,27 @@ } finally { // commit - try { - conn.commit(); - } catch (SQLException e) { - if (!scheduleThreadToStop) { - logger.error(e.getMessage(), e); + if (conn != null) { + try { + conn.commit(); + } catch (SQLException e) { + if (!scheduleThreadToStop) { + logger.error(e.getMessage(), e); + } + } + try { + conn.setAutoCommit(connAutoCommit); + } catch (SQLException e) { + if (!scheduleThreadToStop) { + logger.error(e.getMessage(), e); + } + } + try { + conn.close(); + } catch (SQLException e) { + if (!scheduleThreadToStop) { + logger.error(e.getMessage(), e); + } } } @@ -204,12 +223,7 @@ } } - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - } - } + logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop"); } }); diff --git "a/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" "b/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" index d2cc40d..096590b 100644 --- "a/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" +++ "b/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" @@ -1516,11 +1516,12 @@ - 5、注册监控线程优化,降低死锁几率; - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务; - 7、任务列表交互优化,支持查看任务所属执行器的注册节点; -- 8、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表; -- 9、[ING]父子任务参数传递; -- 10、[ING]执行器端口复用,复用容器端口提供通讯服务; -- 11、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口; -- 12、[ING]Cron在线生成工具; +- 8、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度; +- 9、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表; +- 10、[ING]父子任务参数传递; +- 11、[ING]执行器端口复用,复用容器端口提供通讯服务; +- 12、[ING]执行器服务端口与注册端口分离,支持docker动态随机端口; +- 13、[ING]Cron在线生成工具; ### TODO LIST diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java index cb4433c..0171376 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java @@ -49,17 +49,20 @@ } logger.info(">>>>>>>>> init xxl-job admin scheduler success."); - Connection conn = null; while (!scheduleThreadToStop) { // Scan Job long start = System.currentTimeMillis(); + + Connection conn = null; + Boolean connAutoCommit = null; PreparedStatement preparedStatement = null; + boolean preReadSuc = true; try { - if (conn==null || conn.isClosed()) { - conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection(); - } + + conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection(); + connAutoCommit = conn.getAutoCommit(); conn.setAutoCommit(false); preparedStatement = conn.prepareStatement( "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" ); @@ -169,11 +172,27 @@ } finally { // commit - try { - conn.commit(); - } catch (SQLException e) { - if (!scheduleThreadToStop) { - logger.error(e.getMessage(), e); + if (conn != null) { + try { + conn.commit(); + } catch (SQLException e) { + if (!scheduleThreadToStop) { + logger.error(e.getMessage(), e); + } + } + try { + conn.setAutoCommit(connAutoCommit); + } catch (SQLException e) { + if (!scheduleThreadToStop) { + logger.error(e.getMessage(), e); + } + } + try { + conn.close(); + } catch (SQLException e) { + if (!scheduleThreadToStop) { + logger.error(e.getMessage(), e); + } } } @@ -204,12 +223,7 @@ } } - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - } - } + logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop"); } }); diff --git a/xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js b/xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js index 415a939..0d1408a 100644 --- a/xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js +++ b/xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js @@ -90,9 +90,9 @@ "render": function ( data, type, row ) { // status if (1 == data) { - return 'RUNNING'; + return 'RUNNING'; } else { - return 'STOP'; + return 'STOP'; } return data; }