Browse Source

任务失败重试优化:收敛并废弃现有失败重试策略,新增任务属性 "失败重试次数",支持自定义失败重试次数,任务失败时将会根据该值进行失败重试;

xuxueli 6 years ago
parent
commit
c2d6b3ac14
20 changed files with 73 additions and 113 deletions
  1. 3 2
      doc/XXL-JOB官方文档.md
  2. 1 1
      doc/db/tables_xxl_job.sql
  3. 3 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
  4. 0 36
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/enums/ExecutorFailStrategyEnum.java
  5. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
  6. 0 9
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
  7. 9 0
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
  8. 12 5
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
  9. 21 11
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
  10. 0 8
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java
  11. 13 14
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
  12. 6 8
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
  13. 0 1
      xxl-job-admin/src/main/resources/i18n/message.properties
  14. 0 1
      xxl-job-admin/src/main/resources/i18n/message_en.properties
  15. 0 5
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
  16. 4 1
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
  17. 0 2
      xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
  18. 0 3
      xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobInfoDaoTest.java
  19. 0 2
      xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java
  20. 0 2
      xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java

+ 3 - 2
doc/XXL-JOB官方文档.md

@@ -951,7 +951,6 @@ echo "分片总数 total = $3"
 --- | --- | ---
 成功 | IJobHandler.SUCCESS | 0
 失败 | IJobHandler.FAIL | -1(其他)
-失败重试 | IJobHandler.FAIL_RETRY | 101
 
 ### 5.16 任务超时控制
 支持设置任务超时时间,任务运行超时的情况下,将会主动中断任务;
@@ -1241,7 +1240,9 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 - 22、告警邮件固定使用 UTF-8 编码格式,修复由机器编码导致的邮件乱码问题;
 - 23、新增任务运行模式 "GLUE模式(PHP) ",支持php脚本任务;
 - 24、执行器手动设置IP时取消绑定Host的操作,该IP仅供执行器注册使用;修复指定外网IP时无法绑定执行器Host的问题;
-- 25、[迭代中]任务失败重试优化:收敛并废弃现有失败重试策略,新增任务属性 "失败重试次数",支持自定义失败重试次数,任务失败时将会根据该值进行失败重试;
+- 25、任务失败重试优化:收敛并废弃现有失败重试策略,如调度失败、执行失败、状态码失败等,新增任务属性 "失败重试次数",支持自定义失败重试次数,任务失败时将会根据该值进行失败重试;
+- 26、【迭代中】父子任务循环限制放开,支持特殊场景;
+- 27、【迭代中】API服务支持动态参数;
 
 
 ### TODO LIST

+ 1 - 1
doc/db/tables_xxl_job.sql

@@ -162,7 +162,6 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
   `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
   `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
