|
@@ -92,69 +92,55 @@ public class JobThread extends Thread{
|
92
|
92
|
@Override
|
93
|
93
|
public void run() {
|
94
|
94
|
|
95
|
|
- while(!toStop){
|
96
|
|
- running = false;
|
97
|
|
- idleTimes++;
|
98
|
|
- // handle job
|
99
|
|
- ReturnT<String> executeResult = null;
|
|
95
|
+ while(!toStop){
|
|
96
|
+ running = false;
|
|
97
|
+ idleTimes++;
|
|
98
|
+
|
100
|
99
|
TriggerParam triggerParam = null;
|
|
100
|
+ ReturnT<String> executeResult = null;
|
101
|
101
|
try {
|
102
|
|
- // to check toStop signal, we need cycle, so wo cannot use queue.take(), instand of poll(timeout)
|
103
|
|
- triggerParam = triggerQueue.poll(3L, TimeUnit.SECONDS);
|
104
|
|
- if (triggerParam!=null) {
|
105
|
|
- running = true;
|
106
|
|
- idleTimes = 0;
|
107
|
|
- triggerLogIdSet.remove(triggerParam.getLogId());
|
108
|
|
-
|
109
|
|
- // parse param
|
110
|
|
- String[] handlerParams = (triggerParam.getExecutorParams()!=null && triggerParam.getExecutorParams().trim().length()>0)
|
111
|
|
- ? (String[])(Arrays.asList(triggerParam.getExecutorParams().split(" ")).toArray()) : null;
|
112
|
|
-
|
113
|
|
-
|
114
|
|
- try {
|
115
|
|
- // log filename: yyyy-MM-dd/9999.log
|
116
|
|
- String logFileName = XxlJobFileAppender.makeLogFileName(new Date(triggerParam.getLogDateTim()), triggerParam.getLogId());
|
117
|
|
-
|
118
|
|
- XxlJobFileAppender.contextHolder.set(logFileName);
|
119
|
|
- ShardingUtil.setShardingVo(new ShardingUtil.ShardingVO(triggerParam.getBroadcastIndex(), triggerParam.getBroadcastTotal()));
|
120
|
|
- XxlJobLogger.log("<br>----------- xxl-job job execute start -----------<br>----------- Params:" + Arrays.toString(handlerParams));
|
121
|
|
-
|
122
|
|
- executeResult = handler.execute(handlerParams);
|
123
|
|
- if (executeResult == null) {
|
124
|
|
- executeResult = ReturnT.FAIL;
|
125
|
|
- }
|
126
|
|
-
|
127
|
|
- XxlJobLogger.log("<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:" + executeResult);
|
128
|
|
- } catch (Exception e) {
|
129
|
|
- if (toStop) {
|
130
|
|
- XxlJobLogger.log("<br>----------- JobThread toStop, stopReason:" + stopReason);
|
131
|
|
- }
|
132
|
|
-
|
133
|
|
- StringWriter stringWriter = new StringWriter();
|
134
|
|
- e.printStackTrace(new PrintWriter(stringWriter));
|
135
|
|
- String errorMsg = stringWriter.toString();
|
136
|
|
- executeResult = new ReturnT<String>(ReturnT.FAIL_CODE, errorMsg);
|
137
|
|
-
|
138
|
|
- XxlJobLogger.log("<br>----------- JobThread Exception:" + errorMsg + "<br>----------- xxl-job job execute end(error) -----------");
|
139
|
|
- }
|
140
|
|
-
|
141
|
|
- } else {
|
142
|
|
- if (idleTimes > 30) {
|
143
|
|
- XxlJobExecutor.removeJobThread(jobId, "excutor idel times over limit.");
|
144
|
|
- }
|
145
|
|
- }
|
146
|
|
- } catch (Throwable e) {
|
147
|
|
- if (toStop) {
|
148
|
|
- XxlJobLogger.log("<br>----------- xxl-job toStop, stopReason:" + stopReason);
|
149
|
|
- }
|
150
|
|
-
|
151
|
|
- StringWriter stringWriter = new StringWriter();
|
152
|
|
- e.printStackTrace(new PrintWriter(stringWriter));
|
153
|
|
- String errorMsg = stringWriter.toString();
|
154
|
|
- executeResult = new ReturnT<String>(ReturnT.FAIL_CODE, errorMsg);
|
155
|
|
-
|
156
|
|
- XxlJobLogger.log("----------- xxl-job JobThread Exception:" + errorMsg);
|
157
|
|
- } finally {
|
|
102
|
+ // to check toStop signal, we need cycle, so wo cannot use queue.take(), instand of poll(timeout)
|
|
103
|
+ triggerParam = triggerQueue.poll(3L, TimeUnit.SECONDS);
|
|
104
|
+ if (triggerParam!=null) {
|
|
105
|
+ running = true;
|
|
106
|
+ idleTimes = 0;
|
|
107
|
+ triggerLogIdSet.remove(triggerParam.getLogId());
|
|
108
|
+
|
|
109
|
+ // parse param
|
|
110
|
+ String[] handlerParams = (triggerParam.getExecutorParams()!=null && triggerParam.getExecutorParams().trim().length()>0)
|
|
111
|
+ ? (String[])(Arrays.asList(triggerParam.getExecutorParams().split(",")).toArray()) : null;
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+ // log filename: yyyy-MM-dd/9999.log
|
|
115
|
+ String logFileName = XxlJobFileAppender.makeLogFileName(new Date(triggerParam.getLogDateTim()), triggerParam.getLogId());
|
|
116
|
+ XxlJobFileAppender.contextHolder.set(logFileName);
|
|
117
|
+ ShardingUtil.setShardingVo(new ShardingUtil.ShardingVO(triggerParam.getBroadcastIndex(), triggerParam.getBroadcastTotal()));
|
|
118
|
+
|
|
119
|
+ // execute
|
|
120
|
+ XxlJobLogger.log("<br>----------- xxl-job job execute start -----------<br>----------- Params:" + Arrays.toString(handlerParams));
|
|
121
|
+ executeResult = handler.execute(handlerParams);
|
|
122
|
+ if (executeResult == null) {
|
|
123
|
+ executeResult = ReturnT.FAIL;
|
|
124
|
+ }
|
|
125
|
+ XxlJobLogger.log("<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:" + executeResult);
|
|
126
|
+
|
|
127
|
+ } else {
|
|
128
|
+ if (idleTimes > 30) {
|
|
129
|
+ XxlJobExecutor.removeJobThread(jobId, "excutor idel times over limit.");
|
|
130
|
+ }
|
|
131
|
+ }
|
|
132
|
+ } catch (Throwable e) {
|
|
133
|
+ if (toStop) {
|
|
134
|
+ XxlJobLogger.log("<br>----------- JobThread toStop, stopReason:" + stopReason);
|
|
135
|
+ }
|
|
136
|
+
|
|
137
|
+ StringWriter stringWriter = new StringWriter();
|
|
138
|
+ e.printStackTrace(new PrintWriter(stringWriter));
|
|
139
|
+ String errorMsg = stringWriter.toString();
|
|
140
|
+ executeResult = new ReturnT<String>(ReturnT.FAIL_CODE, errorMsg);
|
|
141
|
+
|
|
142
|
+ XxlJobLogger.log("<br>----------- xxl-job job execute end(error) -----------<br>----------- ReturnT:" + executeResult);
|
|
143
|
+ } finally {
|
158
|
144
|
if(triggerParam != null) {
|
159
|
145
|
// callback handler info
|
160
|
146
|
if (!toStop) {
|
|
@@ -169,16 +155,16 @@ public class JobThread extends Thread{
|
169
|
155
|
}
|
170
|
156
|
}
|
171
|
157
|
|
172
|
|
- // callback trigger request in queue
|
173
|
|
- while(triggerQueue !=null && triggerQueue.size()>0){
|
174
|
|
- TriggerParam triggerParam = triggerQueue.poll();
|
175
|
|
- if (triggerParam!=null) {
|
176
|
|
- // is killed
|
177
|
|
- ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [任务尚未执行,在调度队列中被终止]");
|
178
|
|
- TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), stopResult));
|
179
|
|
- }
|
180
|
|
- }
|
|
158
|
+ // callback trigger request in queue
|
|
159
|
+ while(triggerQueue !=null && triggerQueue.size()>0){
|
|
160
|
+ TriggerParam triggerParam = triggerQueue.poll();
|
|
161
|
+ if (triggerParam!=null) {
|
|
162
|
+ // is killed
|
|
163
|
+ ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [任务尚未执行,在调度队列中被终止]");
|
|
164
|
+ TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), stopResult));
|
|
165
|
+ }
|
|
166
|
+ }
|
181
|
167
|
|
182
|
|
- logger.info(">>>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}", Thread.currentThread());
|
183
|
|
- }
|
|
168
|
+ logger.info(">>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}", Thread.currentThread());
|
|
169
|
+ }
|
184
|
170
|
}
|