|
@@ -1,5 +1,8 @@
|
|
|
package cn.com.qmth.examcloud.task.service;
|
|
|
|
|
|
+import java.io.PrintWriter;
|
|
|
+import java.io.StringWriter;
|
|
|
+import java.io.Writer;
|
|
|
import java.util.Date;
|
|
|
|
|
|
import javax.transaction.Transactional;
|
|
@@ -7,6 +10,7 @@ import javax.transaction.Transactional;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import cn.com.qmth.examcloud.commons.base.exception.StatusException;
|
|
|
import cn.com.qmth.examcloud.task.base.ScheduleJob;
|
|
|
import cn.com.qmth.examcloud.task.base.TaskTracker;
|
|
|
import cn.com.qmth.examcloud.task.dao.TaskTraceRepo;
|
|
@@ -42,10 +46,23 @@ public class DefaultTaskTracker implements TaskTracker {
|
|
|
TaskTraceEntity entity = taskTraceRepo.findByTraceId(traceId);
|
|
|
entity.setJobStatus("异常");
|
|
|
entity.setEndTime(new Date());
|
|
|
- entity.setException(e.getCause().getMessage());
|
|
|
+
|
|
|
+ if (e instanceof StatusException) {
|
|
|
+ entity.setException(((StatusException) e).toJson());
|
|
|
+ } else {
|
|
|
+ entity.setException(getStackTrace(e));
|
|
|
+ }
|
|
|
+
|
|
|
taskTraceRepo.save(entity);
|
|
|
}
|
|
|
|
|
|
+ private String getStackTrace(Throwable throwable) {
|
|
|
+ Writer result = new StringWriter();
|
|
|
+ PrintWriter printWriter = new PrintWriter(result);
|
|
|
+ throwable.printStackTrace(printWriter);
|
|
|
+ return result.toString();
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void onEnd(ScheduleJob scheduleJob, String traceId) {
|