-  `executor_fail_strategy` varchar(50) DEFAULT NULL COMMENT '失败处理策略',
   `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
   `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
   `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
@@ -181,6 +180,7 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
   `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
   `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
+  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
   `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
   `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
   `trigger_msg` varchar(2048) DEFAULT NULL COMMENT '调度-日志',

+ 3 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java

@@ -3,6 +3,7 @@ package com.xxl.job.admin.controller;
 import com.xxl.job.admin.core.model.XxlJobGroup;
 import com.xxl.job.admin.core.model.XxlJobInfo;
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
+import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
 import com.xxl.job.admin.dao.XxlJobGroupDao;
 import com.xxl.job.admin.service.XxlJobService;
 import com.xxl.job.core.biz.model.ReturnT;
@@ -89,7 +90,8 @@ public class JobInfoController {
 	@RequestMapping("/trigger")
 	@ResponseBody
 	public ReturnT<String> triggerJob(int id) {
-		return xxlJobService.triggerJob(id);
+		JobTriggerPoolHelper.trigger(id, -1);
+		return ReturnT.SUCCESS;
 	}
 	
 }

+ 0 - 36
xxl-job-admin/src/main/java/com/xxl/job/admin/core/enums/ExecutorFailStrategyEnum.java

@@ -1,36 +0,0 @@
-package com.xxl.job.admin.core.enums;
-
-/**
- * Created by xuxueli on 17/5/9.
- */
-
-@Deprecated
-public enum ExecutorFailStrategyEnum {
-
-    NULL("NULL"),
-
-    FAIL_TRIGGER_RETRY("FAIL_TRIGGER_RETRY"),
-
-    FAIL_HANDLE_RETRY("FAIL_HANDLE_RETRY");
-
-    private final String title;
-    private ExecutorFailStrategyEnum(String title) {
-        this.title = title;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public static ExecutorFailStrategyEnum match(String name, ExecutorFailStrategyEnum defaultItem) {
-        if (name != null) {
-            for (ExecutorFailStrategyEnum item: ExecutorFailStrategyEnum.values()) {
-                if (item.name().equals(name)) {
-                    return item;
-                }
-            }
-        }
-        return defaultItem;
-    }
-
-}

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java

@@ -27,7 +27,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
 
 		// trigger
 		//XxlJobTrigger.trigger(jobId);
-		JobTriggerPoolHelper.trigger(jobId);
+		JobTriggerPoolHelper.trigger(jobId, -1);
 	}
 
 }

+ 0 - 9
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java

@@ -25,7 +25,6 @@ public class XxlJobInfo {
 	private String executorHandler;		    // 执行器,任务Handler名称
 	private String executorParam;		    // 执行器,任务参数
 	private String executorBlockStrategy;	// 阻塞处理策略
-	private String executorFailStrategy;	// 失败处理策略
 	private int executorTimeout;     		// 任务执行超时时间,单位秒
 	private int executorFailRetryCount;		// 失败重试次数
 	
@@ -136,14 +135,6 @@ public class XxlJobInfo {
 		this.executorBlockStrategy = executorBlockStrategy;
 	}
 
-	public String getExecutorFailStrategy() {
-		return executorFailStrategy;
-	}
-
-	public void setExecutorFailStrategy(String executorFailStrategy) {
-		this.executorFailStrategy = executorFailStrategy;
-	}
-
 	public int getExecutorTimeout() {
 		return executorTimeout;
 	}

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java

@@ -21,6 +21,7 @@ public class XxlJobLog {
 	private String executorAddress;
 	private String executorHandler;
 	private String executorParam;
+	private int executorFailRetryCount;
 	
 	// trigger info
 	private Date triggerTime;
@@ -88,6 +89,14 @@ public class XxlJobLog {
 		this.executorParam = executorParam;
 	}
 
+	public int getExecutorFailRetryCount() {
+		return executorFailRetryCount;
+	}
+
+	public void setExecutorFailRetryCount(int executorFailRetryCount) {
+		this.executorFailRetryCount = executorFailRetryCount;
+	}
+
 	public Date getTriggerTime() {
 		return triggerTime;
 	}

+ 12 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java

@@ -28,11 +28,11 @@ public class JobTriggerPoolHelper {
             new ThreadPoolExecutor.CallerRunsPolicy());
 
 
-    public void addTrigger(final int jobId){
+    public void addTrigger(final int jobId, final int failRetryCount){
         triggerPool.execute(new Runnable() {
             @Override
             public void run() {
-                XxlJobTrigger.trigger(jobId);
+                XxlJobTrigger.trigger(jobId, failRetryCount);
             }
         });
     }
@@ -47,9 +47,16 @@ public class JobTriggerPoolHelper {
 
     private static JobTriggerPoolHelper helper = new JobTriggerPoolHelper();
 
-
-    public static void trigger(int jobId) {
-        helper.addTrigger(jobId);
+    /**
+     *
+     * @param jobId
+     * @param failRetryCount
+     * 			>=0: use this param
+     * 			<0: use param from job info config
+     *
+     */
+    public static void trigger(int jobId, int failRetryCount) {
+        helper.addTrigger(jobId, failRetryCount);
     }
 
     public static void toStop(){

+ 21 - 11
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java

@@ -1,12 +1,12 @@
 package com.xxl.job.admin.core.trigger;
 
-import com.xxl.job.admin.core.enums.ExecutorFailStrategyEnum;
 import com.xxl.job.admin.core.model.XxlJobGroup;
 import com.xxl.job.admin.core.model.XxlJobInfo;
 import com.xxl.job.admin.core.model.XxlJobLog;
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
 import com.xxl.job.admin.core.thread.JobFailMonitorHelper;
+import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
 import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.core.biz.ExecutorBiz;
 import com.xxl.job.core.biz.model.ReturnT;
@@ -31,8 +31,12 @@ public class XxlJobTrigger {
      * trigger job
      *
      * @param jobId
+     * @param failRetryCount
+     * 			>=0: use this param
+     * 			<0: use param from job info config
+     *
      */
-    public static void trigger(int jobId) {
+    public static void trigger(int jobId, int failRetryCount) {
 
         // load data
         XxlJobInfo jobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(jobId);              // job info
@@ -40,10 +44,14 @@ public class XxlJobTrigger {
             logger.warn(">>>>>>>>>>>> trigger fail, jobId invalid,jobId={}", jobId);
             return;
         }
+        int finalFailRetryCount = jobInfo.getExecutorFailRetryCount();
+        if (failRetryCount >= 0) {
+            finalFailRetryCount = failRetryCount;
+        }
+
         XxlJobGroup group = XxlJobDynamicScheduler.xxlJobGroupDao.load(jobInfo.getJobGroup());  // group info
 
         ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION);  // block strategy
-        ExecutorFailStrategyEnum failStrategy = ExecutorFailStrategyEnum.match(jobInfo.getExecutorFailStrategy(), ExecutorFailStrategyEnum.NULL);    // fail strategy
         ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null);    // route strategy
         ArrayList<String> addressList = (ArrayList<String>) group.getRegistryList();
 
@@ -64,6 +72,7 @@ public class XxlJobTrigger {
                 jobLog.setGlueType(jobInfo.getGlueType());
                 jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
                 jobLog.setExecutorParam(jobInfo.getExecutorParam());
+                jobLog.setExecutorFailRetryCount(finalFailRetryCount);
                 jobLog.setTriggerTime(new Date());
 
                 ReturnT<String> triggerResult = new ReturnT<String>(null);
@@ -74,7 +83,7 @@ public class XxlJobTrigger {
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle()).append("("+i+"/"+addressList.size()+")"); // update01
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
-                triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(jobInfo.getExecutorFailRetryCount());
+                triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(finalFailRetryCount);
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
 
                 // 3、trigger-valid
@@ -104,9 +113,9 @@ public class XxlJobTrigger {
                     triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
 
                     // 4.3、trigger (fail retry)
-                    if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && failStrategy == ExecutorFailStrategyEnum.FAIL_TRIGGER_RETRY) {
-                        triggerResult = runExecutor(triggerParam, address);  // update04
-                        triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
+                    if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && finalFailRetryCount > 0) {
+                        JobTriggerPoolHelper.trigger(jobId, (finalFailRetryCount-1));
+                        triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>");
                     }
                 }
 
@@ -134,6 +143,7 @@ public class XxlJobTrigger {
             jobLog.setGlueType(jobInfo.getGlueType());
             jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
             jobLog.setExecutorParam(jobInfo.getExecutorParam());
+            jobLog.setExecutorFailRetryCount(finalFailRetryCount);
             jobLog.setTriggerTime(new Date());
 
             ReturnT<String> triggerResult = new ReturnT<String>(null);
@@ -144,7 +154,7 @@ public class XxlJobTrigger {
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle());
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
-            triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(jobInfo.getExecutorFailRetryCount());
+            triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(finalFailRetryCount);
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
 
             // 3、trigger-valid
@@ -174,9 +184,9 @@ public class XxlJobTrigger {
                 triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
 
                 // 4.3、trigger (fail retry)
-                if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && failStrategy == ExecutorFailStrategyEnum.FAIL_TRIGGER_RETRY) {
-                    triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList);
-                    triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
+                if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && finalFailRetryCount > 0) {
+                    JobTriggerPoolHelper.trigger(jobId, (finalFailRetryCount-1));
+                    triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>");
                 }
             }
 

+ 0 - 8
xxl-job-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java

@@ -67,14 +67,6 @@ public interface XxlJobService {
 	 */
 	public ReturnT<String> resume(int id);
 
-	/**
-	 * trigger job
-	 *
-	 * @param id
-	 * @return
-	 */
-	public ReturnT<String> triggerJob(int id);
-
 	/**
 	 * dashboard info
 	 *

+ 13 - 14
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java

@@ -1,8 +1,8 @@
 package com.xxl.job.admin.service.impl;
 
-import com.xxl.job.admin.core.enums.ExecutorFailStrategyEnum;
 import com.xxl.job.admin.core.model.XxlJobInfo;
 import com.xxl.job.admin.core.model.XxlJobLog;
+import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
 import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.admin.dao.XxlJobInfoDao;
 import com.xxl.job.admin.dao.XxlJobLogDao;
@@ -72,7 +72,9 @@ public class AdminBizImpl implements AdminBiz {
                 for (int i = 0; i < childJobIds.length; i++) {
                     int childJobId = (StringUtils.isNotBlank(childJobIds[i]) && StringUtils.isNumeric(childJobIds[i]))?Integer.valueOf(childJobIds[i]):-1;
                     if (childJobId > 0) {
-                        ReturnT<String> triggerChildResult = xxlJobService.triggerJob(childJobId);
+
+                        JobTriggerPoolHelper.trigger(childJobId, 0);
+                        ReturnT<String> triggerChildResult = ReturnT.SUCCESS;
 
                         // add msg
                         callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg1"),
@@ -91,17 +93,13 @@ public class AdminBizImpl implements AdminBiz {
 
             }
         } else {
-            boolean ifHandleRetry = false;
-            if (IJobHandler.FAIL_RETRY.getCode() == handleCallbackParam.getExecuteResult().getCode()) {
-                ifHandleRetry = true;
-            } else {
-                XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(log.getJobId());
-                if (ExecutorFailStrategyEnum.FAIL_HANDLE_RETRY.name().equals(xxlJobInfo.getExecutorFailStrategy())) {
-                    ifHandleRetry = true;
-                }
-            }
-            if (ifHandleRetry){
-                ReturnT<String> retryTriggerResult = xxlJobService.triggerJob(log.getJobId());
+            XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(log.getJobId());
+            if (xxlJobInfo.getExecutorFailRetryCount() > 0) {
+                int nextFailRetryCount = xxlJobInfo.getExecutorFailRetryCount()-1;
+
+                JobTriggerPoolHelper.trigger(log.getJobId(), nextFailRetryCount);
+                ReturnT<String> retryTriggerResult = ReturnT.SUCCESS;
+
                 callbackMsg = "<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_handle_retry") +"<<<<<<<<<<< </span><br>";
 
                 callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_msg1"),
@@ -147,7 +145,8 @@ public class AdminBizImpl implements AdminBiz {
 
     @Override
     public ReturnT<String> triggerJob(int jobId) {
-        return xxlJobService.triggerJob(jobId);
+        JobTriggerPoolHelper.trigger(jobId, -1);
+        return ReturnT.SUCCESS;
     }
 
 }

+ 6 - 8
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java

@@ -4,7 +4,6 @@ import com.xxl.job.admin.core.model.XxlJobGroup;
 import com.xxl.job.admin.core.model.XxlJobInfo;
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
-import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
 import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.admin.dao.XxlJobGroupDao;
 import com.xxl.job.admin.dao.XxlJobInfoDao;
@@ -201,7 +200,6 @@ public class XxlJobServiceImpl implements XxlJobService {
 		exists_jobInfo.setExecutorHandler(jobInfo.getExecutorHandler());
 		exists_jobInfo.setExecutorParam(jobInfo.getExecutorParam());
 		exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
-		exists_jobInfo.setExecutorFailStrategy(jobInfo.getExecutorFailStrategy());
 		exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout());
 		exists_jobInfo.setExecutorFailRetryCount(jobInfo.getExecutorFailRetryCount());
 		exists_jobInfo.setChildJobId(jobInfo.getChildJobId());
@@ -268,13 +266,13 @@ public class XxlJobServiceImpl implements XxlJobService {
 		}
 	}
 
-	@Override
-	public ReturnT<String> triggerJob(int id) {
+	/*@Override
+    public ReturnT<String> triggerJob(int id, int failRetryCount) {
 
-		JobTriggerPoolHelper.trigger(id);
+		JobTriggerPoolHelper.trigger(id, failRetryCount);
 		return ReturnT.SUCCESS;
 
-        /*XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
+        *//*XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
         if (xxlJobInfo == null) {
         	return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_id")+I18nUtil.getString("system_unvalid")) );
 		}
@@ -288,9 +286,9 @@ public class XxlJobServiceImpl implements XxlJobService {
 		} catch (SchedulerException e) {
 			logger.error(e.getMessage(), e);
 			return new ReturnT<String>(ReturnT.FAIL_CODE, e.getMessage());
-		}*/
+		}*//*
 
-	}
+	}*/
 
 	@Override
 	public Map<String, Object> dashboardInfo() {

+ 0 - 1
xxl-job-admin/src/main/resources/i18n/message.properties

@@ -162,7 +162,6 @@ joblog_clean_type_unvalid=清理类型参数异常
 joblog_handleCode_200=成功
 joblog_handleCode_500=失败
 joblog_handleCode_502=失败(超时)
-joblog_handleCode_501=失败(重试)
 joblog_kill_log=终止任务
 joblog_kill_log_limit=调度失败,无法终止日志
 joblog_kill_log_byman=人为操作主动终止

+ 0 - 1
xxl-job-admin/src/main/resources/i18n/message_en.properties

@@ -162,7 +162,6 @@ joblog_clean_type_unvalid=Clean type is illegal
 joblog_handleCode_200=Success
 joblog_handleCode_500=Fail
 joblog_handleCode_502=Timeout
-joblog_handleCode_501=Fail retry
 joblog_kill_log=Kill Job
 joblog_kill_log_limit=Trigger Fail, can not kill job
 joblog_kill_log_byman=Manual operation to active kill job

+ 0 - 5
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml

@@ -20,7 +20,6 @@
 		<result column="executor_handler" property="executorHandler" />
 	    <result column="executor_param" property="executorParam" />
 		<result column="executor_block_strategy" property="executorBlockStrategy" />
-		<result column="executor_fail_strategy" property="executorFailStrategy" />
 		<result column="executor_timeout" property="executorTimeout" />
 		<result column="executor_fail_retry_count" property="executorFailRetryCount" />
 
@@ -45,7 +44,6 @@
 		t.executor_handler,
 		t.executor_param,
 		t.executor_block_strategy,
-		t.executor_fail_strategy,
 		t.executor_timeout,
 		t.executor_fail_retry_count,
 		t.glue_type,
@@ -102,7 +100,6 @@
 			executor_handler,
 			executor_param,
 			executor_block_strategy,
-			executor_fail_strategy,
 			executor_timeout,
 			executor_fail_retry_count,
 			glue_type,
@@ -122,7 +119,6 @@
 			#{executorHandler},
 			#{executorParam},
 			#{executorBlockStrategy},
-			#{executorFailStrategy},
 			#{executorTimeout},
 			#{executorFailRetryCount},
 			#{glueType},
@@ -155,7 +151,6 @@
 			executor_handler = #{executorHandler},
 			executor_param = #{executorParam},
 			executor_block_strategy = #{executorBlockStrategy},
-			executor_fail_strategy = #{executorFailStrategy},
 			executor_timeout = ${executorTimeout},
 			executor_fail_retry_count = ${executorFailRetryCount},
 			glue_type = #{glueType},

+ 4 - 1
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml

@@ -14,6 +14,7 @@
 		<result column="executor_address" property="executorAddress" />
 		<result column="executor_handler" property="executorHandler" />
 	    <result column="executor_param" property="executorParam" />
+		<result column="executor_fail_retry_count" property="executorFailRetryCount" />
 	    
 	    <result column="trigger_time" property="triggerTime" />
 	    <result column="trigger_code" property="triggerCode" />
@@ -33,6 +34,7 @@
 		t.executor_address,
 		t.executor_handler,
 		t.executor_param,
+		t.executor_fail_retry_count,
 		t.trigger_time,
 		t.trigger_code,
 		t.trigger_msg,
@@ -140,7 +142,8 @@
 			`trigger_msg`= #{triggerMsg},
 			`executor_address`= #{executorAddress},
 			`executor_handler`=#{executorHandler},
-			`executor_param`= #{executorParam}
+			`executor_param`= #{executorParam},
+			`executor_fail_retry_count`= #{executorFailRetryCount}
 		WHERE `id`= #{id}
 	</update>
 

+ 0 - 2
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js

@@ -157,8 +157,6 @@ $(function() {
                                 html = '<span style="color: green">'+ I18n.joblog_handleCode_200 +'</span>';
                             } else if (data == 500) {
                                 html = '<span style="color: red">'+ I18n.joblog_handleCode_500 +'</span>';
-                            } else if (data == 501) {
-                                html = '<span style="color: red">'+ I18n.joblog_handleCode_501 +'</span>';
                             } else if (data == 502) {
                                 html = '<span style="color: red">'+ I18n.joblog_handleCode_502 +'</span>';
                             } else if (data == 0) {

+ 0 - 3
xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobInfoDaoTest.java

@@ -1,7 +1,6 @@
 package com.xxl.job.admin.dao;
 
 import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
@@ -41,7 +40,6 @@ public class XxlJobInfoDaoTest {
 		info.setExecutorHandler("setExecutorHandler");
 		info.setExecutorParam("setExecutorParam");
 		info.setExecutorBlockStrategy("setExecutorBlockStrategy");
-		info.setExecutorFailStrategy("setExecutorFailStrategy");
 		info.setGlueType("setGlueType");
 		info.setGlueSource("setGlueSource");
 		info.setGlueRemark("setGlueRemark");
@@ -58,7 +56,6 @@ public class XxlJobInfoDaoTest {
 		info2.setExecutorHandler("setExecutorHandler2");
 		info2.setExecutorParam("setExecutorParam2");
 		info2.setExecutorBlockStrategy("setExecutorBlockStrategy2");
-		info2.setExecutorFailStrategy("setExecutorFailStrategy2");
 		info2.setGlueType("setGlueType2");
 		info2.setGlueSource("setGlueSource2");
 		info2.setGlueRemark("setGlueRemark2");

+ 0 - 2
xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java

@@ -14,8 +14,6 @@ public abstract class IJobHandler {
 	public static final ReturnT<String> SUCCESS = new ReturnT<String>(200, null);
 	/** fail */
 	public static final ReturnT<String> FAIL = new ReturnT<String>(500, null);
-	/** fail retry */
-	public static final ReturnT<String> FAIL_RETRY = new ReturnT<String>(501, null);
 	/** fail timeout */
 	public static final ReturnT<String> FAIL_TIMEOUT = new ReturnT<String>(502, null);
 

+ 0 - 2
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java

@@ -66,8 +66,6 @@ public class ScriptJobHandler extends IJobHandler {
 
         if (exitValue == 0) {
             return IJobHandler.SUCCESS;
-        } else if (exitValue == 101) {
-            return IJobHandler.FAIL_RETRY;
         } else {
             return new ReturnT<String>(IJobHandler.FAIL.getCode(), "script exit value("+exitValue+") is failed");
         }