xiatian 4 gadi atpakaļ
vecāks
revīzija
d86e72feb8

+ 28 - 22
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/bean/exporttask/ExportTask.java

@@ -30,32 +30,38 @@ public class ExportTask extends Thread {
 	@Override
 	public void run() {
 		for (;;) {
-			ExportTaskEntity et = exportTaskService.findExportTaskToDispose();
-			if (et == null) {
-				Util.sleep(30);
-				continue;
-			}
-			String cacheLock = "$_CACHE_LOCK:OE_EXPORT_TASK:" + et.getId();
-			Boolean lock = redisClient.setIfAbsent(cacheLock, cacheLock, cacheLockTimeout);
-			if (!lock) {
-				continue;
-			}
 			try {
-				exportTaskService.startExportTask(et.getId());
-				if (ExportTaskType.EXAM_DETAIL.equals(et.getType())) {
-					examRecordDetails(et);
-				} else if (ExportTaskType.SCORE_STATISTIC.equals(et.getType())) {
-					examScores(et);
-				} else if (ExportTaskType.EXAM_SCHEDULING.equals(et.getType())) {
-					examScheduling(et);
-				} else if (ExportTaskType.AUDIT.equals(et.getType())) {
-					examAudit(et);
+				LOG.debug("ExportTask start");
+				ExportTaskEntity et = exportTaskService.findExportTaskToDispose();
+				if (et == null) {
+					LOG.debug("ExportTask sleeping");
+					Util.sleep(30);
+					continue;
+				}
+				String cacheLock = "$_CACHE_LOCK:OE_EXPORT_TASK:" + et.getId();
+				Boolean lock = redisClient.setIfAbsent(cacheLock, cacheLock, cacheLockTimeout);
+				if (!lock) {
+					LOG.debug("ExportTask get lock failed");
+					continue;
+				}
+				try {
+					exportTaskService.startExportTask(et.getId());
+					if (ExportTaskType.EXAM_DETAIL.equals(et.getType())) {
+						examRecordDetails(et);
+					} else if (ExportTaskType.SCORE_STATISTIC.equals(et.getType())) {
+						examScores(et);
+					} else if (ExportTaskType.EXAM_SCHEDULING.equals(et.getType())) {
+						examScheduling(et);
+					} else if (ExportTaskType.AUDIT.equals(et.getType())) {
+						examAudit(et);
+					}
+					exportTaskService.endExportTask(et.getId());
+				} finally {
+					redisClient.delete(cacheLock);
 				}
-				exportTaskService.endExportTask(et.getId());
+				LOG.debug("ExportTask end");
 			} catch (Exception e) {
 				LOG.error("ExportTask error ", e);
-			} finally {
-				redisClient.delete(cacheLock);
 			}
 		}
 	}