Przeglądaj źródła

Optimize duplicate code

Use public methods to simplify duplicate code
zhangzy 5 lat temu
rodzic
commit
9d944d3f76

+ 1 - 10
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java

@@ -31,7 +31,6 @@ import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProcessInstanceMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.utils.cron.CronUtils;
-import org.quartz.CronExpression;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -513,15 +512,7 @@ public class ExecutorService extends BaseService{
                     List<Date> listDate = new LinkedList<>();
                     if(!CollectionUtils.isEmpty(schedules)){
                         for (Schedule item : schedules) {
-                            CronExpression cronExpression = null;
-                            try {
-                                cronExpression = CronUtils.parse2CronExpression(item.getCrontab());
-                                List<Date> list = CronUtils.getSelfFireDateList(start, end, cronExpression);
-                                listDate.addAll(list);
-                            } catch (ParseException e) {
-                                logger.error(e.getMessage(), e);
-                                continue;
-                            }
+                            listDate.addAll(CronUtils.getSelfFireDateList(start, end, item.getCrontab()));
                         }
                     }
                     if(!CollectionUtils.isEmpty(listDate)){

+ 17 - 0
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/cron/CronUtils.java

@@ -156,6 +156,23 @@ public class CronUtils {
     return dateList;
   }
 
+  /**
+   * gets all scheduled times for a period of time based on self dependency
+   * @param startTime startTime
+   * @param endTime endTime
+   * @param cron cron
+   * @return date list
+   */
+  public static List<Date> getSelfFireDateList(Date startTime, Date endTime, String cron) {
+    CronExpression cronExpression = null;
+    try {
+      cronExpression = CronUtils.parse2CronExpression(cron);
+    }catch (ParseException e){
+      logger.error(e.getMessage(), e);
+      return Collections.EMPTY_LIST;
+    }
+    return getSelfFireDateList(startTime, endTime, cronExpression);
+  }
 
   /**
    * get expiration time

+ 1 - 11
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java

@@ -36,13 +36,11 @@ import org.apache.dolphinscheduler.dao.utils.DagHelper;
 import org.apache.dolphinscheduler.dao.utils.cron.CronUtils;
 import org.apache.dolphinscheduler.server.master.config.MasterConfig;
 import org.apache.dolphinscheduler.server.utils.AlertManager;
-import org.quartz.CronExpression;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
-import java.text.ParseException;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
@@ -215,15 +213,7 @@ public class MasterExecThread implements Runnable {
         List<Date> listDate = Lists.newLinkedList();
         if(!CollectionUtils.isEmpty(schedules)){
             for (Schedule schedule : schedules) {
-                CronExpression cronExpression = null;
-                try {
-                    cronExpression = CronUtils.parse2CronExpression(schedule.getCrontab());
-                    List<Date> list = CronUtils.getSelfFireDateList(startDate, endDate, cronExpression);
-                    listDate.addAll(list);
-                } catch (ParseException e) {
-                    logger.error(e.getMessage(), e);
-                    continue;
-                }
+                listDate.addAll(CronUtils.getSelfFireDateList(startDate, endDate, schedule.getCrontab()));
             }
         }
         // get first fire date