|
@@ -57,6 +57,7 @@ public class XxlJobTrigger {
|
57
|
57
|
|
58
|
58
|
// broadcast
|
59
|
59
|
if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum && CollectionUtils.isNotEmpty(addressList)) {
|
|
60
|
+ boolean onceFailed = false;
|
60
|
61
|
for (int i = 0; i < addressList.size(); i++) {
|
61
|
62
|
String address = addressList.get(i);
|
62
|
63
|
|
|
@@ -86,50 +87,49 @@ public class XxlJobTrigger {
|
86
|
87
|
triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
|
87
|
88
|
triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(finalFailRetryCount);
|
88
|
89
|
|
89
|
|
- // 3、trigger-valid
|
90
|
|
- if (triggerResult.getCode()==ReturnT.SUCCESS_CODE && CollectionUtils.isEmpty(addressList)) {
|
91
|
|
- triggerResult.setCode(ReturnT.FAIL_CODE);
|
92
|
|
- triggerMsgSb.append("<br>----------------------<br>").append(I18nUtil.getString("jobconf_trigger_address_empty"));
|
|
90
|
+
|
|
91
|
+ // 3.1、trigger-param
|
|
92
|
+ TriggerParam triggerParam = new TriggerParam();
|
|
93
|
+ triggerParam.setJobId(jobInfo.getId());
|
|
94
|
+ triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
|
|
95
|
+ triggerParam.setExecutorParams(jobInfo.getExecutorParam());
|
|
96
|
+ triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
|
|
97
|
+ triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout());
|
|
98
|
+ triggerParam.setLogId(jobLog.getId());
|
|
99
|
+ triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
|
|
100
|
+ triggerParam.setGlueType(jobInfo.getGlueType());
|
|
101
|
+ triggerParam.setGlueSource(jobInfo.getGlueSource());
|
|
102
|
+ triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
|
|
103
|
+ triggerParam.setBroadcastIndex(i);
|
|
104
|
+ triggerParam.setBroadcastTotal(addressList.size()); // update02
|
|
105
|
+
|
|
106
|
+ // 3.2、trigger-run (route run / trigger remote executor)
|
|
107
|
+ triggerResult = runExecutor(triggerParam, address); // update03
|
|
108
|
+ triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+ // 3.3、trigger (fail retry)
|
|
112
|
+ if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE) {
|
|
113
|
+ onceFailed = true;
|
93
|
114
|
}
|
94
|
115
|
|
95
|
|
- if (triggerResult.getCode() == ReturnT.SUCCESS_CODE) {
|
96
|
|
- // 4.1、trigger-param
|
97
|
|
- TriggerParam triggerParam = new TriggerParam();
|
98
|
|
- triggerParam.setJobId(jobInfo.getId());
|
99
|
|
- triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
|
100
|
|
- triggerParam.setExecutorParams(jobInfo.getExecutorParam());
|
101
|
|
- triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
|
102
|
|
- triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout());
|
103
|
|
- triggerParam.setLogId(jobLog.getId());
|
104
|
|
- triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
|
105
|
|
- triggerParam.setGlueType(jobInfo.getGlueType());
|
106
|
|
- triggerParam.setGlueSource(jobInfo.getGlueSource());
|
107
|
|
- triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
|
108
|
|
- triggerParam.setBroadcastIndex(i);
|
109
|
|
- triggerParam.setBroadcastTotal(addressList.size()); // update02
|
110
|
|
-
|
111
|
|
- // 4.2、trigger-run (route run / trigger remote executor)
|
112
|
|
- triggerResult = runExecutor(triggerParam, address); // update03
|
113
|
|
- triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
|
114
|
|
-
|
115
|
|
- // 4.3、trigger (fail retry)
|
116
|
|
- if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && finalFailRetryCount > 0) {
|
117
|
|
- JobTriggerPoolHelper.trigger(jobId, (finalFailRetryCount-1));
|
118
|
|
- triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>");
|
119
|
|
- }
|
|
116
|
+ if (addressList.size()==i+1 && onceFailed && finalFailRetryCount > 0) { // each trigger only retry once
|
|
117
|
+ JobTriggerPoolHelper.trigger(jobId, (finalFailRetryCount-1));
|
|
118
|
+ triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>");
|
120
|
119
|
}
|
121
|
120
|
|
122
|
|
- // 5、save trigger-info
|
|
121
|
+ // 4、save trigger-info
|
123
|
122
|
jobLog.setExecutorAddress(triggerResult.getContent());
|
124
|
123
|
jobLog.setTriggerCode(triggerResult.getCode());
|
125
|
124
|
jobLog.setTriggerMsg(triggerMsgSb.toString());
|
126
|
125
|
XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);
|
127
|
126
|
|
128
|
|
- // 6、monitor trigger
|
|
127
|
+ // 5、monitor trigger
|
129
|
128
|
JobFailMonitorHelper.monitor(jobLog.getId());
|
130
|
129
|
logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
|
131
|
130
|
|
132
|
131
|
}
|
|
132
|
+
|
133
|
133
|
} else {
|
134
|
134
|
// 1、save log-id
|
135
|
135
|
XxlJobLog jobLog = new XxlJobLog();
|
|
@@ -157,14 +157,12 @@ public class XxlJobTrigger {
|
157
|
157
|
triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
|
158
|
158
|
triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(finalFailRetryCount);
|
159
|
159
|
|
160
|
|
- // 3、trigger-valid
|
161
|
|
- if (triggerResult.getCode()==ReturnT.SUCCESS_CODE && CollectionUtils.isEmpty(addressList)) {
|
|
160
|
+ // 3.0、trigger-valid
|
|
161
|
+ if (CollectionUtils.isEmpty(addressList)) {
|
162
|
162
|
triggerResult.setCode(ReturnT.FAIL_CODE);
|
163
|
163
|
triggerMsgSb.append("<br>----------------------<br>").append(I18nUtil.getString("jobconf_trigger_address_empty"));
|
164
|
|
- }
|
165
|
|
-
|
166
|
|
- if (triggerResult.getCode() == ReturnT.SUCCESS_CODE) {
|
167
|
|
- // 4.1、trigger-param
|
|
164
|
+ } else {
|
|
165
|
+ // 3.1、trigger-param
|
168
|
166
|
TriggerParam triggerParam = new TriggerParam();
|
169
|
167
|
triggerParam.setJobId(jobInfo.getId());
|
170
|
168
|
triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
|
|
@@ -179,24 +177,24 @@ public class XxlJobTrigger {
|
179
|
177
|
triggerParam.setBroadcastIndex(0);
|
180
|
178
|
triggerParam.setBroadcastTotal(1);
|
181
|
179
|
|
182
|
|
- // 4.2、trigger-run (route run / trigger remote executor)
|
|
180
|
+ // 3.2、trigger-run (route run / trigger remote executor)
|
183
|
181
|
triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList);
|
184
|
182
|
triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
|
185
|
183
|
|
186
|
|
- // 4.3、trigger (fail retry)
|
|
184
|
+ // 3.3、trigger (fail retry)
|
187
|
185
|
if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && finalFailRetryCount > 0) {
|
188
|
186
|
JobTriggerPoolHelper.trigger(jobId, (finalFailRetryCount-1));
|
189
|
187
|
triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_fail_trigger_retry") +"<<<<<<<<<<< </span><br>");
|
190
|
188
|
}
|
191
|
189
|
}
|
192
|
190
|
|
193
|
|
- // 5、save trigger-info
|
|
191
|
+ // 4、save trigger-info
|
194
|
192
|
jobLog.setExecutorAddress(triggerResult.getContent());
|
195
|
193
|
jobLog.setTriggerCode(triggerResult.getCode());
|
196
|
194
|
jobLog.setTriggerMsg(triggerMsgSb.toString());
|
197
|
195
|
XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);
|
198
|
196
|
|
199
|
|
- // 6、monitor trigger
|
|
197
|
+ // 5、monitor trigger
|
200
|
198
|
JobFailMonitorHelper.monitor(jobLog.getId());
|
201
|
199
|
logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
|
202
|
200
|
}
|